- - PR -
空のIF文を書きますか?
投票結果総投票数:260 | |||
---|---|---|---|
許容できる | 85票 | 32.69% | |
許容できない | 148票 | 56.92% | |
どちらでもよい | 27票 | 10.38% | |
|
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-11-06 13:06
回答されるかたがたのご意見を拝見していて、許容できない理由としては、つぎのものに分類できるかな、と思いました。 ・ソースコード上での見間違い(や見落とし)が怖いから。これはコメントの追加で避けられる? ・リソースが無駄だから。リソースは、コンパイル後のマシンコードの実行コストであったり、ソースコードをテキストエディターで表示する行数であったり。 ・気持ち悪いから。読みやすくないから。自分(や自分が想定するグループ)のポリシー・好みに合わないから。 ここまではあまり私の主観は入れていないつもりですが、以下は、私の主観で書きます。 私は、見間違いについては、本来は開発環境のほうで対応すべきものではないかと考えます。空の Then があったらそこを目立つように表示するなどです。開発環境を補うためにコメントを入れることはひとつの良い対処方法だと考えます。日常の文章でも「○○<b>以外</b>は□□です。」のように強調表示したりしますが、これと同じことです。 リソースも、開発環境や実行環境で対応すれば良いと思います。 最後の、気持ち悪い・読みやすくない、などは、これは本当に難しい選択ですね。 | ||||
|
投稿日時: 2008-11-06 13:35
意味的には同じなのかもしれませんが、複雑度は後者の方が上がっていますね。 前者はC0カバレッジ100%のためのテストケースが6通りであるのが一目で分かるのに対し、後者は良く考えてみないと(場合によっては各条件の真偽マトリックスを書いてみないと)どれだけのケースがあるのか分かりません。 それと、前者の書き方が「分離性」に乏しく、変更に耐えられないというのも良く分かりません。 | ||||
|
投稿日時: 2008-11-07 02:44
元の質問を見ますと、Not の代わり(C#なら ! の代わり)として書くのはどうかというものだったと思います。
Notの代わりとして空のブロックを作るのには反対です。特別な理由がありそれが他人にもわかりやすくされているのならありだと思います。自分はやりませんが「許容」はできます。 | ||||
|
投稿日時: 2008-11-07 11:04
ご指摘の通りです。なれない人が読むと読みづらく感じると思います。 IFの考え方の違いから来ていると思います。 実はこれ、人間の思考の問題が大きく絡んでいて、今までやってきたIF文の考え方を大きく変えないと慣れることができないIF文だそうで、とある論文を元に発言しています。 通常、日本の一般的な設計書では、「○○となるとき以下の処理を実施する」又は「○○とならないとき以下の処理を実施する」となり、IFの式の種類の数だけ入り口がありますが、わたしのIF文では「○○とならないので、処理を実施しない」という入り口を1つにして、思考を単純化しようという試みの1つなのです。なので、本来は、1つのブロックで1つの処理しか書かないのですが、掲示板上でそのように書くと行数がかさんでしまうので、手抜きしてしまいました・・・。ごめんなさい。 | ||||
|
投稿日時: 2008-11-07 11:52
許容できます。
条件がひとつならNotでもわかりにくくはなりませんが、セラフさんが提示されたような複数条件が入り込んでくると、難しくなります。 いうなれば対偶を使って判定させているわけで、慣れない思考方法だと思います。 複数条件のときはSelect 〜 Case を使うなどで読みやすくする工夫をしますけど。 日本語でも難しいですよね。 例えば、「新規注文では、『ダイヤではない、またはルビーではない』ものを注文する」といったような仕様があったりして。 これはまだ単純ですが、3つ、4つといった条件が重なり合うと、Not や Or が入り組んできてぱっと理解できるようなものでなくなります。 以前、上記のような仕様でSQL文が書かれていて「意味がねぇ!」といったことがありました。 | ||||
|
投稿日時: 2008-11-07 12:51
なんか途中から前提が変わっていて違うパターンを見て許容できるという流れになっているなぁ。
| ||||
|
投稿日時: 2008-11-07 21:05
設計書に従うんじゃないですか?
私は、設計書と違うインプリメントは却下です。 | ||||
|
投稿日時: 2008-11-08 17:26
ご無沙汰してます。(え?してない?^^;
自分の意見としては「許容しない」ですね。 理由としては 「スマートでない」 「ELSEを見落とし安くバグに繋がる可能性がある」 などがありますが、単純に見てて「気持ちが悪い」というのもあります。 |