Categories

  • shinequasar

3장 긴 코드 조각내기

기억해 둘 내용요약

1) 메서드 추출로 긴 메서드 분해하기

2) 호출 또는 전달, 한 가지만 할 것

3) if 도 하나의 기능 → if문은 분리해 함수의 시작에 배치하기


스멜(나쁜 코드)들

1) 메서드가 길다(기준 : 5줄)

2) 함수의 내용이 동일한 추상화 수준에 있지 않을때(여기저기 퍼져있을때)

3) 의도가 불분명한 메서드명

4) 너무 많은 일을 하는 함수


함수 분해를 위한 리팩터링 패턴

1) 메서드 추출로 긴 메서드 분해하기

→ 보통 가장 쉽게 생각할 수 있고, 많이 쓰는 리팩토링 방법인 듯

→ 항상 모든 함수를 5줄로 조각내야하는 줄 알았는데 메서드를 중심으로 잡으면 되는구나(메서드 ≠ 함수)

//💡 함수 (Function)
function add(a: number, b: number): number {
    return a + b;
}

const result1 = add(2, 3);
console.log(result1); // 출력: 5

//💡 클래스 내의 메서드 (Method)
class Calculator {
    add(a: number, b: number): number {   //💡TS에서 메서드는 function을 안붙여도 됨!
        return a + b;
    }
}

const calc = new Calculator();
const result2 = calc.add(2, 3);
console.log(result2); // 출력: 5



2) 호출 또는 전달, 한 가지만 할 것

→ 한 방향으로 흐름이 전달되어 디버깅할때 편할 듯

→ 의도하지 않은 순서로 작동하는 것들 방지할 수 있겠다.



3) if 도 하나의 기능 → if문은 분리해 함수의 시작에 배치하기

→ IF를 처음에 배치하고 하나의 기능으로 생각하라는 점이 신기했고 납득됨

→ 기능을 알아보기 편할 것 같고, 재활용이 용이할 듯

→ 메서드 명을 명확히 적어 함수내부를 볼 일이 없도록하면 깔끔할 듯



다만,,

  • 함수를 쪼개는 기준을 무조건 5줄/한가지 기능만 두는 것이 좋은 방법일까?
  • 한번만 쓰이고 말 함수라면 오히려 뎁스를 높혀 전체적인 흐름을 방해할 수도 있을 듯
  • 재활용성도 염두해보면 좋을 것 같다.
  • 개발을 하며 좋은 코드 대신 예술적인 코드를 지향하는 것을 조심해야 할 것 같다.