코드에서 무언가를 결정할 때에는 정확히 결정해야 한다.
결정을 내리는 이유와 예외를 처리하는 방법을 분명히 알아야 한다.
코드에서 모호성과 부정확한 의견차나 게으름의 결과이며 모두 제거해야 마땅하다.
예를 들어 switch/case
문 보다 추상 메서드가 있는 기초 클래스가 더 좋다.
switch/case
문을 매번 똑같이 구현하게 강제하기는 어렵지만, 파생 클래스는 추상 메서드를
모두 구현하지 않으면 안되기 때문이다.
조건의 의도는 이를 분명히 밝히는 함수로 표현하라.
if(shouldBeDeleted(timer)) { ... } // Good
if(timer.hasExpired() && !timer.isRecurrent()) { ... } // Bad
부정 조건은 긍정 조건보다 이해하기 어렵다. 가능하면 긍정 조건으로 표현하라
if(buffer.shouldCompact()) // Good
if(!buffer.shouldNotCompact()) // Bad