ストラウストラップのプログラミング入門(9) 第5章
『ストラウストラップのプログラミング入門』を読む。4章ドリルの続きを終えて、5章の5.4まで。
前回書いた疑問は未解決だけど、考えるのに飽きてきたので、先に進むことにする。
5章は、エラーがテーマ。
コンパイラの気持ちになって考えよう。…とは書かれてないけど、まあそういう話が書いてある。
コンパイラのメッセージは分かりづらい。しかし、コンパイラはプログラマの意図を推測することはできない。もし推測しようとしたら、そのメッセージは間違いを含む可能性が上がるだろう、ということ。何事も機構の限界を知るのは大事。
『Code Complete 上巻』の「第8章 防御的プログラミング」を読み返したくなったので、そちらにも寄り道しつつ読んだ。
防御的プログラミングに関しては、「どこまでやるか」というメタな話も重要で、この話題をテーマに社内勉強会なんかやった日にはケンカになる(嘘)。プログラマそれぞれの意見を知ることができて面白い。
最終的には、一貫性が重要だよねという結論で落ち着くところも含めて、表記規約の話に似ている。そういう面もあるし。
でも、エラーの話は、影響範囲の時間的、場所的、ヒト的広さが大きい分、より興味深いテーマだと感じる。
素朴な疑問
ところで、スローする例外をクラスのインタフェースで書かねばならないわけではない言語で、スローされる例外を知っておけというのは、つまり実装の詳細を知って使えといっているのと同義だと思うんだけど、しんどくないのだろうか?