|
プログラムを書くときには正常時処理とエラー(異常時)処理がありますね。エラー処理は例外的な処理ですから、ソースコード上では正常時処理が中心になるような書き方をすべきです。このことは、他人が見たときや後で自分が見るときに理解しやすいソースコードにするために重要です。 次の悪い例を見て下さい。 |
|||
|
|
||||
|
ファイルに文字列を出力し、上手くいったら true を返すという関数です。書き方にポリシーがないため、正常時の通り道がどこだか見つけにくくなってしまっています。fopen のあとでは失敗したかどうかを判定しているのに対して、fputs のあとでは成功したかどうかを判定しています。しかも関数の最後まで辿り着くのは失敗時だというのも良くありません。 次は、より改善された例です。 |
|||
|
|
||||
|
はじめの例に比べてだいぶスッキリした感じになっているでしょう。それに、この例では次のようなポリシーが貫かれているため、正常時の通り道が見つけやすくなっています。
正常時の通り道が見つけやすいと、関数がどのようなアルゴリズムで書かれているのかが明確になります。複雑さが軽減され、読みやすく、また改造しやすいソースコードになります。その方が良いに決まっています! このような書き方をする場合に注意すべき点が1つあります。それは、ちょっと気を抜くといつのまにかネストが深くなって見づらくなってしまうことです。いまの例では正常終了までの間に if が2つしかないので良いですが、もっと多い場合もしばしばです。その場合は適当な深さのところでサブルーチン化して見やすさを保つように心掛けましょう。 |
|||
|
もうひとつ、別のポリシーで書かれたコードを挙げておきます。 |
|||
|
|
||||
|
この例では次のようなポリシーが貫かれています。
正常時の通り道はかなり見つけやすいですが、以下のような弱点があります。
|
|||
|
2つの異なるポリシーを挙げましたが、ほとんどの場合はこの2つの書き方で事足りてしまいます。通常は前者のポリシーで書き、後者はこちらを使った方が分かりやすくなりそうな場合に用いるようにすれば良いでしょう。 |
|||
(「プログラミングのはなし」は1998年1月から1999年1月にかけて作成されたコンテンツです。)