brunch

You can make anything
by writing

C.S.Lewis

by 서준수 Apr 13. 2022

클린 코드를 위하여

레거시 코드를 볼 때 두 가지 생각이 든다.

1. 잘되는걸 굳이 긁어 부스럼 만들지 말자.

2. (클린 코드 책의 용어를 빌리자면) 원대한 재설계의 꿈


첫 번째 생각은 사실 개발자로서 좋지 못한 생각이다. 그러나 귀찮아서 혹은 잘 돌아가는 코드를 수정했다가 버그가 발생할지도 모른다는 두려움에 섣불리 리팩터링 하지 못하는 경우가 있다. 이것마저도 현실적으로 시간이 있을 때라는 전제하에 가능하다. 현실은 일정에 쫓겨 시간이 없어서 손댈 생각을 못하는 경우 태반일 것이다.


두 번째 생각이 들 정도라면 레거시 코드의 상태가 심각하다는 의미이다. 앞서 말한 귀찮음, 두려움, 현실적인 상황까지 고려하고서도 다시 만들어야 한다고 생각할 정도니까. 쉽지 않은 길을 자발적으로 걷겠다는 실무자의 의견을 자원 낭비라고 생각하는 관리자라면 받아들이지 않을 것이다.



깨진 유리창의 법칙을 여러 매체를 통해 접할 때마다 '나는 그러지 말아야지'라고 생각했는데 결국 나도 똑같았다.


'재설계 아니면 답도 없는 어차피 엉망진창인 레거시 코드인데 그냥 있는 구조에 적당히 맞춰서 넣자.'


이런 생각을 가지지 않았다고 자신 있게 말할 수가 없다. 물론 작은 기능 하나 때문에 커다란 구조를 바꾸는 노고를 들일 수는 없는 것이 맞다. 그리고 기존 구조에 끼워 넣는 게 제일 빠른 방법이기도 하다.


그러나 클린 코드 책의 보이스카우트 규칙을 보고 크게 반성을 했다. '캠핑장은 처음 왔을 때보다 더 깨끗하게 해 놓고 떠나라.' 작은 휴지 조각 하나라도 치운다면 분명 조금 더 깨끗해진다. 이 당연한 사실을 망각하고 있었다. 휴지 조각이 버려져 있다고 쓰레기를 버려도 되는 곳이라고 생각하면서 쓰레기가 쌓이는 것이 전형적인 깨진 유리창의 법칙이 적용된 사례이다.


아주 작은 실천부터 했어야 한다. 구조 변경 같은 큰 일을 저지를 생각을 하기보다는 변수명이라도 의미 있게 개선하려고 했어야 한다. (로직이 복잡한 것이 아니라 도대체 이게 뭘 의미하는 값인지 모를 때 정말 답답하다.)


그러한 작은 시작의 일환으로 Extract Method를 진행했다. 만 14세 미만 사용자에 대한 확인이 필요한 요구 사항이 있었고 의식의 흐름에 따라 구현했던 부분이다. 새벽에 정신없이 구현했던 함수를 좀 더 잘게 나눠보았다. 


앞으로도 작은 변화를 위해서 조금 더 고민하도록 해야겠다. 보이스카우트 법칙을 잊지 말아야겠다. 반성 또 반성!

매거진의 이전글 개발자의 성장은 벼농사와 같다.
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari