TIL (2024.01.28)
DAY 3
책에서 기억하고 싶은 내용
2장 의미 있는 이름
이름을 잘 짓는 간단한 규칙
1. 의도를 분명히 밝혀라
- 변수나 함수 그리고 클래스 이름이 답해야 할 질문?
- 변수(혹은 함수나 클래스)의 존재 이유는?
- 수행 기능은?
- 사용 방법은?
- 이름에 따로 주석이 필요하다면?
- 의도를 드러나는 이름을 사용했을 경우의 이점?
- 코드 이해와 변경이 쉬워짐
- 절약하는 시간이 많아짐
2. 그릇된 정보를 피하라
- 그릇된 정보?
- 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용하는 경우
- 여러 계정을 그룹으로 묶을 때, 실제 List가 아니라면, accountList라 명명하지 않음!
- 서로 흡사한 이름을 사용하지 않도록 주의함
- 일관성이 떨어지는 표기법
3. 의미 있게 구분하라
- 아무런 정보를 제공하지 못하는 이름을 사용하지 마라
- 불용어를 추가한 이름 역시 아무런 정보를 제공하지 못한다
- 불용어?
- 인터넷 검색 시 검색 용어로 사용하지 않는 단어. 관사, 전치사, 조사, 접속사 등 검색 색인 단어로 의미가 없는 단어를 의미함 [출처]
- 불용어 예시
4. 발음하기 쉬운 이름을 사용하라
- 말을 처리하려고 발달한 두뇌를 활용하기 위해
발음하기 쉬운 이름
을 선택하라
5. 검색하기 쉬운 이름을 사용하라
- 문자 하나를 사용하는 이름과 상수는 텍스트 코드에서 쉽게 눈에 띄지 않고 검색하기도 어렵다
- 검색하기 어려운 문자 예시
- 검색하기 쉬운 이름을 사용하라
- 검색하기 쉽다는 관점에서는?
긴 이름
>>>>> 짧은 이름
6. 인코딩을 피하라
7. 자신의 기억력을 자랑하지 마라
- 전문가 프로그래머는
명료함
이 최고라는 사실을 이해한다
- 전문가 프로그래머는 자신의 능력을 좋은 방향으로 사용해 남들이 이해하는 코드를 내놓는다
8. 클래스 이름
- 클래스 이름과 객체 이름은 명사나 명사구가 적합하다
- Ex. Customer, WikiPage, Account, AddressParser 등
- 클래스 이름으로 지양해야 하는 것?
- Ex. Manager, Processor, Data, Info 등
9. 메서드 이름
10. 기발한 이름은 피하라
- 재미난 이름보다 명료한 이름을 선택하라
- 특정 문화에서만 사용하는 농담은 피하는 편이 좋다
의도를 분명
하고 솔직
하게 표현하라
11. 한 개념에 한 단어를 사용하라
- 추상적인 개념 하나에 단어 하나를 선택해 이를 고수한다
- 메서드 이름은 독자적이고 일관적이어야 한다
12. 말장난을 하지 마라
- 한 단어를 두 가지 목적으로 사용하지 마라
- 한 단어를 두 가지 목적으로 사용하지 말아야 하는 이유?
13. 해법 영역에서 가져온 이름을 사용하라
- 기술 개념에는 기술 이름이 가장 적합한 선택이다
14. 문제 영역에서 가져온 이름을 사용하라
- 문제 영역 개념과 관련이 깊은 코드라면 문제 영역에서 이름을 가져와야 한다
15. 의미 있는 맥락을 추가하라
- 클래스, 함수, 이름 공간에 넣어 맥락을 부여한다
- 함수 이름은 맥락 일부만 제공하며, 알고리즘이 나머지 맥락을 제공한다
16. 불필요한 맥락을 없애라
- 일반적으로는 짧은 이름이 긴 이름보다 좋다
- 이름에 불필요한 맥락을 추가하지 않도록 주의한다
마치면서
- 좋은 이름을 선택하려면?
- 설명 능력이 뛰어나야 한다
- 문화적인 배경이 같아야 한다
오늘 읽은 소감
변수나 함수 이름을 지을 때는 많이 고민했던 거 같은데 그걸 제외하면 위에서 말한 규칙들은 거의 지키고 있지 않았던 것 같다. 특히, 한 개념에 한 단어를 써라라는 규칙에서 add 같은 단어를 쓸 경우 뭔가 추가하는 개념이 있으면 다 갖다 붙였던 것 같다. 위의 규칙들이 익숙해질 때까지 리팩토링할 때, 위의 규칙들을 훑어보면서 적용하는 연습을 해야겠다.
책을 읽으려는 이유?!
