1. 개념

[ 2017-07.05 작성 ]

리팩토링을 실시하기 전에 '중복된 코드를 리팩토링 해야 하는 이유는 무엇인가?

  • 재사용성(reuseablity)가 떨어지기 때문이며, 동일한 코드를 반복해서 사용하는 것은 노동력이 많이 소모된다.
  • 중복된 코드는 버그가 발견되거나 수정 사항이 발생할 때마다 고쳐야 하는 노력이 많이 든다. (중복된 횟수 만큼의 수정 작업을 반복해야 한다.)
  • 여러 위치에 흩어져 있기 때문에 로직(logic)에 대한 문서화 혹은 설명을 작성하기 어렵다.
  • 중복된 상태로 그대로 두었다가 누군가 흩어진 중복 코드 중에서 한 곳만 고쳐야 할 경우, 원래의 의도와 달리 처음에는 같은 기능을 하던 코드들이 다른 방식으로 동작하게 되는 문제가 발생할 수 있다.

중복된 코드를 리팩토링하는 것은 다음과 같은 장점을 가지고 있다

  • 다양한 리팩토링 기법 중에서 가장 우선순위를 높여서 해야 한다. (아무리 바쁘고  시간이 없더라도...)
  • 리팩토링 기법 중에서 가장 효과가 좋다. (중복 코드 제거를 안한 코드의 유지보수, 장애 처리 비용은 상상을 초월한다.)
  • 설계를 개선하고, 코드의 품질을 높이는 가장 빠르고, 확실한 방법이다. (개발자의 레벨이 상승한다.)
  • 중복된 코드가 제거된 코드는 문서화 하기 용이하고, 코드 가독성(readability)가 향상될 가능성이 높다.

반면에 단점 (과유불급, 지나치면 모자르니만 못하다.)

  • 자칫하면 코드의 복잡도가 높아져 코드를 이해 하기 어렵게 된다.
  • 중복 코드를 방지하는 과정에서 미약하나마 성능 저하가 발생할 수 있다.
  • 지나치게 '중복 방지'에 집착하다보면, 제한된 시간과 노력을 낭비할 가능성이 있다.
  • 중복된 코드가 제거된 코드는 문서화 하기 용이하고, 코드 가독성(readability)가 향상될 가능성이 높다. (중복 코드가 많지 않거나, 아주 단순한 코드임에도 리팩토링을 하려고 애쓸 필요는 없다.)

[ Refactoring ] 마틴 파울러, 정리한 블로그 http://asfirstalways.tistory.com/373

※ 참고 오픈 소스
SonarQube
-지속적인 품질관리 오픈소스
url : http://www.sonarqube.org
참고 사이트 : http://www.nextree.co.kr/p2963/
품질의 7가지
잠재적인 버그
코딩규칙
테스트
중복
주석
아키텍처 및 설계
복잡도