개발자 99% 커뮤니티에서 수다 떨어요!
명료함
일관성
지속적인 개선의 노력
2024.5.5 일요일
2장 의미 있는 이름
이름을 잘 지으면 여러모로 편하다(p.22)
의도를 분명히 밝혀라(p.22)
정말로 중요하다.
좋은 이름 선택에는 시간이 걸리지만, 좋은 이름으로 절약하는 시간이 더 크다.
나를 포함, 코드를 읽는 사람이 좀 더 행복해진다.
코드 맥락이 코드 자체에 명시적으로 드러나야 한다.
이름을 잘 짓는것 만으로 코드에서 맥락을 보여주는데 도움이 될 수 있다.
그릇된 정보를 피하라(p.24)
유사한 개념은 유사한 표기법을 사용한다.
일관성이 떨어지는 표기법은 그릇된 정보다.
의미 있게 구분하라(p.25)
읽는 사람이 차이를 알도록 이름을 지어라.
발음하기 쉬운 이름을 사용하라(p.27)
검색하기 쉬운 이름을 사용하라(p.28)
문자 하나를 사용하는 이름과 상수는 텍스트 코드에서 쉽게 눈에 띄지 않는다는 문제점이 있다.
인코딩을 피하라(p.29)
불필요한 접두어 사용하지 마라.
IShapeFactory -> ShapeFactoryImpl
자신의 기억력을 자랑하지 마라(p.31)
제3자가 코드를 읽으면서 변수명을 자신이 아는 이름으로 변환해야 한다면 그 변수 이름은 바람직하지 못하다. 일반적으로 문제영역(도메인), 해법영역(기술부분)에서 사용하지 않는 이름을 선택했기 때문에 생기는 문제.
전문가 프로그래머는 명료함이 최고라는 사실을 이해한다.
클래스 이름(p.32)
명사, 명사구
메서드 이름(p.32)
동사 ,동사구
기발한 이름을 피하라(p.32)
특정 문화에서 사용하는 농담은 피하는게 좋다.
한 개념에 한 단어를 사용하라(p.33)
추상적인 개념 하나에 단어 하나를 선택해 이를 고수한다. fetch, retirieve, get을 혼용해서 사용하면 혼란스럽다.
일관성 있는 어휘는 코드를 사용할 피로그래머가 반갑게 여길 선물.
말장난을 하지 마라(p.34)
같은 맥락이 아닌데, 일관성을 고려해 같은 단어를 사용하는 경우가 있다.
... 맥락이 다른데 같은 단어를 사용할 경우, 옳은 선택이 아님
프로그래머는 최대한 이해하기 쉽게 짜야 한다. ... 대충 훍어봐도 이해할 코드 작성이 목표다.
해법 영역에서 가져온 이름을 사용하라(p.34)
코드 읽는 사람도 프로그래머다. 기술 영역에서 사용하는 용어 사용은 괜찮다.
문제 영역에서 가져온 이름을 사용하라(p.34)
적절한 프로그래머 용어가 없다면 '도메인' 영역에서 이름을 가져온다.
기술영역/도메인을 구분할 줄 알아야 한다.
의미 있는 맥락을 추가하라(p.35)
변수명 만으로 파악하기 어렵다면, 변수명에 맥락을 추가하는게 좋다
state -> addrState: 상태가 아닌, 주소의 주 라는 뜻
맥락을 묶어주는 클래서를 생성하면 더 좋다. 변수가 조 ㅁ더 ㅋ믄 개념에 속한다는 사실이 컴파일러에도 분명해진다.
불필요한 맥락을 없애라(p.37)
좋은 이름을 선택하려면, 설명 능력이 뛰어나고 문화적인 배경이 같아야 한다. 좋은 이름의 선택은 교육 문제다.(p.38)
여느 코드 개선 노력과 마찬가지로 이름 역시 나름대로 바꿨다가는 누군가 질책하지도 모른다. 그렇다고 코드를 개선하려는 노력을 중단해서는 안 된다.(p.38)
코드는 한번 작성하고 끝나는게 아니다. 의미 있는 이름은 다시 코드를 살펴보는 시점에 큰 도움이 될것이다!
의미 있는 이름은 코드를 보는 사람을 배려하는 방법이다. 보는 사람에는 타인 뿐만 아니라, 나도 포함이다. 결국 미래의 나를 배려하는 방법!
1장부터 지속적으로 느껴지는 뉘앙스는, 최초 개발 + 개발 이후 유지보수하는 상황까지 고려해서 작성하는걸 강조하는듯한 느낌.
지금 운영업무를 겸하고 있는 상황인데, 내가 개발한 코드가 많다보니 '이게 뭐지'하는 부분이 있다. 조금 더 명확했으면 이해하기 쉬었을까 하는 생각이 든다.
동시에 나는 다음 사람을 배려하고 있나하는 생각이 드는데...! 반성좀 해야겠다. 실천해야지!
헝가리식 표기법
프로그래밍 언어에서 변수 및 함수의 인자 이름 앞에 데이터 타입을 명시하는 코딩 규칙이다.