리스트 항목 외에 prepareLaunch()에도 주석 처리된 print 문이 들어 있습니다. 자세히 보면 print 문에서 선언하지 않은 변수인 item에 접근하고 있어 주석 처리를 걷어낼 수 없습니다.
주석 처리된 코드는 심각한 문제입니다. 일반적인 주석과 달리 명확히 설명해주는 역할을 하지 않거든요. 혼란만 가중시킬 쓰레기를 코드에 끼얹는 셈입니다.
대부분의 프로그래머는 특정 기능이 동작하지 못하게 하려고 코드를 주석 처리합니다. 다른 측면에 더 집중해 쉽게 주석 처리해버리죠. 때로는 훗날 다시 사용할지 모를 코드를 잃어버리고 싶지 않아 주석 처리하기도 합니다.
아래처럼 바꾸어도 별로 놀랍지 않습니다.
class LaunchChecklist { List<String> checks = Arrays.asList( "Cabin Leak", "Engine", "Hull", "OxygenTank" ); Status prepareLaunch(Commander commander) { for (String check : checks) { boolean shouldAbortTakeoff = commander.isFailing(check); if (shouldAbortTakeoff) { return Status.ABORT_TAKE_OFF; } } return Status.READY_FOR_TAKE_OFF; } }