# 03-14. 성의 없는 요소
# ✋ Intro
코드의 구조를 잡을 때 클래스, 함수, 인터페이스 등 다양한 프로그램 구조를 사용하는데 사정상 이러한 구조가 필요 없을 때도 있다.
- 예를 들면 본문 코드를 그대로 쓰는 것과 거의 동일한 형태의 함수거나 메서드가 하나밖에 존재하지 않아 역할이 줄어든 미니멀한 클래스의 경우가 이에 해당한다.
이러한 부분의 제거할 때 주로 '함수 인라인하기'나 '클래스 인라인하기' 기법을 사용하고 만약 상속을 사용했더라면 '계층 합치기'라는 리팩토링 기법을 사용하면 좋다.
해당 절을 읽으면서 내가 생각한 성의 없는 요소란 과도하게 분리하거나 다른 리팩토링 작업으로 인해 본래의 기능(역할)이 많이 약해져서 원래대로 인라인해도 무방한 요소라고 정의할 수 있을 것 같다.
# (1) 계층 합치기
- 클래스 계층구조를 리팩토링하다 보면 기능들을 위로 올리거나 아래로 내리는 일은 다반사로 벌어진다.
- 예컨대 계층구조도 진화하면서 어떤 클래스와 그 부모가 너무 비슷해져서 더는 독립적으로 존재해야 할 이유가 사라지는 경우가 생기기도 한다.
- 바로 이 때가 그 둘을 하나로 합쳐야 할 시점이다.
// before
class Employee { ... }
class SalesPerson extends Employee { ... }
// after
class Employee { ... }