개발자라면 누구나 개발중 고민되는 것으로 이름짓기지 않나 싶다 특히 클래스이름짓기 변수같은 경우도 마찬가지긴 하지만 클래스이름에 상당히 고민을 많이 한다.

특히 자주쓰는 데이터베이스나 데이터를 관리하는 클래스 이름에 대해선 먼가 더 깔끔하고 좋은 이름이 없는지 항상 고민하게 되는데 이런건 구글도 도와줄수 없는것이기 때문에 더욱더 힘들다.

나의 경우 첫직장에서 일하던 클래스를 보면 클래스들의 이름을 Utils, Helper, Manager, Wrapper 로 많이 작성했다. 지금도 er 를 붙여서 클래스를 작명하는 건 많이 쓰긴 하지만 그때그때 조금더 명확한 명칭을 붙이고 싶어서 더 고민하게 된다.

특히 Manager라는 것을 꽤 많이 사용하게 되는데 항상 고민끝에 저 이름을 붙이게 된다. 뭔가를 특정 부분의 데이터들을 처리하는 클래스를 관리한다는 뜻으로 사용하는게 의미상 맞는지 항상 고민을 하게되는데 최근에 검색을 하면서 꽤 오래된 포스트를 찾았는데 Naming Java classes without a ‘Manager’를 읽으면서 작명을 할때 의미에 대해서 다시생각하게 되었다.

검색을 해보면 영어권의 사람들도 작명에 대해 상당히 고민을 많이 한다는 것을 볼수있다.

작명에 대한 질문에 대한 답변들을 보면 각자의 스타일이 있어서 주로쓰는 단어가 서로 다르고 디자인패턴에서도 이름을 인용해 쓴다.

그리고 찾을 수 있는 조금의 팁은

  • 전혀 새로운 단어의 사용은 자제한다.
  • 프레임워크에서 어떤 단어들을 사용하는지 찾아본다.
  • 디자인 패턴에서 해당 패턴의 이름을 인용한다.
  • 작명은 굉장히 중요하긴 하지만 너무많은 시간을 작명에 쓰지는 말것.

그중에 Words used in Source Code 라는 사이트에서 닷넷프레임외에 몇가지 프레임워크에서 사용하는 명칭들을 사용수에 따라 시각화해서 보여주고있다.

결론은 결국 작명에 대한 답은 없지만 계속해서 다른 프레임워크들은 어떻게 작명하는지 계속해서 보고 클래스의 역할에 대해 꾸준히 생각해야 하는 문제인것 같다.

아래는 작명에 대한 글들과 StackOverflow 질문들이다.

  1. Naming Classes - How to avoid calling everything a <WhatEver>Manager?
  2. What names do you find yourself prepending/appending to classes regularly?
  3. Dont Name Classes Object Manager Handler Or Data
  4. Naming Java classes without a ‘Manager’