[클린코드] 5장 - 형식 맞추기
뚜껑을 열었을 때 코드가 깔끔하고 일관적이며, 꼼꼼하다고 감탄하면 좋겠다. 질서 정연하다고 탄복하면 좋겠다. 술취한 뱃사람 한무리가 짜놓은 듯 어수선해 보인다면 독자들은 프로젝트의 다른 측면도 똑같이 무성의한 태도로 처리했으리라 생각할 것이다.
형식은 의사소통의 형식이다. 그리고 의사소통은 전문 개발자의 일차적인 의무이다. 그렇기 때문에 형식은 중요하다! 너무 중요해서 무시하기 어렵다. 이부분이야말로 사소한 곳에서 발휘하는 정직이라고 생각한다. 오늘 구현하는 기능은 다음 버전에서 바뀔 수 있다. 하지만 오늘 구현한 코드의 가독성은 앞으로 바뀔 모든 코드의 품질에 지대한 영향을 미친다.
코드의 길이는 적절해야 한다. 여러 큰 프로젝트의 예시를 살펴보면 500줄, 200줄도 안되는 파일로도 큰 시스템을 구축할 수 있다. 신문을 잘 생각해보자. 대다수의 기사가 아주 짧다. 그렇기에 신문이 읽을만하다. 코드는 신문 기사처럼 작성할 필요가 있는데, 기사의 제목을 보고 본문을 읽을지 결정하는 독자들의 특징을 잘 살려서 좋은 기사 제목인 파일 제목, 클래스 이름을 적어야 한다. 그리고 전체 기사 내용을 요약하는 내용이 첫 문단에, 세세한 내용은 아래에 위치시킨다. 우리의 클래스도 위에서는 추상적이고 큰 개념의 내용을 적고, 아래로 갈수록 더 저차원의 세부내역을 적는다.
가로, 세로 형식도 중요하다. 가로와 세로의 형식은 코드로 구현한 개념을 구획화 한다. 빈 행을 통해 개념과 개념 사이를 분리한다. 변수는 변수끼리, 메서드는 메서드끼리 붙여서 쓰고 서로는 띄어서 구분할 수 있다. 클래스끼리도 빈 행을 통해 구분할 수 있다. 그리고 유사한 개념은 서로 가까이 있어야 한다. 서로 연관성이 높기 때문에 서로를 참고하기 때문이다. 만약 이를 모아두지 않는다면 코드가 어디에 있는지 찾고 기억하는데 시간과 노력을 소모한다.
들여쓰기는 범위를 나타낸다. 요즘 IDE가 자동으로 해주기 때문에 크게 생각할 필요는 없지만, 계층을 구분하기 위해 들어쓰기를 신경써야 한다. 한번 들여 쓰기 없이 코드를 작성해보면 인간이 코드를 읽는것이 거의 불가능 하다는 것을 알게 될 것이다. 책에서는 한줄로 끝나는 if문이나, While문도 들여쓰기를 철저하게 지키는 것을 원칙으로 제시한다.
형식이 아주 잘 지켜진 코드는 어떠한 주석이나, 문서를 필요로 하지 않난 하나의 구현 문서가 된다. 한번 잘 구현한 Java나 Python 라이브러리를 확인해보자. 코드를 읽고 있는데 마치 공식 문서를 읽는 느낌이 난다. 코드만 보고도 어떤 함수를 사용해야하는지 알 수 있다. 우리는 이런 코드를 참고하며 작성해야 한다.