|
| 1 | +### p.22 의도를 분명히 밝혀라 |
| 2 | + |
| 3 | +- 좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 더 많다 |
| 4 | +- 변수의 존재 이유는? 수행 기능은? 사용 방법은?에 대해서 코드만으로 답변이 가능해야한다 |
| 5 | +- 코드의 단순성이 중요한 것이 아니라 코드의 함축성이 중요하다 |
| 6 | +- 코드 맥락이 코드 자체에 명시적으로 드러나지 않는다 |
| 7 | +- 단순히 이름만 고쳤는데도 함수가 하는 일을 이해하기 쉬워진다 |
| 8 | + |
| 9 | +### p.24 그릇된 정보를 피해라 |
| 10 | + |
| 11 | +- 프로그래머는 코드에 그릇된 단서를 남겨서는 안된다 |
| 12 | +- 서로 흡사한 이름을 사용하지 않도록 주의한다 |
| 13 | +- 유사한 개념은 유사한 표기법을 사용해야하며, 일관성이 떨어지는 표기법은 그릇된 정보다 |
| 14 | +- 소문자 L이나 대문자 )는 조심하자 |
| 15 | + |
| 16 | +### p.25 의미 있게 구분하라 |
| 17 | + |
| 18 | +- 연속적인 숫자를 덧붙인 이름은 아무런 정보를 제공하지 못하는 이름이다 |
| 19 | +- 불용어를 추가한 이름 역시 아무런 정보를 제공하지 못한다 |
| 20 | +- Info나 Data는 a, and, the와 마찬가지로 의미가 불분명한 불용어다 |
| 21 | +- 읽는 사람이 차이를 명확하게 알 수 있도록 이름을 지어라(moneyAmount vs money) |
| 22 | + |
| 23 | +### p.27 발음하기 쉬운 이름을 사용하라 |
| 24 | + |
| 25 | +- 발음하기 어려운 이름은 토론하기도 어렵다 |
| 26 | +- 프로그래밍은 사회 활동이다 |
| 27 | +- 또한 지적인 대화가 가능해진다 |
| 28 | + |
| 29 | +### p.28 검색하기 쉬운 이름을 사용하라 |
| 30 | + |
| 31 | +- 문자 하나를 사용하는 이름과 상수는 텍스트 코등서 쉽게 눈에 띄지 않는다는 문제점이 있다 |
| 32 | +- 숫자 7은 7이 들어가는 파일 이름이나 수식이 모두 검색되기 때문에 까다롭다 |
| 33 | +- e는 영어에서 가장 많이 쓰이는 문자로 변수 이름으로 적합하지 못하다 |
| 34 | +- 이름 길이는 범위 크기에 비례해야 한다 |
| 35 | +- 여러 곳에서 사용한다면 검색하기 쉬운 이름이 바람직하다 |
| 36 | + |
| 37 | +### p.29 인코딩을 피하라 |
| 38 | + |
| 39 | +- 유형이나 범위 정보까지 인코딩에 넣으면 그만큼 이름을 해독하기 어려워진다 |
| 40 | +- 인코딩은 불필요한 정신적 부담이다 |
| 41 | +- 또한 거의 발음하기 어려우며 오타가 생기기도 쉽다 |
| 42 | +- 클래스와 함수는 점차 작아지는 추세다 |
| 43 | +- 멤버 변수에 m_ 이라는 접두어를 붙일 필요도 없다 |
| 44 | +- 또한 인터페이스의 경우에도 이름에 접두러를 붙이지 않는 편이 좋다 |
| 45 | + |
| 46 | +### p.31 자신의 기억력을 자랑하지 마라 |
| 47 | + |
| 48 | +- 코드를 읽으며 변수 이름을 자신이 아는 이름으로 변환해야 한다면 그 변수 이름은 바람직하지 못하다 |
| 49 | +- 문자 하나만 사용하는 변수 이름은 루프 범위가 아주 작고 다른 이름과 충돌하지 않을 때만 괜찮다 |
| 50 | +- 전문가 프로그래머는 명료함이 최고라는 사실을 이해한다 |
| 51 | + |
| 52 | +### p.32 클래스 및 메서드 이름 |
| 53 | + |
| 54 | +- 클래스 이름과 객체 이름은 명사나 명사구가 적합하다 |
| 55 | +- Manage, Processor, Data, Info 등과 같은 단어는 피하고, 동사는 사용하지 않는다 |
| 56 | +- 메서드 이름은 동사나 동사구가 적합하다 |
| 57 | +- postPayment, deletePage, save 등이 좋은 예다 |
| 58 | +- 생성자를 중복정의할 때는 정적 팩토리 메서드를 사용한다 |
| 59 | +- 생성자 사용을 제한하려면 해당 생성자를 private로 선언한다 |
| 60 | + |
| 61 | +### p.33 한 개념에 한 단어를 사용하라 |
| 62 | + |
| 63 | +- 똑같은 메서드를 클래스마다 fetch, retrieve, get으로 제각각 부르면 혼란스럽다 |
| 64 | +- 인텔리제이 같은 최신 IDE는 문맥에 맞는 단서를 제공한다 |
| 65 | +- 마찬가지로, 동일 코드 기반에 controller, manager, driver를 섞어 쓰면 혼란스럽다 |
| 66 | + |
| 67 | +### p.34 말장난을 하지 마라 |
| 68 | + |
| 69 | +- 프로그래머가 같은 맥락이 아닌데도 ‘일관성’을 고려해 add라는 단어를 선택한다 |
| 70 | +- 다른 맥락이라면 insert나 append 라는 이름이 적당하다 |
| 71 | +- 대충 훑어봐도 이해할 코드 작성이 목표다 |
| 72 | + |
| 73 | +### p.34 해법 영역에서 가져온 이름을 사용하라 |
| 74 | + |
| 75 | +- 전산 용어, 알고리즘 이름, 패턴 이름, 수학 용어 등을 사용해도 괜찮다 |
| 76 | +- 기술 개념에는 기술 이름이 가장 적합한 선택이다 |
| 77 | + |
| 78 | +### p.35 의미 있는 맥락을 추가하라 |
| 79 | + |
| 80 | +- 클래스, 함수, 이름 공간에 넣어 맥락을 부여해도 의미가 분명하지 않다면 접두어를 붙이자 |
| 81 | +- 독자가 맥락을 유추해야 이해가 가능한 경우 변수의 의미가 불분명하다는 것이다 |
| 82 | +- 맥락을 개선하면 함수를 쪼개기가 쉬워지므로 알고리즘도 더 명확해진다 |
| 83 | + |
| 84 | +### p.37 불필요한 맥락을 없애라 |
| 85 | + |
| 86 | +- Gas Station Deluxe라는 애플리케이션을 짠다고 모든 클래스 이름을 GSD로 시작하면 안된다 |
| 87 | +- 이는 IDE를 방해하는 행위다 |
| 88 | +- 일반적으로 짧은 이름이 긴 이름보다 좋다. 단, 의미가 분명한 경우에 한해서다 |
| 89 | +- 이름에 불필요한 맥락을 추가하지 않도록 주의하자 |
0 commit comments