클린코드1 - 좋은 코드란 무엇일까?

좋은 코드란?

내가 생각하는 좋은 코드는 이해하기 쉽고 바꾸기 쉬운 코드이다.

이해하기 쉬운 코드

내가 회사일을 할 때 보면 코드를 작성하는 것보다 코드를 읽는데 최소 수십 배 이상의 시간을 쓴다. 코드를 짤 때는 연관 코드를 읽고 짜야하고, 내가 짠 코드에서 버그가 발생하면 내가 짠 코드뿐만 아니라 연관 코드를 다 봐야 한다. 또한 다른 사람이 짠 코드에서 발생한 버그를 디버깅해야 할 때도 많다. 이렇게 코드를 짜는 시간보다 읽는 시간이 훨씬 많기 때문에 이해하기 쉬운 코드가 중요하다.

바꾸기 쉬운 코드

버그를 고치면서, 아니면 일부 기능을 조금 바꾸면서 버그를 만든 적이 많지 않은가? 나는 그런 적이 많다. 내가 부주의해서 그런 적이 많아 매번 반성하며 앞으로 그러지 않으려고 노력한다. 하지만 바꾸기 어려운 코드가 내 부주의함과 합쳐져서 버그를 만든 경우가 많다. 두 군데만 바꾸면 될 줄 알았는데, 중복 코드가 있어서 세 군데를 바꿔야 한다던가 등 말이다. 

관련 책 내용

클린 코드

1.3 나쁜 코드로 치르는 대가, 클린 코드란?
(여러 사람의 인터뷰 중 가장 와닿는 것만 가져옴)

데이브 토마스(OTI 창립자이자 이클립스 전략의 대부)
클린 코드는 작성자가 아닌 사람도 읽기 쉽고 고치기 쉽다.

위드 커닝엄(위키 창시자, 피트 창시자, 익스트림 프로그래밍 공동창시자, ...)
코드를 읽으며 짐작했던 기능을 각 루틴이 그대로 수행한다면 클린 코드라 불러도 되겠다.

1.4 저자 생각

코드를 읽는 시간 대 코드를 짜는 시간 비율이 10:1을 훌쩍 넘는다. 새 코드를 짜면서 우리는 끊임없이 기존 코드를 읽는다.
비율이 이렇게 높으므로 읽기 쉬운 코드가 매우 중요하다. 비록 읽기 쉬운 코드를 짜기 쉽지 않더라도 말이다. 하지만 기존 코드를 읽어야 새 코드를 짜므로 읽기 쉽게 만들면 사실은 짜기도 쉬워진다.

실용주의 프로그래머

Tip14 좋은 설계는 나쁜 설계보다 바꾸기 쉽다.

바꾸기 더 쉽게(Easier to Change. ETC) 이게 전부다.
왜 결합도를 줄이면 좋은가? 관심사를 분리함으로써 각각이 더 바꾸기 쉬워지기 때문이다. ETC.
왜 단일 책임 원칙이 유용한가? 요구 사항이 바뀌더라도 모듈 하나만 바꿔서 반영할 수 있기 때문이다. ETC.
왜 이름 짓기가 중요한가? 이름이 좋으면 코드가 읽기 쉬워지고, 코드를 바꾸려면 코드를 읽어야 하기 때문이다. ETC!

* Feedback은 언제나 환영합니다.

Comments