이것은 개방형 질문이지만, Traits의 SO 커뮤니티에서 의견을 요청하고 싶습니다. 당신은 Squeak/Pharo의 형질이 좋은 것인가, 아니면 당신이 그들과 떨어져 있고 구성과 위임을 사용해야만한다고 생각합니까? 필자는 Pharo 서적 덕분에 그것을 어떻게 사용 하는지를 알기는하지만, 그것을 사용하는 것이 얼마나 수용 가능한지, 어디에서 사용하는 것이 좋으며 어디에 사용하지 않는지를 잘 모르기 때문에 묻습니다.특성이 좋거나 나쁨입니까?
9
A
답변
6
코드에 강한 종속성을 도입하기 때문에 형질이 맘에 들지 않습니다. 이러한 의존성은 명백 할 수 있습니다 (특성을 가져 오는 클래스, 메소드를 예상하는 특성). 그러나 매우 미묘합니다 (수퍼 메소드/인스턴스 변수를 가리는 특성). 또한 특성에 대한 적절한 도구 지원이 없습니다.
내 경험에 의하면 위임은 스몰 토크와 같이 동적 유형의 객체 지향 언어에서 훨씬 더 재사용 가능한 디자인을 제공합니다.
1
장단점이 있습니다. 루카스는 단점을 많이 언급합니다.
- 코드에 강한 의존성을 도입하십시오.
- 적절한 도구 지원이 없습니다.
두 번째는 언젠가는 사라질 수 있지만 첫 번째는 사라질 것입니다.
특성의 목적은 Object 이외의 다른 수퍼 클래스를 공유하지 않는 두 클래스가 인스턴스 메서드를 공유 할 때 발생하는 코드 중복을 방지하기위한 것입니다. 이제는 때로는 위임을 통해 해결할 수는 있지만 때로는 위임 할 수 없습니다. 따라서 특성의 프로는 다음과 같습니다.
- 감소 된 코드 중복.
내 단점은 단점이 큽니다. 나는 오늘날과 영원히 코드 중복이 발생할 것으로 생각합니다. 그리고 위임을하지 않을 경우 코드 복제가 복사 된 코드 조각의 다양한 진화에 앞서 있기 때문에 코드 중복이 그다지 해롭지 않다는 것을 상상할 수도 있습니다.
관련 문제
- 1. 큰 데이터베이스의 경우 인덱스가 좋거나 나쁨입니까?
- 2. Naked Objects. 좋거나 나쁨
- 3. JQuery 제목 특성이 함수
- 4. 메서드의 특성이 작동하지 않습니다.
- 5. 개체에 특성이 추가되지 않음
- 6. Filestream 특성이 지원되는 형식
- 7. WCF에 DataContract 특성이 필요합니다.
- 8. 인증 특성이 작동하지 않습니다.
- 9. WCF 클라이언트에서 자체 호스팅? 좋거나 나쁨
- 10. C++ cli 어셈블리 특성이 없습니다.
- 11. NSManagedObject 특성이 선택 가능한지 확인하십시오.
- 12. DataContractSerializer KnownType 특성이 존중되지 않습니까?
- 13. 클래스 수준에 조건부 특성이 있습니까?
- 14. DataContract 특성이 응답에서 전송되지 않음
- 15. XHTML에서 사용자 지정 특성이 유효합니까?
- 16. 필드 속성에 DataMember 특성이 없습니다.
- 17. DebuggerDisplay 특성이 예상대로 작동하지 않습니다!
- 18. CComboBox :: Dir 함수는 Archive 특성이 설정되어 있지 않고 Index 특성이 설정된 경우 디렉터리를 나열하지 않습니다.
- 19. WebGet 특성이 지정되어 있어도 WebGet 특성이 지정되어 있어도 게시를 사용하는 WCF 프록시 - 원인 405 오류
- 20. 어떤 Java DOM 래퍼가 가장 좋거나 가장 인기가 있습니까?
- 21. 쉘 스크립트 내에서 쉘 스크립트를 실행 중 - 좋거나 나쁘다.
- 22. 동일한 이름 속성을 가진 입력 필드가있는 여러 양식? 좋거나 나쁘거나?
- 23. IE9 플랫폼 미리보기에서 페이지 테스트를 시작하는 것이 좋거나 나쁘지 않습니까?
- 24. MongoDB와 Linq 사용에 관하여. Norm과 더 좋거나 나쁘다.
- 25. CustomValidation 특성이 작동하지 않는 것 같습니다.
- 26. Graphviz 크기/페이지 크기 특성이 무시되었습니다.
- 27. 기본 클래스의 XmlText 특성이 serialization을 깨뜨림
- 28. 첨부 된 특성이 이상한 WPF 오류
- 29. 중첩 된 특성이 관련 모델을 덮어 씁니다.
- 30. SharePoint 사이트에 사용자 지정 특성이 연결되어 있습니까?