리팩토링

리팩토링(영어: Refactoring)은 소프트웨어가 외부에 보여주는 동작을 변경하지 않고 내부의 구조를 변경, 개선하는 작업을 말한다.

리팩토링의 필요성[편집 | 원본 편집]

품질이 좋은 소스코드란 프로그래머가 이해하기 좋고, 변경하기 좋으며, 코딩 과정에서 발생하는 실수를 예방할 수 있는 코드를 말한다. 이렇게 좋은 코드를 작성하면 향후 유지보수가 편리하며, 기능을 추가하거나 변경하는 것이 용이하고 대다수의 버그를 원천적으로 차단할 수 있다. 그러나 소프트웨어를 처음 개발하는 당시부터 좋은 코드를 작성하는 것은 힘든 일이다. 개발자가 아직 미숙해서일 수도 있고, 빠듯한 출시일정과 부족한 예산에 맞추다 보니 그럴 수도 있고, 좋은 코딩에 대한 방법론이 새로 개발되었을 가능성도 있다. 또한 개발 과정과 이후 운영 과정에서 계속 변경되고 추가되는 요구사항에 맞추다 보면 코드의 품질이 갈수록 나빠지는 일도 매우 흔하다. 이렇게 만들어진 나쁜 품질의 코드를 계속해서 땜질만 하며 운용하다 보면 결국 코드의 유지보수에 소요되는 비용이 매우 증가하게 되고, 새로 채용한 개발자가 코드를 이해하는데 드는 시간도 매우 길어진다. 게다가 나쁜 코드 위에 코드를 쌓다 보면 코드 품질이 점점 더 나빠지는 악순환이 발생하게 된다. 이런 악순환의 고리를 끊어내는 것이 바로 리팩토링이다. 소프트웨어가 하던 기능은 그대로 유지하면서 코드의 나쁜 부분을 개선하는 작업을 통해 코드의 복잡도를 줄이고 코드의 품질을 향상시키는 과정을 리팩토링이라고 한다.

리팩토링 방법[편집 | 원본 편집]

리팩토링을 위해서는 어떤 코드가 좋은 코드인지에 대한 지식이 우선 있어야 한다. 또한 코드를 변경해도 기능이 정상적으로 작동하는 것을 확인하기 위해 적절한 테스트를 미리 작성해 놓으면 좋다. 또한 날잡고 한번에 싹 갈아엎는 것도 리팩토링이지만, 매일 조금씩 코드 품질을 개선해나가는 것도 좋은 리팩토링 방법이다. 이러면 리팩토링 과정에서 발생할 수 있는 문제들을 최소한으로 통제할 수 있고, 기능 개발과 병행하는 것이 용이하다.