질문 : 이름 지정 클래스-모든 것을“ 매니저"?
오래 전에 나는 객체 이름 지정에 대해 "올바른"궤도에 올랐던 기사 (블로그 항목을 믿습니다)를 읽었습니다. 프로그램에서 이름을 지정하는 데 매우 신중해야합니다.
예를 들어 내 응용 프로그램이 사용자, 회사 및 주소를 처리하는 경우 (일반적인 비즈니스 앱) User
, Company
및 Address
도메인 클래스가 있고 아마도 UserManager
, CompanyManager
및 AddressManager
가 팝업되어 그것들.
UserManager
, CompanyManager
및 AddressManager
가 무엇을하는지 알 수 있습니까? 아니요, Manager는 도메인 개체로 수행 할 수있는 모든 작업에 적합한 매우 일반적인 용어이기 때문입니다.
내가 읽은 기사는 매우 구체적인 이름을 사용하는 것이 좋습니다. C ++ 애플리케이션이고 UserManager
의 작업이 힙에서 사용자를 할당하고 해제하는 경우 사용자를 관리하지 않고 출생과 죽음을 보호합니다. UserShepherd
라고 부를 수있을 것입니다.
또는 UserManager
의 작업은 각 사용자 개체의 데이터를 검사하고 암호화 방식으로 데이터에 서명하는 것입니다. 그런 다음 UserRecordsClerk
있습니다.
이 아이디어가 저에게 붙어 있으므로 적용하려고합니다. 그리고이 간단한 아이디어는 놀랍도록 어렵습니다.
나는 클래스가하는 일을 설명 할 수 있고 (빠르고 더러운 코딩에 빠지지 않는 한) 내가 작성한 클래스는 정확히 한 가지 일을한다. 그 설명에서 이름에 이르기까지 제가 놓친 것은 일종의 이름 카탈로그, 개념을 이름에 매핑하는 어휘입니다.
궁극적으로 나는 내 마음 속에 패턴 카탈로그와 같은 것을 갖고 싶다. (자주 디자인 패턴은 쉽게 객체 이름을 제공한다. 예를 들면 공장 )
- Factory-다른 개체를 만듭니다 (디자인 패턴에서 가져온 이름 지정).
- Shepherd - Shepherd는 개체의 수명, 생성 및 종료를 처리합니다.
- Synchronizer-둘 이상의 개체 (또는 개체 계층)간에 데이터를 복사합니다.
- Nanny-개체를 만든 후 "사용 가능"상태에 도달하도록 도와줍니다 (예 : 다른 개체에 연결).
- 기타 등등.
그렇다면 그 문제를 어떻게 처리합니까? 고정 된 어휘를 가지고 있습니까, 즉석에서 새로운 이름을 발명합니까, 아니면 이름을 그렇게 중요하지 않거나 잘못 지정하는 것을 고려합니까?
추신 : 또한이 문제를 논의하는 기사 및 블로그 링크에도 관심이 있습니다. 시작으로, 여기에 대해 생각하게 만든 원본 기사가 있습니다. '관리자'없이 Java 클래스 이름 지정
업데이트: 답변 요약
그동안 제가이 질문에서 배운 내용에 대한 간략한 요약입니다.
- 새로운 은유를 만들지 마십시오 (Nanny)
- 다른 프레임 워크가 수행하는 작업 살펴보기
이 주제에 대한 추가 기사 / 책 :
- 정기적으로 수업에 붙거나 붙는 이름은 무엇입니까?
- 클래스 이름을 지정하는 가장 좋은 방법은 무엇입니까?
- 도서 : 디자인 패턴 : 재사용 가능한 객체 지향 소프트웨어 요소 (하드 커버)
- 도서 : 엔터프라이즈 애플리케이션 아키텍처 패턴 (양장본)
- 도서 : 구현 패턴 (페이퍼 백)
그리고 답변에서 (주관적으로!) 수집 한 이름 접두사 / 접미사의 현재 목록 :
- Coordinator
- Builder
- Writer
- Reader
- Handler
- Container
- Protocol
- Target
- Converter
- Controller
- View
- Factory
- Entity
- Bucket
그리고 길을위한 좋은 팁 :
명명 마비를 얻지 마십시오. 예, 이름은 매우 중요하지만 엄청난 시간을 낭비 할만큼 중요하지 않습니다. 10 분 안에 좋은 이름을 생각할 수 없다면 계속 진행하세요.
답변
비슷한 질문 을했지만 가능한 경우 이미 .NET 프레임 워크에있는 이름을 복사하려고 시도 하고 Java 및 Android 프레임 워크에서 아이디어를 찾습니다.
Helper
, Manager
및 Util
은 상태를 포함하지 않고 일반적으로 절차 적이며 정적 인 클래스를 조정하기 위해 첨부하는 피할 수없는 명사 인 것 같습니다. 대안은 Coordinator
입니다.
이름이있는 특히 보라색 prosey를 얻고 Minder
, Overseer
, Supervisor
, Administrator
, Master
같은 것을 선택할 수 있지만, 제가 말했듯이 익숙한 프레임 워크 이름처럼 유지하는 것이 좋습니다.
.NET 프레임 워크에서도 찾을 수있는 다른 일반적인 접미사 (올바른 용어 인 경우)는 다음과 같습니다.
Builder
Writer
Reader
Handler
Container
출처 : https://stackoverflow.com/questions/1866794/naming-classes-how-to-avoid-calling-everything-a-whatevermanager
'개발관련 > other' 카테고리의 다른 글
덜 알려졌지만 유용한 데이터 구조에 대해서 (0) | 2021.09.17 |
---|---|
이미 존재하는 Docker 컨테이너에서 명령을 실행 시키는 방법 (0) | 2021.09.16 |
JSON이란 무엇이며 사용해야 하는 이유 (0) | 2021.09.15 |
C#에서 "yield break;"의 역할 (0) | 2021.09.14 |
React에서 "..." 의 역할 (0) | 2021.09.14 |