-
[클린코드] 2. 의미있는 이름 - 요약 및 인사이트웹 개발/클린코드 2022. 4. 2. 22:39반응형
real world example 오픈 소스들을 보면서 문득 이 코드들이 과연 최선의 방식일지에 대해 궁금증이 생겼다.
좋은 코드를 분별하고 또 작성하기 위해 클린코드 책을 공부하면서 정리해보기로 했다.
인사이트 정리
코드에서 의미있는 이름이라는 것이 정해진 규칙이 있는 것이 아니라
다른 개발자가 내 코드를 보았을 때 코드의 의미를 명확하게 이해할 수 있게 만드는 것이 중요하다는 것을 느꼈다.
커뮤니케이션을 할 때도 명확한 단어를 쓰지 않으면 각자가 다르게 해석한다는 것을 많이 느끼는데,코드를 짤 때도 마찬가지라는 것을 느낀다.내가 짠 코드가 명확한 의미를 가진 이름과 맥락을 가질 수 있도록 적용해보아야겠다.요약
1) 의도를 분명히 밝혀라
- 변수(혹은 함수나 클래스)의 존재이유는? 수행 기능은? 사용 방법은? 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다.
- 문제는 코드의 단순성이 아니라 코드의 함축성이다. 다시말해, 코드 맥락이 코드 자체에 명시적으로 드러나지 않는다.
ex) the list에 무엇이 들었는가? / 값 4는 무슨 의미인가? 등
- 값 4는 깃발이 꽃힌 상태를 가리킨다. 각 개념에 이름만 붙여도 코드가 상당히 나아진다.2) 그릇된 정보는 피해라
- 나름대로 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용해도 안된다.
- 서로 흡사한 이름을 사용하지 않도록 주의한다. (정말 비슷하게 생긴 단어)
- 유사한 개념은 유사한 표기법을 사용한다. 일관성이 떨어지는 표기법은 그릇된 정보이다.3) 의미있게 구분하라
- 컴파일러를 통과할지라도 연속된 숫자를 덧붙이거나 불용어를 추가하는 방식은 적절하지 못하다.
- 개념을 구분하지 않은채 이름만 달리한 경우다. ex) info, data
- 불용어는 중복이다. ... nameString이 Name보다 뭐가 나은가?
- 이 프로젝트에 참여한 프로그래머는 어느 함수를 호출할지 어떻게 알까?4) 발음하기 쉬운 이름을 사용하라
- 발음하기 어려운 이름은 토론하기도 어렵다.
5) 검색하기 쉬운 이름을 사용하라
- 문자 하나를 사용하는 이름과 상수는 텍스트 코드에서 쉽게 눈에 띄지 않는다는 문제점이 있다. - 28p
> 7이 들어가는 파일이나 수식이 모두 검색되기 때문이다. 상수에 버그가 있으나 검색으로 찾아내지 못한다.
> e라는 문자도 변수이름으로 적합하지 못하다. 십중팔구 거의 모든 프로그램, 거의 모든 문장에 등장한다.
- 이름 길이는 범위 크기에 비례해야한다. 변수나 상수를 코드 여러 곳에서 사용한다면 검색하기 쉬운 이름이 바람직하다.6) 자신의 기억력을 자랑하지 마라
- 문자 하나만 사용하는 변수 이름은 문제가 있다. 단, 루프 범위가 아주 작고 다른 이름과 충돌하지 않을 때만 괜찮다.
- 전문가 프로그래머는 명료함이 최고라는 사실을 이해한다.7) 클래스 이름
- 클래스 이름과 객체 이름은 명사나 명사구가 적합하다.
8) 메서드 이름
- 메서드 이름은 동사나 동사구가 적합하다.
9) 기발한 이름을 피하라
- 농담은 피하는 편이 좋다. 의도를 분명하고 솔직하게 표현하라.
10) 한 개념에 한 단어를 사용하라
- 추상적인 개념 하나에 단어 하나를 선택해 이를 고수한다. ex) controller, manager, driver
- 일관성 있는 어휘는 코드를 사용할 프로그래머가 반갑게 여길 선물이다.11) 말장난을 하지 마라
- 한 단어를 두 가지 목적으로 사용하지 마라
12) 해법영역에서 가져온 이름을 사용하라
- 기술 개념에는 기술 이름이 가장 적합한 선택이다.
13) 의미있는 맥락을 추가하라
- 함수 이름은 맥락 일부만 제공하며, 알고리즘이 나머지 맥락을 제공한다.
- 맥락을 개선하면 함수를 쪼개기가 쉬워지므로 알고리즘도 좀 더 명확해진다.14) 불필요한 맥락을 없애라
- 모든 클래스 이름을 GSD로 시작하겠다는 생각은 전혀 바람직하지 못하다. IDE에서 G를 입력하고 자동완성키를 누르면 IDE는 모든 클래스를 열거한다.
- 짧은 이름이 긴 이름보다 좋다. 단, 의미가 분명한 경우에 한 해서다. 이름에 불필요한 맥락을 추가하지 않도록 주의한다.반응형'웹 개발 > 클린코드' 카테고리의 다른 글
[클린코드] 7. 오류 처리 - 요약 및 인사이트 (0) 2022.04.18 [클린코드] 6. 객체와 자료구조 - 요약 및 인사이트 (0) 2022.04.17 [클린코드] 5. 형식 맞추기 - 요약 및 인사이트 (0) 2022.04.10 [클린코드] 4. 주석 - 요약 및 인사이트 (0) 2022.04.07 [클린코드] 3. 함수 - 요약 및 인사이트 (1) 2022.04.04