Good code bad code 정리 - 1장: 코드 품질
1장. 코드 품질
코드 품질이 좋아야 하는 이유는 여러가지이다. 고품질의 코드는 신뢰할 수 있고, 유지보수가 쉬우며, 버그가 적다. 개발자는 코드를 작성해 문제를 해결하는 직업이다. 개발자가 작성한 코드가 프로덕트가 되기까지는 일련의 과정을 거친다.
로컬에서 코드 작성 → 코드 베이스(Git 등)에 커밋 요청 → [다른 개발자의 코드 리뷰] → [테스트] → 코드 베이스에 코드 병합 → [제품 품질 테스트] → 프로덕션 환경에서 일반 사용자들에게 배포
코드를 작성할 때 달성해야 하는 목표 네 가지
-
작동해야 한다.
-
작동이 멈춰서는 안된다.
-
변화하는 요구 사항에 적응해야 한다.
일어날 변화를 예측해서 개발 기간을 길게 잡는 것과 아무런 변경 가능성을 예측하지 않은 채 눈 앞의 요구조건만 보고 빠르게 개발을 마치는 것 둘 사이에서 균형을 맞춰야 한다.
-
이미 존재하는 기능을 또다시 구현해서는 안된다.
라이브러리를 이용할 것. 예를 들면 업계 표준으로 사용하는 방식이 있을 것이다. 그래야 다른 개발자가 내 코드를 읽었을 때 빠르게 습득할 수 있다.
이러한 목표를 달성하는 코드가 좋은 품질의 코드라고 할 수 있다.
고품질 코드를 작성하기 위한 방법 여섯 가지
-
읽기 쉬워야 한다.
-
예측 가능해야 한다.
-
오용하기 어렵게 만들어야 한다.
like TV 뒤에 전원 선 입력 단자와 hdmi 입력 단자가 다르듯, 사용자가 오용하기 어렵게 만들어야 버그가 줄어든다.
-
모듈화
팔 다리가 모두 분해 가능한 로봇 인형과, 모든 접합부가 뜨개실로 엮인 털실인형을 생각해보기. 모듈화를 하기 위해서는 적절한 추상화가 필요
-
재사용 가능하고, 일반화할 수 있게 작성
-
테스트가 용이한 코드를 작성하고, 제대로 테스트할 것
고품질 코드를 작성하는 것은 품질을 고려하지 않는 것보다 당연히 초기 시간은 더 걸린다. 하지만 버그 없는 코드는 없고 요구조건은 언제나 추가되거나 변경되기 마련. 중장기적으로 봤을 때 코드의 품질을 고려하는 것은 항상 미래를 위한 더 나은 선택일 것이다.
저자는 테스트의 중요성을 그 무엇보다 강하게 얘기한다