멋있는 코드
개발한 지 얼마 되지 않았을 때는 코드를 멋지게 짜는 것이 좋았습니다. 복잡한 로직을 짧게 줄이거나, 유행하는 패턴을 적용하면 왠지 더 뿌듯했습니다. 성능 차이가 크지도 않은데 괜히 비트 연산을 써서 있어보이게 만들기도 하고, 그냥 잘라서 비교하면 될 문자열을 굳이 정규식을 사용해 전후방 탐색까지 동원해가며 복잡하게 처리하기도 했습니다. 함수형 프로그래밍에 빠졌을 때에는, 함수에 함수를 넘기고 그 함수가 다른 함수를 호출하는 식의 코드를 짜기도 했고요. 디펜던시 인젝션이 멋있어 보일 때는 단순히 함수로 호출하면 될 코드를 여러 개의 객체로 감싸 추상화하기도 했습니다. 그때는 그런 코드들이 더 수준 높고 잘 만든 코드라고 생각했습니다. 배경지식이 있어야 이해할 수 있으니, 왠지 더 고급스럽게 느껴지기도 했고요. 아마도 ‘이것 봐, 나는 이런 것도 알고 있어!’ 하고 내보이고 싶은 마음도 있었던 것 같습니다. 그런데 시간이 지나면서 생각이 달라졌습니다. 처음엔 있어 보였던 코드들이 막상 수정하려고 하면 골치 아팠습니다. 한 눈에 이해되지 않아서 한참을 들여다봐야 했고, 결국 너무 어려워서 다시 작성한 경우도 많았습니다. 유행하는 패턴을 적용했던 코드들은 유행이 지나니 촌스럽게 보이기도 했고요. 그렇게 시행착오를 겪으며, 오래 고민하지 않아도 한 번에 읽고 이해할 수 있는 코드가 실용적이라는 걸 깨닫게 되었습니다. 예전에는 반복을 없애는 것이 깔끔한 코드라고 생각하기도 했습니다. 같은 코드가 두 번 이상 나오면 무조건 정리하는 것이 정석이라 믿었고, 반복되는 패턴을 찾아 추상화하는 것이 능력이라고 여겼습니다. 하지만 지나친 추상화는 오히려 코드를 읽게 어렵게 만들었습니다. 모듈이 지나치게 쪼개져있거나 여러 패턴이 겹쳐 있으면, 코드를 따라는 것조차 부담스러웠습니다. 이런 코드들은 고치는 것보다 새로 짜는 게 더 쉬울 때도 많았습니다. 지금은 직관적인 코드가 더 좋다고 생각합니다. 구조가 단순하거나 중복된 부분이 있더라도, 한 번에 보고 이해할 수 있는 코드가 더 낫습니다. 한 줄로 압축된 로직보다, 다소 장황하더라도 고치기 쉬운 코드가 더 실용적입니다. 누구나 쉽게 수정할 수 있는 코드라면 더 좋겠습니다. 코드는 혼자만 보는 것이 아니니까요. 설령 혼자만 본다고 하더라도, 몇 달 뒤의 나는 남과 다름없으니까요. 저 역시 쉽고 오래 유지할 수 있는 코드를 짤 수 있도록 더 고민하고 노력해야겠습니다.
- 개발
Mar 2, 2025