DAY 2
오늘의 책 읽기: 2장. 의미 있는 이름 까지
🤓 책에서 기억하고 싶은 내용
의도를 분명히 밝혀라
변수나 함수 그리고 클래스의 이름은 다음과 같은 굵직한 질문에 모두 답해야한다. 변수의 존재 이유는? 수행기능은? 사용방법은? 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다. 22p
그릇된 정보를 피해라
나름대로 널리 쓰이는 의미가 있는 단어는 다른 의미로 사용해도 안된다.
유사한 개념은 유사한 표기법을 사용한다.
의미있게 구분해라
연속된 숫자를 덧붙이거나 불용어를 추가하는 방식은 적절하지 못하다.
발음하기 쉬운 이름을 사용하라
발음하기 어려운 이름은 토론하기도 어렵다.
검색하기 쉬운 이름을 사용하라
문자 하나를 사용하는 이름과 상수는 텍스트 코드에서 쉽게 눈에 띄지 않는다.
이름 길이는 범위 크기에 비례해야한다.
인코딩을 피해라
이제는 코드를 헝가리식 표기법이나 기타 인코딩 방식이 오히려 방해가 될 뿐이다.
클래스와 함수는 접두어가 필요없을 정도로 작아야 마땅하다.
자신의 기억력을 자랑하지 마라
독자가 코드를 읽으면서 변수 이름을 자신이 아는 이름으로 변환해야한다면 그 변수 이름은 바람직하지 못하다.
클래스 이름과 객체 이름은 명사나 명사구가 적합하다
메서드 이름은 동사나 동사구가 적합하다
한 개념에 한 단어를 사용하라
추상적인 개념 하나에 단어 하나를 선택해 이를 고수한다.
같은 맥락이 아닌데도 '일관성'을 고려해 같은 이름을 사용하지 마라.
전산 용어, 알고리즘 이름 등 해법 영역에서 가져온 이름을 사용하라.
적절한 프로그래밍 용어가 없다면 문제 영역(domain)에서 이름을 가져온다.
의미 있는 맥락을 추가하라.
스스로 의미가 분명한 이름이 없지 없다. 하지만 대다수 이름은 그렇지 못하다. 그래서 클래스, 함수, 이름 공간에 넣어 맥락을 부여한다. 모든 방법이 실패하면 마지막 수단으로 접두어를 붙인다.
이름에 불필요한 맥락을 추가하지 않도록 주의한다.
🥰 오늘의 소감
전통적으로 루프에서 반복 횟수를 세는 변수는 i, j,k처럼 문자 하나만 쓴다는 이유로 루프 범위가 넓거나 인덱스가 아닌 배열의 요소를 받는 확장 for문에서조차 i, j, k를 쓰는 경우가 많았다. 변수 이름을 정의하기 어렵다는 이유로 지금까지 이런 식으로 변수 이름을 의미없이 정의했던 것 같다. 이런 변수 이름들은 코드의 내용을 통해 유추하면서 변수의 의미를 알아야 한다는 것을 알고 있음에도...
의미 있는 이름을 짜는 방법은 너무나 많다. "~을 해야한다"라는 강박에 빠지기 보다는 "~은 하지말자"라는 금기를 하나씩 빼는 형식으로 점차 좋은 이름을 정의해보자.
🤔 궁금한 내용
불용어: 영어의 전치사, 조사, 관사, 접속사 등과 같이 주제개념으로 부적합한 용어나 고빈도 용어 또는 개념이 너무 포괄적이어서 색인용어로서 가치가 없는 용어들을 총칭하는 것.
헝가리식 표기법: 컴퓨터 프로그래밍에서 변수나 함수의 이름에 그 종류, 곧 흔히 데이터 타입 따위를 명시하는 표기법으로, 명명규칙의 일종이다.
'Clean Code' 카테고리의 다른 글
7일차 TIL 형식 맞추기 (0) | 2024.03.10 |
---|---|
5, 6일차 TIL 주석 (0) | 2024.03.07 |
3, 4일차 TIL 함수 (1) | 2024.03.05 |
1일차 TIL 깨끗한 코드란? (0) | 2024.03.02 |
Clean Code 책 구매 인증 (0) | 2024.03.02 |