ルール7失敗が起こる場合をなくす
この表題は、楽観的な感じがするよね? 一体どういう意味なんだろう?
回避しようのない失敗の場合だってある、そうだろ? あるファイルを開こうとしたところで、そのファイルは存在しないかもしれないし、他のユーザーがロックしてるかもしれない。どんなに賢いインターフェイス設計も、ファイルを開こうとして失敗する可能性を回避できない。だから、そういう話じゃないってことは確かだ。むしろ、ファイル操作自体の失敗ってわけじゃない、実際には回避できる類の失敗をなくすって話に違いない。おそらくは、使い方の間違いだ。例えば、ファイルへのハンドルを閉じた後でファイルに書き込んだり、初期化が完全に済む前にオブジェクトのメソッドを呼び出したり、とか。
使い方を間違えることのないようなシステムを設計できるかもしれない。でも、簡単じゃなさそうだ。そして実際、それは簡単じゃない。システムの間違った使い方が不可能であるように設計するのは、かなり難しい。ある機能をユーザーに公開すれば、ユーザーはその機能を使う奇妙な方法を見つけ、最終的に全てが爆発して吹っ飛ぶだろう。例えば、完全にMinecraftのブロックだけで作り上げた、実際に機能する8ビットプロセッサーとかね†1。
そして、チームにいる他のプログラマーに対し、ある機能を公開したら、やつらはその機能を間違った使い方で使う。必ずだ。そういう間違った使い方が、意図的で、何かを動作させようとする必死の試みだったりすることがあるかもしれない。例えば、ファイルシステムのシャットダウン用ルーチンを呼び出した後に、ファイルのハンドルを閉じること。そいつが、望ましくないコールバックを回避する、唯一の手段だからだ。また、間違った使い方でもっとありそうなのは、インターフェイスのユーザー本人が全く意図しないようなもの、例えば、インターフェイス呼び出し方法の解釈を誤ったとかいうものだ。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access