2010-07-12 3 views
9

이것은 개방형 질문이지만, Traits의 SO 커뮤니티에서 의견을 요청하고 싶습니다. 당신은 Squeak/Pharo의 형질이 좋은 것인가, 아니면 당신이 그들과 떨어져 있고 구성과 위임을 사용해야만한다고 생각합니까? 필자는 Pharo 서적 덕분에 그것을 어떻게 사용 하는지를 알기는하지만, 그것을 사용하는 것이 얼마나 수용 가능한지, 어디에서 사용하는 것이 좋으며 어디에 사용하지 않는지를 잘 모르기 때문에 묻습니다.특성이 좋거나 나쁨입니까?

답변

6

코드에 강한 종속성을 도입하기 때문에 형질이 맘에 들지 않습니다. 이러한 의존성은 명백 할 수 있습니다 (특성을 가져 오는 클래스, 메소드를 예상하는 특성). 그러나 매우 미묘합니다 (수퍼 메소드/인스턴스 변수를 가리는 특성). 또한 특성에 대한 적절한 도구 지원이 없습니다.

내 경험에 의하면 위임은 스몰 토크와 같이 동적 유형의 객체 지향 언어에서 훨씬 더 재사용 가능한 디자인을 제공합니다.

1

장단점이 있습니다. 루카스는 단점을 많이 언급합니다.

  • 코드에 강한 의존성을 도입하십시오.
  • 적절한 도구 지원이 없습니다.

두 번째는 언젠가는 사라질 수 있지만 첫 번째는 사라질 것입니다.

특성의 목적은 Object 이외의 다른 수퍼 클래스를 공유하지 않는 두 클래스가 인스턴스 메서드를 공유 할 때 발생하는 코드 중복을 방지하기위한 것입니다. 이제는 때로는 위임을 통해 해결할 수는 있지만 때로는 위임 할 수 없습니다. 따라서 특성의 프로는 다음과 같습니다.

  • 감소 된 코드 중복.

내 단점은 단점이 큽니다. 나는 오늘날과 영원히 코드 중복이 발생할 것으로 생각합니다. 그리고 위임을하지 않을 경우 코드 복제가 복사 된 코드 조각의 다양한 진화에 앞서 있기 때문에 코드 중복이 그다지 해롭지 않다는 것을 상상할 수도 있습니다.

I think, the best thing to do, as of today, is to keep automated track of code duplication, and always monitor when one end changes while the other doesn't. I'm currently writing a tool that'll keep track of such links, even across repositories. I'll report on it in my blog when it's ready.

관련 문제