🧐 개발자라면 누구나 협업하기 좋은 코드, 유지보수를 효율적으로 할 수 있는 코드 등 좋은 코드에 대해 끊임없이 고민할 것이다. 나 또한 더 나은 코드에 대한 고민을 하지만 정작 깨끗한 코드가 무엇인지 모르고, 깨끗한 코드를 알아보지 못한다. 좋은 코드에 대한 힌트를 얻고자 <클린 코드>를 읽고 내용 정리를 해보려 한다!
Lean의 토대
→ 린(Lean)은 불필요한 낭비를 최소화하고 소프트웨어의 가치를 최대화하는 방식.
1. 정리, 조직, 정렬(Sort): 적절한 명명법 등과 같은 방법을 사용해 무엇이 어디에 있는지 알아야 함.
2. 정돈, 단정함, 체계화(Seiton): 코드는 누구나 예상하는 위치에 있어야 함.
3. 청소, 정리, 광내기(Seiso): 주석 혹은 주석으로 처리한 코드는 제거해야 함.
4. 청결, 표준화(Seiketsu): 일관적인 구현 스타일과 기법 필요.
5. 생활화, 규율(Shutsuke): 관례를 따르고, 자기 작품을 자주 돌아보고, 기꺼이 변경하는 규율.
논리 간단히, 의존성 최대한 줄여야 유지보수 쉬워짐.
나쁜 코드 ⇒ 깨진 창문 비유
→ 창문이 깨진 건물은 누구도 상관하지 않는다는 인상을 풍긴다. 사람들도 관심을 끊는다. 창문이 더 깨져도 상관하지 않고, 마침내는 자발적으로 창문을 깬다. 창문이 깨지고 나면 쇠퇴하는 과정이 시작된다.
메모리 누수, 경쟁 상태, 일관성 없는 명명법 등 오류 처리 꼼꼼히 처리.
깨끗한 코드는 한 가지를 제대로 한다. 나쁜 코드는 너무 많은 일을 하려 애쓰다가 의도가 뒤섞이고 목적이 흐려진다.
단순하고 직접적, 설계자의 의도 숨기지 않음.
좋은 소설과 마찬가지로 깨끗한 코드는 해결한 문제의 긴장을 명확히 드러내야 한다.
작성자가 아닌 사람도 읽기 쉽고 고치기 쉬움.
단위 테스트 케이스와 인수 테스트 케이스가 존재.
인간이 읽기 좋은 코드를 작성해야 함.
언제나 누군가 주의 깊게 짰다는 느낌을 줌.
→ 누군가 시간을 들여 깔끔하고 단정하게 정리한 코드다. 세세한 사항까지 꼼꼼하게 신경 쓴 코드다.
모든 테스트 통과, 중복 없음, 시스템 내 모든 설계 아이디어를 표현, 클래스 / 메서드 / 함수 등을 최대한 줄임.
중복 줄이기, 표현력 높이기, 초반부터 간단한 추상화 고려하기.
코드가 그 문제를 풀기 위한 언어처럼 보인다면 아름다운 코드.
코드를 읽는 시간 : 코드를 짜는 시간 = 10:1을 훌쩍 넘는다. 그러므로 읽기 쉬운 코드가 매우 중요하다.
캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라.
"연습해, 연습!"
📘 책을 읽으며 메이크업을 했던 시절이 떠올랐다. 눈썹의 대칭, 속눈썹의 각도 등 아주 사소한 부분이 전체를 좌우한다. 메이크업도 시간 내에 완성하는 것이 매우 중요한데, 시간에만 집중하고 디테일에 주의를 기울이지 않으면 완성도가 떨어지고 결국 내 실력은 발전하지 않는다. 프로그래밍도 메이크업과 닮았다는 생각이 들면서, 일정에 맞추기에 급급해 코드에 집중하기보다는 기능이 돌아가는지에만 집중했던 내 모습이 떠올라 부끄러워졌다. 물론 현업에서는 기한을 맞추는 것이 비즈니스 측면에서 매우 중요하기 때문에 꼼꼼하게 코드의 품질에만 집중하는 것은 불가할 것이다. 하지만 깨끗한 코드를 위한 디테일한 관심과 노력이 곧 나와 팀원, 나아가 팀과 회사에 도움이 될 것은 분명할 것이다.
'장인 정신'은 내가 무언가를 처음 시작할 때마다 스스로에게 세뇌하는 마인드이다. 어떠한 분야의 전문가란 머리로 하는 사람이 아닌 몸과 마음으로 하는 사람이라고 생각한다. 장인 정신을 가지고 무의식에 새길 만큼 많은 시간과 노력을 들일수록 전문가에 가까워질 것이다. 이 책을 통해 장인 정신을 가진 개발자가 되기 위한 마인드를 정립할 수 있을 것 같아 기대된다. 연습하고, 연습하자!