[CleanCode] 깨끗한 코드란?
깨끗한 코드
나쁜코드
- 회사가 망한 원인은 바로 나쁜 코드 탓이었다.
- 우리 모두는 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다. 나중은 결코 오지 않는다.
나쁜 코드로 치르는 대가
- 나쁜 코드가 쌓일수록 팀 생산성은 떨어진다.
- 결국은 나쁜 코드를 더 많이 생산한다.
- 생산성은 더더욱 떨어져 거의 0이 된다.
태도
- 깨끗한 코드를 만드는 노력이 비용을 절감하는 방법일 뿐만 아니라 전문가로서 살아 남는 길이다.
- 나쁜 코드의 위험을 이해하지 못하는 관리자 말을 그대로 따르는 행동은 전문가답지 못하다.
- 기한을 맞추는 유일한 방법은 그러니까 빨리 가는 유일한 방법은, 언제나 코드를 깨끗하게 유지하는 습관인다.
깨끗한 코드란?
- ‘코드 감각’이 있으면 좋은 코드와 나쁜코드를 구분한다. 그뿐만이 아니다. 절제와 규율을 적용해 나쁜 코드를 좋은 코드로 바쓰는 전략도 파악한다.
- 깨끗한 코드는 세세한 사항까지 꼼꼼하게 처리하는 코드다.
- 깨끗한 코드는 한가지에 ‘집중’한다.
- 깨끗한 코드는 잘 쓴 문장처럼 읽힌다.
- 깨끗한 코드란 다른 사람이 고치기 쉽다고 단언한다.
- 테스트 케이스가 없는 코드는 깨끗한 코드가 아니다. 아무리 코드가 우아해도 가독성이 높아도, 테스트 케이스가 없으면 깨끗하지 않다.
- 중복을 피하라. 한기능만 수행하라. 제대로 표현하라. 작게 추상화하라.
- 서둘러 끝내려면, 쉬게 짜려면, 읽기 쉽게 만들면 된다.
의미 있는 이름
의도를 분명히 밝혀라
그릇된 정보를 피하라
- 나름대로 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용해선 안된다.
- 일관성이 떨어지는 표기법은 그릇된 정보다.
의미 있게 구분하라
- 읽는 사람이 차이를 알도록 이름을 지어라.
발음하기 쉬운 이름을 사용하라
검색하기 쉬운 이름을 사용하라
- 이름 길이는 범위 크기에 비례해야한다. 변수나 상수는 코드 여러 곳에서 사용한다면 검색하기 쉬운 이름이 바람직하다.
인코딩을 피하라
자신의 기억력을 자랑하지 마라
- 문자 하나만 사용하는 변수 이름은 문제가 있다.
- 최악은 이미 a와 b는 사용하므로 c를 선택한다는 논리다.
클래스 이름
- 클래스 이름과 객체 이름은 명사나 명사구가 적합하다.
메서드 이름
- 메서드 이름은 동사나 동사구가 적합하다.접근자(get), 변경자(set), 조건자(is)
한 개념에 한 단어를 사용하라
- 추상적인 개념 하나에 단어 하나를 선택해 이를 고수한다.
말장난을 하지 마라
- 같은 맥락이 아닌데도 ‘일관성’을 고려해 add라는 단어를 선택해선 안된다.
해법 영역에서 가져온 이름을 사용하라
- 기술 개념에는 기술 이름이 가장 적합한 선택이다.
문제 영역에서 가져온 이름을 사용하라
의미 있는 맥락을 추가하라
- 이름에 맥락을 부여한다. 클래스를 만든 후 세 변수를 클래스에 넣었다 그러면 세 변수는 맥락이 분명해진다. 모든 방법이 실패하면 마지막 수단으로 접두어를 붙인다. Ex) addrFirstName, addrLastName.
불필요한 맥락을 없애라
- 일반적으로 짧은 이름이 긴 이름보다 좋다. 단, 의미가 분명한 경우에 한해서다.