클린 코드를 작성해야 하는 이유
깨끗한 코드를 작성해야 하는 이유는.. 책에서 설명하는 것과 비슷한 경험을 한 적이 있어서 너무 공감이 되었다. 급하게 짜인 코드로 인해 생산성이 떨어진 프로젝트를 다시 만들기 위해 시간과 인력을 투입하고 시간이 지나면 그 프로젝트에 투입되었던 사람들은 퇴사를 하고.. 프로젝트 구조에 대해 이해도가 떨어지는 사람들이 다시 투입되고.. 그럼 또 다시 명확하지 않은 코드가 작성되고.. 계속 반복이다. 작은 회사에서도 이런 경험을 했으니 큰 회사는 오죽할까 싶다.
또 개발을 하면서 “다음에 리펙토링해야지~” 하면서 넘어가는 경우가 많은데, 다음은 오지 않는다..
처음부터 개발자가 좋은 코드를 사수하기 위해 노력해야 한다. 책에 나오는 비유는 다음과 같다.
“수술을 앞둔 환자가 담당 의사에게 수술 빠르게 끝내줬으면 좋겠다고 손 씻지 말고 수술해달라고 하면 의사는 그 요구를 받아들여야 할까?”
→ 최대한 빨리 개발을 해달라는 요청에 클린 코드를 위한 시간을 확보하는 것이 힘들다는 것은 경험으로 알고 있어서 무엇이 정답인지는 혼란스럽지만.. 그래도 시간이 없다고 내가 최소한으로 적용할 수 있는 방법은 적용하는 것이 좋지 않을까
유명 & 노련한 프로그래머들이 생각하는 클린 코드란?
- 이야네 스트롭스트룹(C++ 창시자) 우아하고 효율적인 코드, 의존성을 최대한 줄여 유지보수가 쉬운 코드, 철저한 오류 처리, 한 가지를 잘하는 코드
- 그래디 부치 가독성, 명쾌한 추상화
- 데이브 토마스 가독성 + 다른 사람이 고치기 쉬운 코드, 단위 테스트 케이스와 인수 테스트 케이스가 존재
- 마이클 페더스 주의 깊게 작성한 코드, 세세한 사항까지 꼼꼼하게 신경 쓴 코드
- 론 제프리스 중복을 피하고, 한 기능만 수행하고, 제대로 표현하고, 최대한 작게 추상화하라
- 워드 커닝햄 짐작했던 기능을 그대로 수행하는 코드
이 책에서 말할 클린 코드
깨끗한 변수 이름, 깨끗한 함수, 깨끗한 클래스를 만드는 방법을 설명할 것이고, 이것이 진리인 듯 설명하지만 이 책의 저자가 속한 그룹이 생각하는 클린 코드일뿐 절대적으로 옳다고 단정하는 것은 금물이다.
어떤 기능을 개발하려고 할 때 기존 코드를 읽는 시간이 코드를 작성하는 시간보다 절대적으로 길다. 때문에 기존 코드를 읽기 쉬운 코드로 작성하는 것이 중요하다. 거기다 코드를 수정할 때 항상 조금씩이라도 리펙토링을 한다면 시간이 지나도 코드의 상태가 유지되고 오히려 더 좋아지는 경험을 할 수 있다.