클린코드

02. 의미 있는 이름

jenny330 2022. 1. 23. 20:39

의도를 분명히 밝혀라

코드가 하는 일을 짐작할 수 있어야 한다. 

1. 코드의 단순성이 아니라 코드의 함축성

2. 각 개념에 이름을 붙이기!!

 

예: if(x[0]==4) 대신 if(cell[STATUS_VALUE]==FLAGGED)

 

그릇된 정보를 피하라

1. 예를 들어, 실제 List가 아니라면 accountList라는 이름을 붙여서는 안됨. List는 특수한 용어이기 때문!! 이는 그릇된 정보를 제공하는 것..

2. 서로 흡사한 이름을 사용하지 않도록 주의. 

3. 유사한 개념은 유사한 표기법 사용! 일관성이 떨어지는 표기법도 그릇된 정보이다. 

4. L과 1, O와 0가 헷갈리는 참사.. 주의하기

 

의미 있게 구분하라

같은 개념을 사용하지 못해 나머지 하나의 철자를 살짝 바꾸게 되면.. 철자 오류를 고치는 순간 컴파일이 불가능하게 됨

연속적인 숫자를 덧붙인 이름(a1, a2...)도 마찬가지. 아무런 정보를 주지 않음..

함수 인수 이름으로 source와 destination을 적극 활용하기!

읽는 사람이 차이를 알도록 이름을 짓기!(accountData와 account는 구별이 불가능함)

 

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

genymdhms?? 원래 있는 단어가 아니면 발음하기도 힘들고 제각각

 

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

이름 길이는 범위 크기에 비례해야 한다!! 코드가 길어지더라도 검색하기 쉬운 방법이 더 나을 때도 있음. 

그냥 숫자 5를 사용하는 것보다 WORK_DAYS_PER_WEEK이 검색하기 훨씬 쉬움

 

인코딩을 피하라

코드에 이어 인코딩 언어까지 익혀야 한다면 부담감이 두배

헝가리식 표기법: 변수 이름에 더 이상 타입을 인코딩할 필요가 없어짐.

멤버 변수 접두어: m_ 접두어를 붙일 필요도 없음. 접두어는 구닥다리 코드의 징표.

인터페이스 클래스와 구현 클래스: 인터페이스보다는 구현 클래스를 인코딩

 

자신의 기억력을 자랑하지 마라

독자가 코드를 읽으면서 변수 이름을 자신이 아는 이름으로 변환해야 한다면 바람직하지 못한 것!

아주 작은 루프에서 쓰는 변수까지는 한 글자 변수인 i, j, k 등을 쓰는 것이 괜찮지만 그 외에는 대부분 적절하지 않다. 

자신의 정신적 능력을 과시하지 말라. 명료함이 최고

 

클래스 이름

클래스와 객체의 이름으로는 명사나 명사구가 적절. 동사는 사용하지 않는다. 

 

메서드 이름 

메서드의 이름은 동사나 동사구가 적합하다. 접근자, 변경자, 조건자는 표준에 따라 값 앞에 get, set, is를 붙인다. 

생성자를 중복정의할 때는 정적 팩토리 메서드를 사용한다. 메서드는 인수를 설명하는 이름을 사용한다. 

Complex fulcrumPoint = new Complex(23.0);

보다는 

Complex fulcrumPoint = Complex.FromRealNumber(23.0);

이 낫다. 

 

기발한 이름은 피하라

재미난 이름보다 명료한 이름을 택하자. kill 대신 whack? 농담은 피하는 편이 좋음. (문화권 차이도 문제가 될 수 있음)

 

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

똑같은 메서드를 각각 fetch, retrieve, get으로 부르면 혼란스럽다. 

동일 코드 기반에 controller, manager, driver를 섞어 쓰면 혼란스럽다. 

일관성 있는 어휘를 사용할 것. 

 

말장난을 하지 마라

한 단어를 두 가지 목적으로 사용하지 마라. 

값 두개를 더하는 메서드와 집합에 값 하나를 추가하는 메서드를 둘 다 add라고 부른다면 혼란이 생김!!

하나는 add, 하나는 insert 이런 식으로 구분하기 

 

해법 영역에서 가져온 이름을 사용하라

코드를 읽을 사람도 프로그래머

전산 용어, 알고리즘 이름, 패턴 이름, 수학 용어 등은 사용해도 좋음. 

 

문제 영역에서 가져온 이름을 사용하라

문제 영역과 관련이 깊다면 문제 영역에서 가져오기

 

의미 있는 맥락을 추가하라

그냥 state라는 변수만 달랑 있으면 주소라는 것을 알기 쉽지 않음. 접두어 addr(address의 줄임말)을 추가해주면 훨씬 알아보기 쉬움! addrState

맥락을 독자가 유추해야 하게끔 만들지 말자.

 

불필요한 맥락을 없애라 

일반적으로 짧은 이름이 긴 이름보다 좋다.

단 의미가 분명해야 한다. 

이름에 불필요한 맥락을 추가하지 않기..

accountAddress는 클래스 인스턴스로는 좋은 이름이지만 클래스 이름으로는 Address가 더 적합

 

 

'클린코드' 카테고리의 다른 글

04. 주석  (0) 2022.02.06
03. 함수  (0) 2022.01.30
01. 깨끗한 코드  (0) 2022.01.23