[클린 코드] 의미 있는 이름

이승훈·2023년 1월 8일
2

CleanCode

목록 보기
1/4
post-thumbnail

⚙️ 의도를 분명히 밝혀라

변수나 함수 그리고 클래스 이름은 아래와 같은 질문에 모두 답해야 한다.

  1. 변수의 존재 이유는?
  2. 수행 기능은?
  3. 사용 방법은?

따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다.

⚙️ 그릇된 정보를 피하라

프로그래머는 코드에 그릇된 단서를 남겨서는 안된다. 그릇된 단서는 코드 의미를 흐린다.
나름대로 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용해도 안 된다.

예를들어 여러 계정을 그룹으로 묶을 때 실제 List가 아니라면 accountList라 명명하지 않는다.
프로그래머에게 List라는 단어는 특수한 의미가 있기 때문이다.
따라서 계정을 담는 컨테이너가 실제 List가 아니라면 accountGroup, bunchOfAccounts, accounts라 명명하는게 좋다.

⚙️ 의미 있게 구분하라

연속된 숫자를 덧붙이거나 불용어(noise word)를 추가하는 방식은 적절하지 못하다.
이름이 달라야 한다면 의미도 달라져야 한다.

불용어를 추가한 이름은 아무런 정보도 제공하지 못한다.
Product라는 클래스가 있고 다른 클래스를 ProductInfo, ProductData라 부른담젼 개념을 구분하지 않은 채 이름만 달리한 경우다.

Info나 Data는 a, an, the와 마찬가지로 의미가 불분명한 불용어다.

기타 불용어들
variable, table, 자료형의 이름들(Object, String..)

⚙️ 발음하기 쉬운 이름을 사용하라

⚙️ 검색하기 쉬운 이름을 사용하라

MAX_CLASSES_PER_STUDENT는 검색하기 쉽지만, 숫자 7은 까다롭다.
7이 들어가는 파일 이름이나 수식이 모두 검색되기 때문이다.

간단한 메서드에서 로컬 변수만 한 문자를 사용해야한다.
이름 길이는 범위 크기에 비례해야 한다.
(변수나 상수를 코드 여러 곳에서 사용한다면 검색하기 쉬운 이름이 바람직하다.)

⚙️ 클래스 이름

클래스 이름과 객체 이름은 명사나 명사구가 적합하다.
Customer, Account, AddressParser등이 좋은 예다.
Manager, Processor, Data, Info등과 같은 단어는 피하고, 동사는 사용하지 않는다.

⚙️ 메서드 이름

메소드 이름은 동사나 동사구가 적합하다.
postPayment, deletePage, save등이 좋은 예다.
접근자, 변경자, 조건자는 앞에 get, set, is 를 붙인다.

⚙️ 한 개념에 한 단어를 사용하라

추상적인 개념 하나에 단어 하나를 선택해 이를 고수 한다.
예를 들어, 똑같은 메서드를 클래스마다 fetch, get, retrieve으로 제각각 부르면 혼란스럽다.

⚙️ 의미 있는 맥락을 추가하라

firstName, lastName, street, houseNumber, city, state, zipcode 라는 변수가 있다.
변수를 흝어보면 주소라는 사실을 금방 알아챈다.
하지만 어느 메서드가 state라는 변수 하나만 사용한다면? 변수 state가 주소의 일부라는 사실을 금방 알아채기는 어렵다.
addr라는 접두어를 추가해 addrFirstName, addrLastName, addrState 라 쓰면 맥락이 좀 더 분명해진다.
번수가 좀 더 큰 구조에 속한다는 사실이 적어도 독자에게는 분명해진다.
물론 Address라는 클래스를 생성하면 더 좋다.

⚙️ 불필요한 맥락을 없애라

고급 휘발유 충전소(Gas Station Deluxe) 라는 어플리케이션을 짠다고 가정하자.
모든 클래스 이름을 GSD로 시작하겠다는 생각은 전혀 바람직하지 못하다.
일단 IDE에서 G를 입력하고 자동완성 기능을 보면 IDE는 모든 클래스를 열거한다.
이것은 현명하지 못하다.

비슷한 예로 GSD 회계 모듈에 MailingAddress 클래스를 추가하면서 GSDAccountAddress로 이름을 바꿨다.
나중에 다른 고객 관리 프로그램에서 고객 주소가 필요하다. GSDAccountAddress 클래스를 사용할까?
이름을 적절한가? 이름 17자 중 10자는 중복이거나 부적절하다.

일반적으로 짧은 이름이 긴 이름보다 좋다. 단, 의미가 분명한 경우에 한해서다.
이름이 불필요한 맥락을 추가하지 않도록 주의해야한다.

profile
Beyond the wall

0개의 댓글