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

nn·2022년 4월 24일
1

clean-code

목록 보기
3/9

오늘 TIL 3줄 요약

  • 의도를 분명히 밝혀라.

  • 그릇된 정보를 피하라.

  • 클래스 이름과 객체이름은 명사나 명사구가 적합하다. 메서드 이름은 동사나 동사구가 적합하다.


2장. 의미 있는 이름

책에서 기억하고 싶은 내용

  • 변수나 함수 그리고 클래스 이름은 다음과 같은 굵직한 질문에 모두 답해야 한다.
    변수(혹은 함수나 클래스)의 존재이유는? 수행기능은? 사용 방법은?
    따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다.(p.22, p.26)
    의미있는 이름을 사용해야한다. 컴파일러를 통과하더라도 연속된 숫자만을 붙여만든 변수나, 불용어를 사용하는 방법은 코드의 의도를 드러내지 못한다.
public static void copyChars(char a[] char b[]){
	...
}

위 코드는 파라메터로 의미없는 이름을 사용해 파라메터를 제대로 이해하기 어렵다.

public static void copyChars(char target[] char source[]){
	...
}

이렇게 변수의 이름을 정확히 해준다면 가독성이 더 좋아질 것이다.

  • 널리쓰이는 의미가 있는 단어를 다른의미로 사용해도 안된다 (p.24, p.27)
    그룹으로 묶인 여러 계정이 있다고 해보자. 이 그룹이 실제로 List가 아니라면 변수명에 List라는 단어가 쓰이면 안된다.
    그러므로 accountGroup 혹은 아예 Accounts라고 명명하는 것이 낫다.
    또한, 서로 흡사한 이름을 가진 변수를 사용하지 않도록 하자.
    getActiveAccount(); getActiveAccounts(); getActiveAcccoutInfo();
    위 함수의 이름만을 보고 어떤 함수를 호출해야할지 판단 할 수 있을까?
    읽는 사람이 차이를 알수 있도록 이름을 지어야한다.유사한 이름은 유사한 표기법을 사용하게된다. 이 표기법이 일관성이 떨어진다면 그릇된 정보를 전달 할 수 있다.
    또 하나의 가장 끔찍한 예가 이런것이다.
int a = 1;
if (O == l)
a = O1;
else
l = 01;

이는 가장 간단히 글꼴을 바꾸면 해결될 일이긴하지만, 소문자 L과 숫자 1이 유사하게 보이고 대문자 O는 0과 유사하게 보이게 되면서 코드가 엉망이 되는 케이스이다.

  • 발음하기 쉬운 코드를 사용하면 지적인 대화가 가능해진다. (p.28)
    DtaRcrd012라는 클래스를 어떻게 발음할 것인가? Customer와 같이 모두가 동일하게 발음 할 수 있는 클래스명을 사용해야 팀원들간의 소통이 원활할 것이다.

  • 클래스 이름과 객체이름은 명사나 명사구가 적합하다. 함수 이름은 동사나 동사구가 적합하다. (p.32)
    접근자, 변경자, 조건자는 javabean 표준에 따라서 앞에 get, set, is를 붙인다.

  • 한 개념에 한 단어를 사용하라(p.33)
    함수의 이름은 독자적이고 일관적이어야한다.
    추상적인 개념에 맞는 단어 하나만을 선택하고 유지해야한다.
    예를 들어 함수를 클래스마다 fetch, retrieve, get으로 각각 다른이름으로 정의한다면 어느 클래스에서 어느 이름을 지어줬는지 찾아내야한다.
    또한 동일코드에서 controller, driver, manager를 섞어쓰는 것도 그렇다.


소감

아주 옛날에 함수 이름을 정하는 것이 가장 어렵다는 소리를 누군가 우스겟소리로 한 것을 들은적이있었다.
당시 막 코딩을 배우기 시작하고 있던 나는 거의 반이 농담이라고 생각했다.
어려운게 얼마나 많을텐데 고작 이름가지고...?
하지만 맞았다.
그동안 내가 짜왔던 함수의 이름들도 비슷한 의미를 가진 함수가 많이 있었다.
함수를 만들었는데 이미 동일한 함수의 이름이 정의되었던 적도 있었고 (물론 기능도 거의 유사했을 것이다. )
정말 이상한 줄임말을 써서 (controlXXX를 contXXX라고 했었다. ) 누군가에게 한 소리 듣기도 했다.
사실 주석을 무기로 더 마음껏 맘대로 한 것 같기도하다.
애초에 시작이 잘못되었다는 것을 책을 통해 알았다.
이제 문제점과 해결방법을 알았으니 앞으로는 더 신경써서 분명한 의도를 가진 코드를 생산해야겠다.

profile
내가 될 거라고 했잖아

0개의 댓글

관련 채용 정보