레거시 / 리팩토링

이미진·2024년 4월 1일

레거시 코드란?

코드를 만든 목적이나 설명이 부족한 경우, 히스토리를 알 수 없는 코드, 다른 코드와 개연성이 맞지 않은 코드 등 복잡하고 이해하거나 변경하는데 어려움이 있는 오래된 코드를 말한다.

레거시 코드의 문제점

  1. 유지보수의 문제
    레거시 코드의 가장 큰 문제는 코드 유지보수가 어렵다는 점이다. 하나의 코드가 개발되면 꾸준히 그 성능을 테스트하고 상황에 맞게 수정 보완이 되어야 하는데 원래 코드 작성자가 더이상 남아있지 않거나 코드 개발에 대한 목적, 의미등이 적힌 문서가 부족하면 차후 코드 개발자가 그내용을 이해하고 수정하는데 어려움이 있다.

  2. 테스트 코드화의 문제
    레거시 코드의 문제로 또다른 점은 테스트 코드를 만들기 어렵다. 코드가 복잡하고 누락되면 버그 발생율이 높지만 실제 버그 찾아내기가 어렵다. 그렇기에 결국 코드의 활용도가 낮아진다.

리팩토링이란?

레거시 코드가 있는 경우 그 코드를 이해하고 테스트 코드를 거쳐 다시 활용가능하나 코드로 만들어준다. 즉 클린코드로 만들어 가독성이 좋고 유지보수가 좋은 코드를 만든다. 클린코드는 구조가 명확하고 충분한 테스트를 거쳐 버그 발생율이 낮다.

이를 위해 리팩토링 과정을 거치는데 리팩토링은 소프트웨어 외부 동작은 그대로 두고 내부구조를 개선해가는 과정을 말한다. 리팩토링을 거치면 코드 이해도와 가독성이 높아지고 코드 유지보수가 용이해져 소프트웨어 성능을 높일 수 있다.

리팩토링의 과정

  1. 코드 분석
    개발자는 레거시 코드의 현재 구조와 기능을 파악하고 이해해야 한다.

  2. 리팩토링 계획 수립
    코드 분석 후에는 복잡성을 줄이고 중복 제거하고 코드 유지보수 가독성을 높이기 위해 어떻게 변경할지 계획을 세운다.

  3. 리팩토링 실행
    변경 사항을 실제 코드에 적용하는데 이때 중요한 것은 수정 과정에서 외부 동작이 바뀌지 않도록 주의해야 한다. 내부적인 구조 개선으로 외부적인 서비스 페이지 기능이 구동하는데 영향을 주지 않도록 진행한다.

  4. 테스트 코드
    리팩토링 완료 후 코드를 테스트하여 실제 기능들이 잘 작동되는지 버그는 발생되지 않는지 살펴본다. 외부 구조 변경 없이 내부적으로 수정을 진행하는 것이므로 테스트 코드의 정상 작동을 계속해서 확인한다.

profile
느리지만 꾸준하게

0개의 댓글