본문 바로가기

RETROSPECT

클린코드 회고

동기

사전처럼 궁금한 내용이 있으면 클린 코드를 살펴보긴 했는데 전체적으로 어떤 내용이 있는지 정리하기 위해 처음부터 끝까지 읽게 되었습니다.

요약 및 기억하고 싶은 내용

저자가(로버트 C.마틴) 클린 코드를 통해 하고자 하는 말은 크게 2가지라고 생각한다.

  1. 읽기 쉬운 코드 작성하기
  2. 테스트 하기 쉬운 코드 작성하기

읽기 쉬운 코드 작성하기

읽기 쉬운 코드를 작성하는 이유는 인간의 뇌에 한계가 있기 때문이라고 생각한다.
극단적이 예로 가독성을 고려하지 않고 성능만 신경 쓴 상태에서 코드를 작성하게 되면 되면 아래와 같은 코드는 좋은 코드가 될 것이다.

int n1;
int n2;

하지만 홀수와 짝수가 다른 개념들과 섞여 있다면 조금씩 헷갈리기 시작할 것이다.

int n1;
int n2;
int h; // height
int w; // width

따라서 대부분의 코드는 길이가 길어지더라도 개발자가 한번에 이해할 수 있도록 작성하는 것이 좋다.

int oddNumber;
int evenNumber;
int height;
int width;

이러한 관점에서 저자가 주장하는 바를 읽어보면 합당한 주장같다고 느껴진다.

  • 들여 쓰기는 최소화하는 게 좋다.
  • 함수는 한가지 일만 하도록 하라.
  • 불필요한 주석은 제거하라.
  • 코드의 형식을 맞추어라. (가로 정렬, 세로 정렬)
  • null을 반환하거나 전달하지 마라
  • 응집도를 유지해야 한다.
  • 클래스와 메서드 수를 최소로 줄여라

테스트하기 쉬운 코드 작성하기

테스트 하기 쉬운 코드를 작성하면 서비스의 품질이 올라갈 뿐 아니라 개발자가 읽기 쉬운 코드를 작성하는 데에도 도움이 된다.

우선 테스트 하기 쉬운 코드를 작성하기 위해서는 한 번에 한 가지만 검증해야하고 이는 함수가 한가지 일을 하도록 강요한다.

@Test
void test_isEvenNumber(){
// 준비
int evenNumber = 2;
boolean expected = true;

// 실행
boolean actual = evenNumber % 2 == 0 ? true : false;

// 검증
assertThat(actual).isEqualTo(expected);
}

boolean isEvenNumber(int number){
return number % 2 == 0 ? true : false;
}

이렇게 작성된 코드가 변경이 필요한 경우에 테스트 케이스가 있기 때문에 코드르 변경하고 테스트 케이스가 통과하는지 지속적으로 확인할 수 있다면 공포감이 사라지며 코드에 유연성이 생기게 된다.

마무리

개발자들 사이에서 클린 코드에 대한 대화는 단골 주제이다. 이번 기회를 통해 책에 대한 나의 생각이 정리가 되어서 좋았다.

이 책에서 저자가 본인의 의견을 주장하는 과정에서 많은 것을 배울 수 있게 되었다.'은탄환은 없다'라는 말처럼 소프트웨어에 절대적인 개발 방법론은 존재하지 않는다. 그렇기 때문에 개발자들은 본인이 선택한 개발 방식에 대해 다른 개발자들에게 설명할 수 있어야 한다.
저자는 책에서 다음과 같은 방식으로 독자들을 설득해 나아갔다.

  1. 구루(마스터, 장인)들의 말 인용
  2. 본인의 주장을 간단명료하게 요약
  3. 코드를 AS-IS, TO-BE로 작성

처음에는 의심하는 부분이 있었지만 책을 읽을수록 저자의 주장에 조금씩 동의하게 되었고 책을 덮을 때쯤이면 많은 것을 배웠다는 고마움이 생겼다.