ETC

클린코드 작성하기 Part 2

5_ssssseung 2021. 9. 2. 01:44

3. 클린코드를 만드는 규칙들

3.4 착한 함수 (Function)

함수를 만드는 원칙은 가급적 작게 만들어야 한다고 한다.

 

if문이나 while문 안의 내용은 한줄로 처리되도록 하는 것이 이상적이고 블록 안에서 다른 함수를 호출하도록 작성한다.

함수의 크기는 20줄 이내, 한라인당 150문자를 넘지 않도록 한다.

 

함수 하나당 하는 일은 하나만 하도록 한다.

여기서 하나의 일은 같은 추상화 수준을 의미한다.

public void doTheDomesticThings() {
    takeOutTheTrash();
    walkTheDog();
    for (Dish dish : dirtyDishStack) {
        sink.washDish(dish);
        teaTowel.dryDish(dish);
    }
}

// 리펙토링
public void doTheDomesticThings() {
    takeOutTheTrash();
    walkTheDog();
    doTheDishes();
}

 

함수의 인수(parameter)는 적을수록 좋다.

가장 이상적인 함수의 인수 개수는 0개이다.

함수의 인수가 많으면 테스트 케이스를 작성하기도 어려워진다.

만약 함수에서 3개 이상의 인수가 필요하다면 객체 사용을 고려해보자.

Circle makeCircle(double x, double y, double radius);

// 리펙토링
Circle makeCircle(Point center, double radius);

 

함수를 만들 때 중복이 없도록 한다.

중복된 코드는 모든 소프트웨어 해악의 근본이다.. ㅋㅋ

변경 시 중복된 여러 부분에 손을 대야하고 오류가 발생할 확률도 높아지기 때문이다.

public void bar () {
    foo("A");
    foo("B");
    foo("C");
}

// 리펙토링
public void bar () {
    String [] elements = {"A", "B", "C"};
    
    for (String element : elements) {
        foo(element);
    }
}

 

3.5 읽기 쉽게 흐름제어 만들기 (Making control flow easy to read)

조건, 반복, 흐름을 통제하는 선언문이 코드에 있으면 코드를 읽기가 어려워진다.

분기문과 점프문이 코드를 복잡하게 만들기 때문이다.

 

논리가 명확해질 수 있는 코드흐름을 읽기 쉽게 만드는 몇 가지 방법을 보자.

  • if/else 조건문에서 인수의 순서는 긍정적이고, 간단하고, 흥미로운 표현이 먼저 위치하도록 한다.
  • 삼항연산자나 do/while, goto 구문은 코드의 가독성을 떨어뜨리기 때문에 되도록 사용하지 않는 것이 바람직하다.
  • if/else 구문에서 중첩이 깊어지면 코드를 이해하기 어려워진다.

 

이 밖에도 오류처리와 레거시 코드를 다루기 위한 방법이 있으나,

아직 경험치가 부족한 관계로 추후에 다뤄보도록 하겠다 ㅠ