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