깨끗한 코드가 무엇일까?
많은 기능이 들어가고 어려운 로직을 짜야 한다면 당연히 지저분해져야 하는 거 아닌가?
라고 생각했고 또 그게 멋있어 보이기도 했다.
하지만 많은 개발자들은 “그건 클린 코드가 아니야”, “코드를 클린 하게 짜야 해” 라고 이야기를 많이 한다.
도대체 클린 코드는 어떻게 짜는 것인가 또 어떤 코드를 보고 클린 코드라고 하는지 궁금해져 로버트 C .마틴 이 지은 클린 코드라는 책을 읽어 보기로 했다.
한 챕터씩 읽으며 클린 코드가 무엇인지 적어보려고 한다.
이책에선 프로그래머를 의사에 비유해 나쁜코드를 작성하면 안되는 이유를 설명했다.
환자가 의사에게 시간이 오래 걸리니 수술실에 손을 씻고 들어오지 말라고 요청하여
질병과 감염 위험 을 잘알고 있는 의사가 손을 씻지 않고 수술실에 들어간다면 그 행동은 범죄 일뿐 아니라 프로답지 못한 행동이고 옳지 못한 행동이라고 이야기한다.
시간에 쫒겨 나쁜 코드를 작성하는것은 손을 씻지 않고 수술실에 들어가는 의사와 같다고 이야기하는것 같다.
어찌 보면 당연한 이야기이다.
나는 여태 당연히 하면 안되는 일을 당연하듯 하고 있었던건 나의 태도를 고민 하게 하는 글 이였다.
이 파트에서는 클린 코드의 정의가 매우 다양하다고 소개하며 여러 유명 프로그래머들이 어떤 코드가 깨끗한 코드인지에 대해 설명하고 있다. 이야기들 중에서 특히 기억에 남는 내용을 추려보았다
프로그래머들이 대충 넘어가는 부분 중 하나가 오류처리다.
메모리 누수,경쟁 상태(race condition),일관성 없는 명명법이 또 다른 예이다.
깨끗한 코드는 세세한 사항까지 꼼꼼하게 처리하는 코드다.
나쁜 코드는 너무 많은 일을 하려 애쓰다가 의도가 뒤섞이고 목적이 흐려지고
깨끗한 코드는 한가지에 ‘집중’ 한다고 이야기 한다.
깨끗한 코드는 잘 쓴 문장 처럼 읽힌다. 깨끗한 코드는 결코 설계자의 의도를 숨기지 않는다.
오히려 명쾌한 추상화와 단순한 제어문으로 가득하다.
코드는 추측이 아니라 사실에 기반해야 한다.
깨끗한 코드는 작성자가 아닌 사람도 읽기 쉽고 고치기 쉽다.
아무리 코드가 우아해도,아무리 가독성이 높아도,테스트 케이스가 없으면 깨끗하지 않다.
깨끗한 코드는 언제나 누군가 주의 깊게 짰다는 느낌을 준다.
고치려고 살펴봐도 딱히 손 댈 곳이 없다.
깨끗한 코드는 주의 깊게 작성한 코드이다.
중복과 표현력만 신경써도 깨끗한 코드라는 목표에 성큼 다가선다.
중복 줄이기,표현력 높이기,초반부터 간단한 추상화 고려하기 이 세가지가 깨끗한 코드를 만드는 비결이다.
중복을 피하라,한가지 기능만 수행하라,제대로 표현하라,작게 추상화 하라.
코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행한다면 깨끗한 코드라 불러도 되겠다.
코드가 그 문제를 풀기 위한 언어처럼 보인다면 아름다운 코드라 불러도 되겠다.
코드가 그 문제를 풀기 위한 언어 처럼 보인다면 아름다운 코드라고 말한다
언어를 단순하게 보이도록 만드는 열쇠는 프로그래머다.
이 챕터를 통해 정말 도움이 되는 많은 이야기들을 접할 수 있었고, 많은 생각을 하게 되었다.
지금까지 진행한 프로젝트들이 떠올라 수정해야 할 부분들이 많이 스쳐 지나갔다.
이 챕터 마지막 부분에는 다음과 같은 말이 있다
"한꺼번에 많은 시간과 노력을 투자해 코드를 정리할 필요가 없습니다. 변수의 이름 하나를 개선하고, 조금 긴 함수 하나를 분할하고, 약간의 중복을 제거하고, 복잡한 if문 하나를 정리하면 충분합니다."
이제부터는 내가 진행했던 프로젝트들의 코드를 다시 보며 조금씩 정리해야 할 것 같다.