개발관련/other

클래스 이름 지정 - 모든 것을 "<WhatEver>Manager"라고 부르지 않는 방법

Rateye 2021. 9. 16. 11:49
728x90
반응형
질문 : 이름 지정 클래스-모든 것을“ 매니저"?

오래 전에 나는 객체 이름 지정에 대해 "올바른"궤도에 올랐던 기사 (블로그 항목을 믿습니다)를 읽었습니다. 프로그램에서 이름을 지정하는 데 매우 신중해야합니다.

예를 들어 내 응용 프로그램이 사용자, 회사 및 주소를 처리하는 경우 (일반적인 비즈니스 앱) User , CompanyAddress 도메인 클래스가 있고 아마도 UserManager , CompanyManagerAddressManager 가 팝업되어 그것들.

UserManager , CompanyManagerAddressManager 가 무엇을하는지 알 수 있습니까? 아니요, 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 프레임 워크에있는 이름을 복사하려고 시도 하고 JavaAndroid 프레임 워크에서 아이디어를 찾습니다.

Helper , ManagerUtil 은 상태를 포함하지 않고 일반적으로 절차 적이며 정적 인 클래스를 조정하기 위해 첨부하는 피할 수없는 명사 인 것 같습니다. 대안은 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
728x90
반응형