프로젝트를 진행하면서 이전 개발자들이 작성했던 코드를 이어 작성해야 하는 일이 생겼습니다. 실제로 취직하면 이전에 작성된 코드를 수정하는 일이 많으니, 좋은 경험이 될것이라 생각했습니다.
다만 코드를 보니 MVC 패턴의 계층이 모호한 코드와 비효율적인 코드가 많이 보였었습니다. 또한 로직 상 잘못된 것도 있었으며, 가독성이 나쁜 코드도 있었습니다.
제가 생각하는 좋은 코드는 다음과 같습니다.
위의 코드는 리팩토링 전 코드입니다. Controller 계층에서는 사용자에 요청을 받아 적절한 비즈니스 로직과 연결해 주어야 하지만, 비즈니스 계층에 작성되어야 할 로직들이 컨트롤러에 적혀있습니다.
따라서 위의 문제점을 찾아내고 다음과 같은 코드로 변경했습니다.
위와 같은 방법으로 코드가 간결해지고 , 중복됐던 비즈니스 로직을 제거하고 단일 책임으로 묶음으로 써 확장성과 유지 보수가 용이해지고 코드의 가독성이 좋아졌습니다.
처음 리팩토링 할 때 해당 서비스 계층을 이해하는데 시간이 걸렸습니다. 그 이유는 다음과 같습니다.
위의 문제점을 파악하고 다음과 같이 리팩토링을 진행했습니다.
어렵지 않은 방법으로 복잡한 8개의 메서드들을 4개의 메서드들로 간소화한것을 볼 수 있습니다. 또한 각각의 메서드 명만 보더라도 쉽게 이해할 수 있으며 추후 확장하거나 다른사람이 리팩토링할 때 쉽게 이해할 수 있는 코드가 되었습니다.
코드가 길어 두 개의 이미지로 나눴는데, 이미지만 보더라도 코드가 복잡해 보이는걸 볼 수 있습니다.
위의 문제점을 파악하여 다음과 같이 리팩토링을 하였습니다.
위의 세 가지를 활용하여 몇백줄이 넘었던 Security 파일을 단 50줄로 정리할 수 있으며 , 뿐만 아니라 코드의 가독성으 높일 수 있었습니다.
진행되던 프로젝트 중간에 투입된 적은 처음이였으며, 리팩토링을 진행하여 코드를 개선하는 좋은 경험이 된 것 같았습니다.
위에 소개된 코드는 일부이며 수정된 로직은 더 많았으며, 수정된 사항은 비슷했기에 중요하다 생각했던 부분만 소개했습니다.
공감하며 읽었습니다. 좋은 글 감사드립니다.