클린 코드란?
- 품질 좋은 소프트웨어를 개발하고
- 견고하고 유지보구가 쉬운 시스템을 만들고
- 기술 부채를 회피하는 것
코드를 포매팅하고 구조화하여도 클린 코드의 요건을 충족시켰다고 말할 수 없다.
클린코드는 그 이상의 유지보수성이나 소프트웨어 품질에 관한 것을 말한다.
클린 코드의 중요성
- 민첩한 개발과 지속적인 배포 가능
- 프로젝트를 일정하게 예측 가능한 속도로 지속적으로 배포하려고 한다면 유지보수가 가능한 좋은 코드를 갖는 것이 필수적임
- 그렇지 않으면 새로운 기능을 추가할 때마다 리팩토링을 하고 기술 부채를 해결하기 위해 멈춰야 한다.
프로젝트 코딩 스타일 가이드 준수
- 코딩 가이드라인은 품질 표준을 지키기 위한 최소한의 요구사항
- 좋은 코드 레이아웃에서 가장 필요한 특성은 일관성
- 코드가 일관되게 구조화되어 있으면 가독성이 높아진다.
- 프로젝트의 모든 멤버가 표준화된 구조를 사용한다면 다른 사람에게 훨씬 익숙한 코드를 작성하게 될 것이다.
- 익숙한 코드는 다른 멤버에게 패턴을 파악하고 오류를 감지하기 쉽게 만든다.
- e.g. Perception in Chess(1973)
- 다양한 레벨(초급자, 중급자, 마스터)에게 말의 위치를 기억하도록 하는 실험
- 말의 위치가 무작위일 때는 레벨 별로 큰 차이가 없는 단순 암기 문제였다.
- 말의 위치가 실제 게임에서 발생할 수 있는 논리적 순서(일관성과 패턴)를 따랐을 때는 레벨이 높을수록 다른 선수들을 압도했다.
- 소프트웨어에서도 구조화된 패턴을 가진 코드라면 전문가일수록 훨씬 빠르게 이해할 수 있을 것이다.
- PEP-8을 준수하였을 때의 이점
- 검색 효율성(Grepability) : 코드에서 토큰을 grep(검색 명령어) 할 수 있기 쉽게 한다.
$ grep -nr "location=" >> 키워드 인자에 값을 할당할 때는 띄어쓰기를 사용하지 않음 $ grep -nr "location =" >> 변수에 값을 할당할 때는 띄어쓰기를 사용함
- 일관성 : 코드 레이아웃, 문서화, 작명 규칙 등 일정한 포맷을 가지고 가독성을 높인다.
- 코드 품질 : 코드를 구조화하여 살펴보면 한 눈에 코드를 이해하고 버그와 실수를 쉽게 찾을 수 있다.
- 검색 효율성(Grepability) : 코드에서 토큰을 grep(검색 명령어) 할 수 있기 쉽게 한다.