よく晴れた日に「雨が降れば傘」の話
シゴトバで、外部に開発を依頼していたシステム(PHP/PostgreSQL)のドキュメントチェックを手伝った。そもそも当方が入る前から延々と構築されていたシステムのようだが、内容はほとんど知らない。まぁ、その内容理解を兼ねての依頼ではあったわけだ。プログラムの後追いでつくられているドキュメントである、ということではあるらしい。
「詳細設計書」には、プログラムの挙動レベルでの記述が書かれていた。内容は、もちろん業務上のアレやコレがあるので書くわけにはいかないが、中にこういう記述(単語は仮です、もちろん)があった。
1.○○という名称のファイルが存在すればそれを読み込む。
上の記述はこれに似ている。
雨が降れば傘をさす。
この部分に、当方の前のレビュー者(主となるレビュー者)がこういうコメントを入れていた。
「存在しないときは?」
これに対して少々釈然としないものを感じたので聞いてみた。個人的には、このケースは「単体のif文」であり、「else」条件に値するものを伴わないにもかかわらずわざわざ記載するのは却ってドキュメントを冗長にするのではないか、と思ったからである。すると、こういう返答があった。
「確かにelseは省略できるけど、『何もしない』のも処理のうちなので、明記しておく必要はあるのではないか」
ん…確かにそのとおりではある。だからわたしゃちょくちょく「雨の日に傘を持っていない」事態に陥るのだ(それは関係あるのか)。
ただ、ほんのちょっとだけもにょったのでいろいろ調べてみたら、大きく2通りに割れているようではあった。
- 「if文」の構造に「else」あるいは「elseif*1」を加えることが出来る(マニュアルでそう明記されているのはPHP)
- 基本構造は「if(then)〜else〜」であるが、elseは省略することが出来る(VBScriptのマニュアルにはそんな記述が)
当方が前者のスタンスにあって、最初のレビュアーが後者のスタンスにあれば、それは話が食い違うんだろうかなぁ。どうなんだかなぁ。
ただ、そんなところでぶつかったままというのも埒があかないし大人げないので、これからは
雨が降ったときに限り傘をさす。
と書くことにすべか(汗
elseは、if文における式の値が FALSEの場合にある文を 実行するようにif文を拡張します*2。