용어 | 레거시 코드란 무엇인가요?

|

요약

나에게 레거시 코드는 테스트가 없는 코드입니다.

마이클 페더스(Michael Feathers) 《레거시 코드로 효과적으로 일하기》

레거시 코드는 주관적 해석이 강한 언어입니다.
코드에 대한 이해에 따라 이것이 레거시한지? 아닌지? 를 파악할 수 있습니다.

레거시 코드를 정의한다면

  • 테스트가 있더라도 레거시 코드일 수 있습니다.
    – 잘못 작성된 테스트가 있는 경우 테스트가 없는 코드보다 수정하기 어려울 수 있습니다.
  • 기반 코드셋을 변경하거나 버전을 올리는 경우 레거시 코드가 될 수 있습니다.
    – 자바7에서 정상작동 하는 코드는 자바 10에서 에러가 날 수 있습니다.

레거시 코드가 생기는 이유

프로젝트의 마감 기한

코드를 잘 짜고 싶은 마음이 있기는 하지만, 프로젝트의 특성상 데드라인이 존재합니다.
이는 나쁘다고 할 수는 없습니다. 그러나, 레거시 코드가 생기는 것에는 경계할 필요가 있습니다.

지식 부족

프로그래머는 공부를 꾸준히 해야 하는 직업입니다. 특히나 보안 이슈가 생길 만한 코드를
구현이 가능하다는 이유로 사용하게 되면, 해당 서버는 문제가 생길 가능성이 큽니다.

서버의 트래픽과 리소스를 효율적으로 만들 수 있는 방법도 연구해가며 적용해야 합니다.
API 요청 방식인 REST 와 GraphQL 도 서로의 장단점이 있는 것과 같이 모든 코드에는 더욱 효율이 좋은 기법이 존재하게 됩니다. 이에 맞추어 개발에 적용하는 것은 많은 경험과 노하우를 통해서 활용할 수 있습니다.

시간이 지나 업데이트가 안된 코드

아무리 테스트를 거친 코드라고 해도, 시간이 지나면 버전이 업데이트 되면서 다시 한번 코드를 수정해야 할 때가 옵니다. 결국 잘 짜여진 코드도 관점에 따라 레거시가 될 수 있는 것이죠.

리팩토링의 중요성

코드를 보다 간결하고 사용하기 쉽게 만드는 과정을 리팩토링이라고 합니다.
리팩토링의 필요성이 있는지에 대한 의문을 가진 블로그 글을 봤고, 계속 생각해 봤습니다만,
특히 규모가 큰 업체의 경우 코드 정제 과정은 엄청난 생산성과 보안적인 이슈를 해결할 수 있다고 생각합니다.

그만큼 코드에 대한 이해와 공부, 일관된 규칙과 철학을 가지고 봐야 하기 때문에 쉬운 작업은 아닙니다.

저는 현재 마틴 파울러의 리팩터링 2판을 구매하여 천천히 보고 있습니다.
1판에서는 예제 코드가 자바였고 2판에서 자바스크립트로 변경되었다는 소식을 듣게되어 구매하게 되었습니다.

참조

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다