클린코드 1~4장

HR·2022년 5월 22일
1

목록 보기
1/2

[1장] 깨끗한 코드

1) 깨끗한 코드는 예술인가?

'깨끗한 코드'는 '잘 그린 그림'과 비슷하다.
잘 그린 그림을 구별한다고 해서 그림을 잘 그리는 것이 아니듯, 깨끗한 코드를 구분할 수 있다고 해서 깨끗한 코드를 작성할 수 있다는 것은 아니다.

2) 깨끗한 코드란 무엇인가?

깨끗한 코드는 의존성이 낮으며, 명확하며 읽기 쉽고, 테스트 케이스를 통과하며, 고치기 쉽다.
또한 단순하며, 중복을 최대한 줄이고, 짐작한 기능을 수행하는 이름을 가지고 있다.

3) 깨끗한 코드를 지키는 방법

보이스카우트 규칙 : 캠프장은 처음 왔을 때 보다 더 깨끗하게 해놓고 떠나라.


[2장] 의미 있는 이름

1) 명확한 이름

변수의 의도를 분명히 밝히는 것이 좋다. 그릇된 정보를 전달할 가능성을 없애자.
accountList보다는 accountGroup, bunchOfAccounts 또는 accounts가 더 낫다.

2) 발음과 검색에 용이한 이름

과도한 축약어보다는 발음하기 쉬운 단어가 더 읽기 쉽다. 또한 이러한 변수가 소통에도 더 유리하다.
또한 자주 등장하는 변수일 수록 검색하기 쉬운 단어를 사용하자. 5라는 숫자보다는 WORK_DAYS_PER_WEEK가 더 낫다.

3) 클래스와 객체, 메소드의 이름

클래스와 객체는 명사, 메소드의 이름은 동사로 시작하는 것이 좋다.

4) 언어 유희는 되도록 피하자

특정 문화에서만 사용하는 단어나, 작성자와 유머를 공유하는 사람만이 알아들을 수 있는 이름은 좋지 않다.

5) 하나의 개념에는 하나의 단어

같은 기능에 대해 get, fetch, retrieve등의 단어를 혼용하는 것은 좋지 않다.

6) 기술 이름은 사용해도 괜찮다

jobQueue와 같은 이름은 프로그래머라면 다들 이해한다. 다만 다른 도메인 영역에서 가져온 단어는 사용을 지양하는 것이 좋다.


[3장] 함수

1) 함수는 작게

함수의 길이는 최대한 짧아야, 명확하다.
하나의 함수는 하나의 일만 해야 한다. 여기에서 말하는 하나의 일은 추상화 단계가 하나인 작업을 수행한다는 뜻이다.

2) 추상화 단계 통일

함수 내의 모든 추상화는 동일한 레벨이어야 한다.
추상화 레벨을 섞어서 쓰게 되면, 사람들이 세부사항을 추가하게 되고, 깨끗한 코드에서 멀어지게 된다.

또한 함수의 추상화는 한 번에 한 단계씩 낮아져야 한다.

3) 함수의 인수

적을수록 좋다. 4개 이상은 사용하지 말자.
또한 플래그 변수를 통해 함수 본연의 역할에서 벗어나는 행동(부수 효과)을 하면 안된다.

4) 예외 처리

if문을 통한 오류 처리보다는 try-catch를 이용한 예외 처리가 더 낫다.
또한 try-catch문은 코드 구조에 혼란을 가져올 수 있으므로 따로 함수로 빼는 것이 좋다.

5) 함수 설계 방법

기능을 구현하고, 단위 테스트를 만든다.
그 후

1. 코드를 다듬고,
2. 함수를 만들고,
3. 이름을 바꾸고,
4. 중복을 제거한다.
5. 메소드의 수를 줄이고, 순서를 바꾼다.
6. 필요하다면 클래스를 쪼갠다.

이렇게 함수를 수정하는 도중에도 단위 테스트는 계속 통과해야 한다.


[4장] 주석

1) 주석의 필요성

구구절절한 주석 보다, 코드로 표현하는 것이 훨씬 좋다.
주석을 추가하는 일반적인 이유는, 코드 품질이 나쁘기 때문이다.

2) 좋은 주석

  1. 법적인 주석
  2. 정보를 제공하는 주석 ex) 정규식을 통한 시간 정보 포맷팅 형식
  3. 의미 또는 의도를 명확하게 제공하는 주석
  4. 결과를 경고하는 주석
  5. 앞으로 할 일을 나타내는 TODO 주석

0개의 댓글