리팩토링 냄새 2. 중복코드
- etc/리팩토링
- 2023. 4. 27.
들어가기 전
이 글은 인프런 백기선님의 리팩토링 강의를 복습하며 작성한 글입니다.
냄새 2. 중복 코드 (Duplicated Code)
- 중복 코드의 단점
- 비슷한지, 완전히 동일한 코드인지 주의 깊게 봐야한다
- 코드를 변경할 때, 동일한 모든 곳의 코드를 변경해야 한다
- 사용할 수 있는 리팩토링 기술
- 동일한 코드를 여러 메서드에서 사용하는 경우, 함수 추출하기 (Extract Function)
- 코드가 비슷하게 생겼지만 완전히 같지는 않은 경우, 코드 분리하기 (Slide Statements)
- 여러 하위 클래스에 동일한 코드가 있다면, 메서드 올리기 (Pull Up Method)
이 장에서는 '중복 코드'라는 냄새를 알아본다. 그리고 그 냄새를 제거할 수 있는 기법들에 대해서 공부해본다.
중복 코드란?
코드들 중에는 다음 형태의 코드가 존재하는데, 이런 코드들을 중복 코드라고 이해할 수 있다.
- 완전히 동일한 코드
- 조금만 코드를 변경하면 동일한 코드가 될 수 있는 코드
- 안에서 하는 일은 다른데 비슷한 구조 및 절차를 가진 코드
이런 중복 코드들은 함수 추출하기 / 코드 분리하기 / 메서드 올리기 등을 이용해서 해결할 수 있다.
중복 코드의 단점
중복 코드의 단점은 아래와 같다.
- 비슷한지, 완전히 동일한 코드인지 주의 깊게 봐야한다
- 코드를 변경할 때, 동일한 모든 곳의 코드를 변경해야 한다
기본적으로 동일한 코드 하나를 변경한다면, 동일한 코드가 있는 모든 지점에서 해당 변경점을 반영해줘야 한다. 만약 그렇게 하지 않을 경우, 버그가 발생할 가능성이 농후해진다. 그렇다면 어떻게 이 중복 코드 냄새를 제거할 수 있을까?
중복 코드 냄새 제거 방법
가능한 리팩토링 기술은 아래와 같다.
- 함수 추출하기
- 이 냄새도 제거 가능하다. 다른 냄새를 제거할 때도 사용된다. 여기서는 동일한 코드를 뽑아내서 캡슐화 한는 것이 목표
- 코드 분리하기
- 코드를 위 아래로 옮겨서 같은 코드로 만들어준다. 그리고 함수 추출을 통해서 코드를 컴팩트하게 만든다.
- 메소드 올리기
- 하위 클래스에 동일한 메서드가 존재한다면, 상위 클래스로 옮겨주는 리팩토링 기법이 있을 수 있다.
'etc > 리팩토링' 카테고리의 다른 글
리팩토링 17. 변수 캡슐화하기 (0) | 2023.04.27 |
---|---|
리팩토링 : 냄새 5 - 전역 데이터 (0) | 2023.04.27 |
리팩토링6. 메서드 올리기 (0) | 2023.04.27 |
리팩토링 5. 코드 정리하기 (0) | 2023.04.27 |
리팩토링 4. 함수 추출하기 (0) | 2023.04.27 |