프로그래머는 binarySearch를 쓰기로 결정했지만 이 방법에 네라고 대답함으로써 다른 많은 방법에 아니오라고 대답한 셈입니다. 주석이 이 선택의 근거를 정말 타당하게 설명하고 있나요? 코드에서 알고 싶은 것을 생각해보세요. 그리고 주석이 뭐라고 답해야 했을지도요.
알고 싶은 것은 이러한 것들입니다. 왜 빠른가요? 코드는 왜 빨라야 하나요? binarySearch 메서드가 정말 빠른가요? 이 빠른 해법의 비용이나 트레이드 오프(trade off)는 무엇인가요?
그런데 주석이 설명하는 것은 무엇인가요? 음, 딱 보아도 이 질문들에 대한 답은 없네요. 그러면 어떻게 향상시킬 수 있을까요?
새로 확장한 주석을 봅시다.
class Inventory { // 리스트를 정렬된 채로 유지한다. isInStock()을 참고한다. private List<Supply> list = new ArrayList<>(); void add(Supply supply) { list.add(supply); Collections.sort(list); } boolean isInStock(String name) { /* * 재고가 남았는지 재고명으로 확인해야 한다면, * 재고가 천 개 이상일 때 심각한 성능 이슈에 직면한다. * 1초 안에 항목을 추출하기 위해 * 비록 재고를 정렬된 채로 유지해야 하지만 * 이진 검색 알고리즘을 쓰기로 결정했다. */ return Collections.binarySearch(list, new Supply(name)) != -1; } }