안녕하세요. 이제 주니어 개발차 5개월차가 된 코딩하는 곰돌이(코곰...)입니다.
한동안 일에 치여서 글을 안쓰다가 요즘 일을 하면서 반복적으로 느끼는 것이 있어 그것에 대한 주제로 얘기를 해봐야겠다는 생각에 글을 쓰기 시작했습니다.
제가 오늘 얘기할 주제는 리팩터링입니다.
리팩터링이란 깊게 들어가면 정의하기 복잡할 수 있지만 주니어 개발자의 시선으로 간단하게 이해한 바로는 코드를 깨끗하게 정리하는 것이라고 볼 수 있습니다. 여기서 말하는 깨끗한 코드란 무엇일까요? 이것에 대해서도 사실 여러가지 의견이 있을 수 있지만 저는 깨끗한 코드란 간단하게 말해서 '유지보수하기 쉬운 코드'라고 생각합니다.
사실 프로젝트 초기에만 해도 리팩터링이 어렴풋이 알고만 있었지 깊이 공감하지는 못했습니다. 그리고 리팩터링은 그냥 코드를 보기좋게 짜면 되는것 아닌가라는 생각에 따로 시간을 내어서 공부는 하지 않고 그저 탭 구조를 맞추거나 변수 이름을 신경쓰는 간단한 노력만을 기울였습니다. 하지만 프로젝트를 진행하면 할수록 같은 팀원들이 짠 로직들을 참고하는 횟수가 많아지고, 똑같은 로직을 반복하는 경우도 생기고, 프로젝트의 요구사항이 바뀌면서 엄청 간단한 기능 하나를 바꾸는데 몇 시간이 넘는 시간이 걸리는 경험을 하고는 저의 정신건강을 위해서는 리팩터링을 해야겠다는 생각이 들었습니다.
프로젝트가 커지면 커질수록 제가 느끼는 점은 인간의 뇌가 정말 많은 것을 기억하지 못하는구나라는 것이었습니다. 저는 나름 제가 머리가 좋은 편이라고 생각하고 기억에 의존하며 코드를 짜고 있었습니다. 하지만 파일이 많아지고 반복되는 코드들이 많아질수록 반복되는 기능들이 어떤 파일에 있는지, 비슷한 페이지들의 로직을 바꾸려면 어느 파일을 수정해야하는지 헷갈리기 시작했습니다. 기능 변경을 했는데 특정 페이지에는 변경이 누락된 경우가 생기기 시작했습니다. 제가 짠 코드가 어떤 의도로 짰는지 기억이 나지 않기 시작했습니다. 이런 경험들을 하며 코드를 짤 때 미래의 나는 철저히 남이라 생각하고 코드상에 코드의 구조와 코드가 기능을 명확하고 이해하기 쉽게 나타내는 것이 중요하다는 것을 깨닫게 되었습니다. 이게 제대로 되지 않으면 코드 수정을 할 때 되게 사소한 문제인데도 머리를 싸메고 있는 자신을 볼 수 있고 극단으로 치닫게 되면 기능 하나 수정했는데 하루가 다 가버리는 등 일의 능률은 떨어지고 자괴감이 들기 시작합니다(요즘 저의 상태입니다).
그래서 저는 코드를 깨끗하게 정리하고 일의 능률을 올리고자 리팩터링을 공부하겠다고 마음먹었고 'Clean Code'와 '리팩터링'이라는 책을 읽고 있습니다. 아직 공부를 시작한지 얼마 되지 않았지만 책을 읽고 적용하면서 코드를 짜는 것은 글을 짜는 것과 비슷하다는 것을 느끼고 있고 단순 구현만을 목표로 코딩할 때랑 비교해서 코딩의 난이도도 더 많이 올라감을 느꼈습니다. 하지만 리팩터링을 신경쓰며 코드를 짜니깐 좀 더 재미있다고 느끼는 부분도 있는 것 같습니다.
오늘은 리팩터링에 대해서 알아보았습니다. 저는 개발 실무를 하면 할수록 개발의 세계가 제가 몰랐던 부분이 많구나라는 것을 느끼고 있고 얼마나 공부를 할 것이 많은 분야인지 깨닫게 되는 것 같습니다.
지금까지 코딩하는 곰돌이었습니다.