# 03-14. 성의 없는 요소


# ✋ Intro

  • 코드의 구조를 잡을 때 클래스, 함수, 인터페이스 등 다양한 프로그램 구조를 사용하는데 사정상 이러한 구조가 필요 없을 때도 있다.

    • 예를 들면 본문 코드를 그대로 쓰는 것과 거의 동일한 형태의 함수거나 메서드가 하나밖에 존재하지 않아 역할이 줄어든 미니멀한 클래스의 경우가 이에 해당한다.
  • 이러한 부분의 제거할 때 주로 '함수 인라인하기'나 '클래스 인라인하기' 기법을 사용하고 만약 상속을 사용했더라면 '계층 합치기'라는 리팩토링 기법을 사용하면 좋다.

  • 해당 절을 읽으면서 내가 생각한 성의 없는 요소과도하게 분리하거나 다른 리팩토링 작업으로 인해 본래의 기능(역할)이 많이 약해져서 원래대로 인라인해도 무방한 요소라고 정의할 수 있을 것 같다.


# (1) 계층 합치기

  • 클래스 계층구조를 리팩토링하다 보면 기능들을 위로 올리거나 아래로 내리는 일은 다반사로 벌어진다.
  • 예컨대 계층구조도 진화하면서 어떤 클래스와 그 부모가 너무 비슷해져서 더는 독립적으로 존재해야 할 이유가 사라지는 경우가 생기기도 한다.
    • 바로 이 때가 그 둘을 하나로 합쳐야 할 시점이다.
// before

class Employee { ... }
class SalesPerson extends Employee { ... }

// after

class Employee { ... }