냄새 15. 추측성 일반화

    들어가기 전

    이 글은 인프런 백기선님의 강의를 복습하며 작성한 글입니다. 


    냄새 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

    댓글

    Designed by JB FACTORY