SmalltalkBestPracticePatterns:6.2

From 흡혈양파의 번역工房
Jump to: navigation, search
6.2 간단한 슈퍼클래스명

간단한 슈퍼클래스명

  • 상속 계층구조의 루트(root)로 예상되는 클래스를 어떻게 명명하는가?

모든 명명 결정에는 공통적으로 몇 가지 제약이 있다. 가능한 한 짧게 명명해야 입력, 포맷, 부르기가 쉽다. 동시에 코드를 읽는 사람들이 많은 정보를 머릿속에 보관한 채 다니지 않아도 되도록 이름마다 가능한 한 많은 정보를 전달해야 한다. 은유나 비유를 통해 독자들이 이미 가진 정보를 활용하기 위해서는 친숙한 이름을 원할 것이다. 하지만 당신이 정한 이름을 독자가 무심코 선택하는 일이 없도록 유일한 이름을 정하고 싶을 것이다.


필자가 따르는 첫 번째 규칙은 축약어를 사용하지 말자는 것이다. 축약어는 읽기보다는 (20년 작업에서 1000-10000회) 타이핑을 (20년 작업에서 10-100회) 최적화한다.[1]축약어는 2단계 과정ㅡ문자가 무엇을 의미하는지, 그리고 그 단어들이 무엇을 의미하는지ㅡ으로 이름을 해석한다. 본문에 실린 클래스 및 메서드의 명명 패턴들은 절대로 축약해서는 안 될 이름들을 소개한다.


거대한 계층구조에서 루트 클래스의 명명은 매우 중요한 일이다. 향후 20년간 사람들의 대화에선 당신이 선택하는 단어를 사용하게 될 터이니 당연히 올바른 이름을 정하길 원할 것이다.


불행히도 많은 사람들은 슈퍼클래스를 명명할 때 형식적으로 정한다. 있는 그대로 붙이기는 충분치 않나보다. 복잡하게, 컴퓨터 과학적이면서 인상 깊은, 그렇지만 결국엔 의미가 없는 Object, Thing, Component, Part, Manager, Entity, Item과 같은 단어들을 꼭 덧붙인다.


명명은 프로그램을 쓰는 것이 아니라 어휘를 만드는 것이다. 이 순간만큼은 시인이 되어보라. 간단하고 효과적이면서 쉽게 기억할 수 있는 이름이야말로 모든 정보를 포함하지만 너무 길어서 누구도 부르고 싶지 않은 이름보다 장기적으로 볼 때 훨씬 효과적이다.


  • 설계 시 목적을 전달하는 하나의 단어로 슈퍼클래스를 명명하라.


여기 이미지에서 몇 가지 예를 소개하겠다:

Number
Collection
Magnitude
Model


이 클래스 상에 여러 개의 변형(variation)을 생성해도 좋은데 각 변형에는 Qualified Subclass Name(p.169)를 사용하라.


Notes

  1. 이 부분 원본의 의미가 모호합니다. Times의 의미와 Over 위치를 확인 부탁드립니다. 읽기의 횟수가 더 많은데 타이핑을 더 잘 최적화한다고 되어 있습니다. 일반적으로 times는 ~배(배수) 또는 ~회(횟수)를 의미합니다만 a 10-100 times 또는 a 1000-10000 times라는 용어가 프로그래밍 용어인지 확인부탁드립니다.