냄새 15. 추측성 일반화
- etc/리팩토링
- 2023. 5. 10.
들어가기 전
이 글은 인프런 백기선님의 강의를 복습하며 작성한 글입니다.
냄새 15. 추측성 일반화 (Speculative Generality)
- 추측성 일반화란?
- 나중에 생길 것으로 예상해 미리 기능을 구현해두었지만, 결국에 쓰이지 않는 코드가 발생한 경우.
- XP의 YAGNI(You aren't gonna need it) 원칙을 따르자.
- 관련 리팩토링
- 추상 클래스를 만들었지만 크게 유효하지 않다면 '계층 합치기'
- 불필요한 위임은 '함수 인라인' 또는 '클래스 인라인'
- 불필요한 위임은 '의미가 바뀌지 않았을 때'로 볼 수 있을 듯.
- 사용하지 않는 매개변수를 가진 함수는 '함수 선언 변경하기'
- 오로지 테스트 코드에서만 사용하고 있는 코드는 '죽은 코드 제거하기'
추측성 일반화는 지금 필요하지 않은 기능을 미리 추측해서 만들어뒀는데 쓰이지 않는 경우를 의미한다. 이 경우, 죽은 코드가 늘어나서 불필요하게 코드가 복잡해진다. 따라서 프로그래밍을 할 때는 기본적으로는 '딱 필요한 것'만 구현을 한다. 예를 들어 요구 사항도 없는 추상화를 인터페이스를 넣는 행동들을 할 필요가 없다는 것이다.
불필요한 클래스 / 역할들이 많이 늘어나는 것을 코드의 냄새라고 생각한다. 이런 코드들은 다음 방법을 통해 처리할 수 있다.
- 계층합치기
- 함수 인라인 + 클래스 인라인
- 함수 선언 변경하기
- 죽은 코드 제거하기
- 함수 선언 변경하기
예를 들어 메서드에 불필요한 매개변수(사용되지 않는 매개변수)가 있다고 가정해보자. 이 메서드를 사용하거나, 새롭게 수정하는 사람 입장에서는 '매개변수'의 역할을 다시 한번 파악해야하는 불필요함이 있다는 것이다. 이처럼 '성의없는 요소'는 소프트웨어 개발을 어렵게 만들기 때문에 제거가 필요하다.
'etc > 리팩토링' 카테고리의 다른 글
리팩토링 36. 특이 케이스 추가하기 (1) | 2023.05.10 |
---|---|
리팩토링 35. 죽은 코드 제거하기 (0) | 2023.05.10 |
리팩토링 34. 계층 합치기 (0) | 2023.05.10 |
냄새14. 성의없는 요소 (1) | 2023.05.10 |
냄새 13. 반복문 (0) | 2023.05.10 |