Kent Beck의 Implementation Patterns 에서 몇 가지 구절을 인용하겠습니다 .
단순 수퍼 클래스 이름
"[...] 이름은 짧고 펀치감이 있어야합니다. 그러나 이름을 정확하게 만들기 위해 여러 단어가 필요할 때가 있습니다.이 딜레마에서 벗어나는 방법은 계산에 대한 강력한 은유를 선택하는 것입니다. 은유를 염두에두고 하나의 단어는 그들에게 풍부한 연관성, 연결성 및 의미를 가져옵니다. 예를 들어, HotDraw 드로잉 프레임 워크에서 드로잉의 개체에 대한 제 이름은 DrawingObject 였습니다
. Ward Cunningham은 타이포그래피 은유와 함께 왔습니다. 드로잉은 다음과 같습니다. 인쇄 된 레이아웃 페이지입니다. 페이지의 그래픽 항목은 도형이므로 클래스는 Figure 가되었습니다 . 은유의 맥락에서 Figure
는 동시에 DrawingObject 보다 짧고 풍부하며 정확 합니다. "
정규화 된 하위 클래스 이름
"하위 클래스의 이름에는 두 가지 작업이 있습니다. 그들은 그들이 어떤 클래스와 어떻게 다른지 전달해야합니다. [...] 계층의 루트에있는 이름과 달리, 하위 클래스 이름은 대화에서 거의 자주 사용되지 않습니다. 그래서 그들은 간결한 대가로 표현할 수 있습니다. [...]
계층의 루트 역할을하는 하위 클래스에 고유 한 간단한 이름을 지정합니다. 예를 들어, HotDraw 에는 Figure가 선택 될 때 Figure 편집 작업을 제공 하는 Handle 클래스 가 있습니다. Figure
를 확장 함에도 불구하고 간단히 Handle 이라고 합니다. 전체 핸들 패밀리가 있으며 가장 적절한 이름은
StretchyHandle 및 TransparencyHandle 입니다. Handle 은 자체 계층 구조의 루트 이기 때문에 정규화 된 하위 클래스 이름보다 단순한 슈퍼 클래스 이름이 필요합니다.
하위 클래스 이름 지정의 또 다른 주름은 다중 수준 계층 구조입니다. [...] 즉시 수퍼 클래스에 수정자를 맹목적으로 추가하는 대신 독자의 관점에서 이름을 생각해보십시오. 이 수업이 어떤 수업인지 알기 위해 필요한 수업은 무엇입니까? 해당 수퍼 클래스를 서브 클래스 이름의 기초로 사용하십시오. "
상호 작용
인터페이스에 대해 어떻게 생각하는지에 따라 두 가지 스타일의 명명 인터페이스가 달라집니다. 구현이없는 클래스 인 인터페이스는 마치 클래스 인 것처럼 이름을 지정해야합니다 ( Simple Superclass Name , Qualified Subclass Name ). 이 스타일의 이름 지정에 대한 한 가지 문제점은 이름 지정 클래스에 도달하기 전에 좋은 이름이 사용된다는 것입니다. File 이라는 인터페이스에는 ActualFile , ConcreteFile 또는 (yuck!) FileImpl 과 같은 구현 클래스가 필요합니다
.(접미사와 약어 모두). 일반적으로, 추상 객체가 인터페이스로 구현 되든 수퍼 클래스로 구현 되든 관계없이 구체적 또는 추상 객체를 다루는 지 여부를 전달하는 것은 중요하지 않습니다. 인터페이스와 슈퍼 클래스 사이의 구분을 연기하는 것은 이러한 스타일의 이름 지정에 의해 잘 지원되므로 나중에 필요할 경우 마음을 바꿀 수 있습니다.
때로는 구체적인 클래스의 이름을 지정하는 것이 인터페이스 사용을 숨기는 것보다 커뮤니케이션에 더 중요합니다. 이 경우 인터페이스 이름 앞에 "I"를 붙입니다. 인터페이스가 IFile 이면 클래스는 간단히 File 이라고 할 수 있습니다 .
더 자세한 논의를 원하시면 책을 구입하세요! 그것은 가치! :)