와, 정말 많이 바뀌었네요! willCrewSurvive() 메서드는 그대로지만 이제 다른 메서드를 호출해 그 반환값을 집계합니다.
먼저 불 변수를 추가해 소모성 자원이라는 주제에 맞게 유사한 특징을 한데 묶었습니다. hasEnoughResources라는 의미 있는 이름도 지었습니다. 변수는 hasEnoughOxygen()과 hasEnoughFuel() 메서드 두 개를 호출해 결과를 가져옵니다. 실제 상세 조건은 두 메서드 안에서 찾아볼 수 있습니다.
다음으로 고려하지 못했던 마지막 조건 덩어리인 hull.holes == 0과 hasEnoughResources 변수를 합쳤습니다. 여기서는 Hull 클래스의 hull.isIntact() 메서드를 사용했습니다. 이미 의미 있는 이름이 있으니 다른 불 변수에 저장할 이유가 없죠.
코드 행은 늘었지만 코드 이해도는 훨씬 향상되었습니다. 이제 커다란 조건문을 한 번에 이해하지 않아도 됩니다. 의미 있게 묶은 덕분에 단계별로 이해할 수 있게 되었습니다. 그뿐만 아니라 변수명과 메서드명으로 원하는 결과를 표현합니다. 각 메서드도 간단해 한 눈에 파악하기 좋습니다.