리팩터링/냄새 (리팩터링할 시점)

냄새 2. 중복 코드 (Duplicated Code)

developer-tj 2023. 2. 13. 12:00
반응형

"중복 코드 (Duplicated Code)"는 코드의 중복이 발생하여 코드 유지보수의 어려움을 야기하는 코드 냄새(code smell) 중 하나입니다.

 

코드의 중복은 여러 가지 문제를 야기할 수 있습니다.

  1. 코드가 중복되면 코드베이스가 커지게 됩니다.
    코드베이스가 커지면 이를 관리하는 데 필요한 시간과 노력이 더 많이 필요해지며, 결국 프로젝트 전반의 생산성 저하로 이어질 수 있습니다.
  2. 중복 코드는 변경 사항이 생길 때마다 같은 변경 작업을 반복해야 한다는 것을 의미합니다.
    이는 프로그램 내에 버그가 생길 확률을 높입니다.
    코드가 중복되면 해당 코드가 수정 할때 중복되는 모든 코드를 일일이 찾아서 수정해야 합니다.
    그러다가 중복되는 쪽 수정이 누락되면 버그가 발생할 가능성이 높습니다.

 

중복 코드를 제거하는 방법 중 하나는 함수 추출하기(Extract Function) 리팩토링 기법을 사용하는 것입니다.

이를 통해 중복되는 코드 조각을 하나의 함수로 묶어서 사용할 수 있습니다.

또한 함수를 만들 때, 재사용 가능한 범용적인 기능으로 작성하여 중복 코드를 최소화 할 수 있습니다.

또한 중복 코드를 제거하기 위해 템플릿(Template)이나 제네릭(Generic)과 같은 고급 기능을 사용할 수도 있습니다.

중복 코드를 제거하면 코드의 유지보수성이 향상되며, 프로젝트의 생산성을 높일 수 있습니다.

 

따라서 코드를 작성할 때, 중복 코드를 최소화하고 코드 재사용성을 높이는 것이 좋습니다.

 

 

사용할 수 있는 리팩터링 기술

함수 추출하기 (Extract Function) : 동일한 코드를 여러 메소드에서 사용하는 경우

- "의도" 와 "구현"으로 분리한다.
  * 의도 : 함수 이름만 보고 무슨 일을 하는지 알 수 있다. (주석을 함수 이름으로 만든다.)
  * 구현 : 실제 동작하는 코드를 작성한다. 해당 코드를 읽는데 분석이 필요하다.

 

코드 분리하기 : 코드가 비슷하게 생겼지만 완전히 같지는 않는 경우

 

매소드 올리기 : 여러 하위 클래스에 동일한 코드가 있는 경우