오래 전에 필자는 객체 이름 지정에 대한 "올바른"트랙을 다루는 기사 (블로그 항목을 믿습니다)를 읽었습니다.
예를 들어 내 응용 프로그램이 (일반적인 비즈니스 응용 프로그램) 사용자, 회사 및 주소를 처리하는 경우 User
, a Company
및 Address
도메인 클래스가 있고 아마도 어딘가에 a UserManager
, a CompanyManager
및 a AddressManager
가 표시됩니다.
그래서 당신은 어떤 사람들을 말할 수있는 UserManager
, CompanyManager
그리고 AddressManager
합니까? 아니요. Manager는 도메인 개체로 수행 할 수있는 모든 작업에 적합한 매우 일반적인 용어이기 때문입니다.
내가 읽은 기사는 매우 구체적인 이름을 사용하는 것이 좋습니다. C ++ 응용 프로그램이고 UserManager
의 작업이 힙에서 사용자를 할당하고 해제하는 경우 사용자를 관리하지 않고 출생과 사망을 보호합니다. 흠, 아마도 우리는 이것을이라고 부를 수 UserShepherd
있습니다.
또는 UserManager
의 임무는 각 User 객체의 데이터를 검사하고 암호화하여 데이터에 서명하는 것입니다. 그리고 우리는이있을 것이다 UserRecordsClerk
.
이제이 아이디어가 나와 붙어서 적용하려고합니다. 그리고이 간단한 아이디어를 놀라 울 정도로 어렵게 찾으십시오.
클래스가하는 일을 설명 할 수 있고 (빠르고 더러운 코딩에 빠지지 않는 한) 내가 작성한 클래스는 정확히 한 가지 작업을 수행합니다 . 그 설명에서 이름으로 가기 위해 놓친 것은 일종의 이름 카탈로그, 개념을 이름에 매핑하는 어휘입니다.
궁극적으로 패턴 카탈로그와 같은 것을 마음에두고 싶습니다 (종종 디자인 패턴은 팩토리 와 같은 객체 이름을 쉽게 제공합니다 )
- 팩토리-다른 오브젝트를 작성합니다 (디자인 패턴에서 가져온 이름 지정).
- 목자-목자는 객체의 수명, 생성 및 종료를 처리합니다.
- 동기화 기-둘 이상의 객체 (또는 객체 계층)간에 데이터를 복사합니다.
Nanny-생성 후 개체가 "사용 가능한"상태에 도달하도록 지원합니다 (예 : 다른 개체에 배선하여)
등
그렇다면 그 문제를 어떻게 처리합니까? 당신은 고정 어휘를 가지고 있습니까, 당신은 즉시 새로운 이름을 발명합니까 또는 중요하지 않은 또는 잘못된 이름을 고려합니까?
추신 : 또한이 문제를 다루는 기사와 블로그 링크에 관심이 있습니다. 시작으로 여기에 내가 생각한 원래 기사가 있습니다. 'Manager'없이 Java 클래스 이름 지정
업데이트 : 답변 요약
그동안 내가이 질문에서 배운 내용에 대한 약간의 요약이 있습니다.
- 새로운 은유를 만들지 마십시오 (내니)
- 다른 프레임 워크의 기능을 살펴보십시오
이 주제에 대한 추가 기사 / 책 :
- 정기적으로 수업에 앞서거나 추가하는 이름은 무엇입니까?
- 클래스 이름을 지정하는 가장 좋은 방법은 무엇입니까?
- 책 : 디자인 패턴 : 재사용 가능한 객체 지향 소프트웨어의 요소 (양장본)
- 책 : 엔터프라이즈 애플리케이션 아키텍처의 패턴 (양장본)
- 책 : 구현 패턴 (페이퍼 백)
그리고 답변에서 수집 한 이름 접두사 / 접미사 (주제!)의 현재 목록 :
- 조정자
- 건축업자
- 작가
- 리더
- 매니저
- 컨테이너
- 실험 계획안
- 표적
- 변환기
- 제어 장치
- 전망
- 공장
- 실재
- 버킷
그리고 길을위한 좋은 팁 :
명명 마비를 얻지 마십시오. 예, 이름은 매우 중요하지만 많은 시간을 낭비 할만큼 중요하지는 않습니다. 10 분 안에 좋은 이름을 찾지 못하면 계속 진행하십시오.