더북(TheBook)

그래서 우리는 잘못될 수 있는 모든 경우에 대해 검사를 수행하고 호출자에게 적절한 오류 코드를 알려준다. 호출자가 오류를 확인한 뒤 적절하게 반응하면 괜찮다. 그러나 호출자가 반환 코드를 단순히 무시한다면 어떻게 되는가? 아무 일도 일어나지 않는다! 이 프로그램은 계속 실행되다가 나중에 불합리한 데이터로 인해 크래시가 발생할 수도 있고, 설상가상으로 무의미한 결과를 생성해 부주의한 사람들이 자동차나 비행기를 만드는데 사용할 수도 있다. 물론 자동차 또는 비행기 제작 업체가 그렇게 부주의하지는 않지만, 더 현실적인 소프트웨어에서는 신중한 사람들이더라도 모든 세부 사항을 주의 깊게 보기는 쉽지 않다.

그럼에도 불구하고 허버트와 같은 프로그래밍 공룡들에게 이 문제점을 제기했을 때 그들을 설득하지 못할 수도 있다. "존재하지 않는 파일을 완벽하게 구현된 함수에 전달할 정도로 멍청할 뿐만 아니라 반환 코드도 확인하지 않는다. 내가 아니라 네가 모든 것을 잘못했다."

오류 코드의 또 다른 단점은 계산 결과를 반환할 수 없으며 레퍼런스 인수로 전달해야 한다는 점이다. 이렇게 하면 결과로 표현식을 만들 수 없다. 다른 방법은 결과를 반환하고 오류 코드를 훨씬 덜 복잡한 (레퍼런스) 함수 인수로 전달하는 방법이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.