티스토리 뷰
2장. 의미 있는 이름
일관적이고 명시적이라 이해하기 쉬운 코드
1. 생각
코드는 최대한 독자가 이해하기 쉽도록 써야 한다.
코드 맥락이 코드 자체에 명시적으로 드러나야 한다.
저자의 의도가 명확하고 일관적으로 드러나서 독자가 의문을 갖지 않도록 해야 한다.
2. 기억하고 싶은 문장들
- 의도를 분명하게 밝혀라
좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 더 많다.
그러므로 이름을 주의 깊게 살펴 더 나은 이름이 떠오르면 개선하기 바란다.
변수(혹은 함수나 클래스)의 존재 이유는? 수행 기능은? 사용 방법은? 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다.
- 그릇된 정보를 피하라
프로그래머는 코드에 그릇된 단서를 남겨서는 안 된다. 그릇된 단서는 코드의 의미를 흐린다. 나름대로 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용해도 안 된다.
서로 흡사한 이름을 사용하지 않도록 주의한다.
- 의미 있게 구분하라
컴파일러를 통과할지라도 연속된 숫자를 덧붙이거나 불용어를 추가하는 방식은 적절하지 못하다. 이름이 달라야 한다면 의미도 달라져야 한다.
읽는 사람이 차이를 알도록 이름을 지어라.
- 발음하기 쉬운 이름을 사용하라
말을 처리하려고 발달한 두뇌를 활용하지 않는다면 안타까운 손해다. 그러므로 발음하기 쉬운 이름을 선택한다.
발음하기 어려운 이름은 토론하기도 어렵다.
- 검색하기 쉬운 이름을 사용하라
이런 관점에서 긴 이름이 짧은 이름보다 좋다. 검색하기 쉬운 이름이 상수보다 좋다.
이름 길이는 범위 크기에 비례해야 한다. 변수나 상수를 여러 곳에서 사용한다면 검색하기 쉬운 이름이 바람직하다.
- 인코딩을 피하라
유형이나 범위 정보까지 인코딩에 넣으면 그만큼 이름을 해독하기 어려워진다.
문제 해결에 집중하는 개발자에게 인코딩은 불필요한 정신적 부담이다.
- 자신의 기억력을 자랑하지 마라
독자가 코드를 읽으면서 변수 이름을 자신이 아는 이름으로 변환해야 한다면 그 변수 이름은 바람직하지 못하다.
문자 하나만 사용하는 변수 이름은 문제가 있다. 루프에서 반복 횟수를 세는 변수 i, j, k는 괜찮다. (l은 절대 안 된다!) 단, 루프 범위가 아주 작고 다른 이름과 충돌하지 않을 때만 괜찮다.
전문가 프로그래머는 명로함이 최고라는 사실을 이해한다. 전문가 프로그래머는 자신의 능력을 좋은 방향으로 사용해 남들이 이해하는 코드를 내놓는다.
- 클래스 이름
클래스 이름과 객체 이름은 명사나 명사구가 적합하다.
- 메서드 이름
메서드 이름은 동사나 동사구가 적합하다.
- 기발한 이름은 피하라
재미난 이름보다 명료한 이름을 선택하라.
의도를 분명하고 솔직하게 표현하라.
- 한 개념에 한 단어를 사용하라
메서드 이름은 독자적이고 일관적이어야 한다. 그래야 주석을 뒤져보지 않고도 프로그래머가 올바른 메서드를 선택한다.
일관성 있는 어휘는 코드를 사용할 프로그래머가 반갑게 여길 선물이다.
- 말장난을 하지 마라
한 단어를 두 가지 목적으로 사용하지 마라.
프로그래머는 코드를 최대한 이해하기 쉽게 짜야 한다. 집중적인 탐구가 필요한 코드가 아니라 대충 훑어봐도 이해할 코드 작성이 목표다.
'Book' 카테고리의 다른 글
[Clean Code] TIL - 220126 (0) | 2022.01.26 |
---|---|
[Clean Code] TIL - 220125 (0) | 2022.01.25 |
[Clean Code] TIL - 220123 (0) | 2022.01.23 |
[Clean Code] TIL - 220122 (0) | 2022.01.22 |
[Clean Code] TIL - 220121 (0) | 2022.01.21 |