このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

アンチ防衛コード派の立場は弱い

僕は、ずっと(いつからかは覚えてない)「防衛コードを書くな」と言い続けているのですが、これは受け入れられないことが多いですね。

まず言われることは「それじゃまったくセキュアなシステムにならない」とか「ユーザー(人間)は無謀な操作をするから」とか。そういう事とは関係ないのだけどね。

次に、しばしば責務の放棄と誤解されます。例えば、構文解析で期待してないトークンに出会うとイキナリ例外を投げて終了してしまうプログラムが実際にあったので問い質すと「檜山さんがエラーリカバリーするなと言ったから」と。ここらへんの事は、Erlangに絡めて少し話したことがあります。「Erlang実験室:武士道と云ふは死ぬ事と見付けたり」の「潔さと無責任は違う」のあたり。

実は、僕が推奨したいことは、「××を書くな」よりは「○○を書け」のほうなんです。○○の部分は、ホーア論理に基づくアサーションとか契約(コントラクト)です。防衛コードを書く労力を、アサーション/契約のほうに振り向けてね、っと。アサーション/契約をちゃんと書くようになれば、自然にどうでもいい防衛コードは書かなくなるでしょう。

ですから、スローガンを「アサーション/契約を書こう」に変更すればいいんでしょうが、アサーション/契約のサポート状況があんまり芳しくない。単体テストツールの類は普及してますが、楽しく使っている人は一部でしょう。実際、楽しくないかもしれないし。

それ以前に、システム境界、責務、仕様などの概念がかなり明確にならないと、入力チェックやエラーリカバリーが仕事の一部なのか単なる無駄なのか判断がつきにくいでしょうし。

残念ながら、言ってみても実行が伴いにくい状況にありますなー。それでも言い続けたりするんだけどさ。