- PR -

空のIF文を書きますか?

投票結果総投票数:260
許容できる 85 32.69%
許容できない 148 56.92%
どちらでもよい 27 10.38%
  • 投票は恣意的に行われます。統計的な調査と異なり、投票データの正確性や標本の代表性は保証されません。
  • 投票結果の正当性や公平性について、@ITは一切保証も関与もいたしません。
投稿者投稿内容
やんち
常連さん
会議室デビュー日: 2008/10/24
投稿数: 32
投稿日時: 2008-11-09 01:41
if 文が空であるかどうかは、あまり気にしません。

if elseを多用する時は、

コード:
if (条件) {
	// 正常時の処理
	// 何もない場合は、「何もしない」とコメントしておく
} else if (条件) {
	// エラー処理
	// エラー処理は、基本的に発生頻度の高い順に書く。
} else if (条件) {
	// エラー処理
	// エラー処理は、基本的に発生頻度の高い順に書く。
} else if (条件) {
	// エラー処理
	// エラー処理は、基本的に発生頻度の高い順に書く。
} else {
	// その他の場合の処理
}



とする事が多いです。

また、この形で、読みかけに慣れてくると、
コード:
// 正常時の処理がない場合
if (Not(条件)) {
	// エラー処理
}


も読みにくい場合もあります。
Izumi, Y.
ベテラン
会議室デビュー日: 2002/03/19
投稿数: 77
お住まい・勤務地: 東京
投稿日時: 2008-11-09 02:45
個人的意見になりますが,以下の両者のコードには微妙なニュアンスの違いがあると考えています.

コード:

' Code #1
Sub Validate(Arg As SomeType)
    If Not IsValid(Arg) Then
        Throw New FoobarException()
    End If
End Sub

' Code #2
Sub Validate(Arg As SomeType)
    If IsValid(Arg) Then
        ' do nothing
    Else
        Throw New FoobarException()
    End If
End Sub



前者は「引数が妥当でないときは例外を投げる」ということに主眼が置かれています.引数が妥当なときは「結果として」何もしないといった印象です.一方,後者では「引数が妥当なときは(プロシージャの仕事は引数の妥当性確認だけなので)何もしない」ということが明示的に記されています.

ただし,行数などの問題があることは確かなので,私自身でも両者をきちんと使い分けているわけではありません.特に,上記の例であれば,プロシージャの名前から意図が明確に伝わるので,わざわざ後者の記法をとる必要もないという考えもあるでしょう.

実行効率の問題に関しては,現在のコンパイラならば最適化をかけるだけで基本的には解決するので,ことさらに問題視する必要はないと思います.
yggdra
会議室デビュー日: 2008/11/09
投稿数: 1
投稿日時: 2008-11-09 03:26
空のIF分に「何もしない」などのコメントがあるなら許容できます。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2008-11-09 12:11
この問題は、いわゆる「0件」(や0行、0個、...)を特別扱いするかどうか、ということにも関連するのかな?と、ふと思いました。(ちなみに私は、0件は極力、特別扱いしないという主義です。)

要は、「空のIF文」 = 「Then の中の処理文の行数が0行」 ということであり、かつ、0件は特別扱いする、というポリシーが前提にあると、空のIF文は許容しない、という結論になると思います。

もし私が今、アンケートをとるとしたら、
・0件を特別扱いしますか?
・空のIF文を許容しますか?
という2項目を聞きたいところです。

0件は、空のIF文よりもさらに抽象的な概念だと考えることができるのではないかと思いますので、もしその前提が成り立つならば、まず0件で分けて考えて、その後に空のIF文を考える、ということができるかもしれません。
ノラ
常連さん
会議室デビュー日: 2003/11/06
投稿数: 37
お住まい・勤務地: 東京都
投稿日時: 2009-02-24 15:49
COBOL85のcontinue文やORACLE PL/SQLのNULL文のように何もしないことが保障されているものもあるので、そんな場合にはありかもしれません。(NOT条件のほうが分かりにくい場合)
saki1208
ベテラン
会議室デビュー日: 2006/08/22
投稿数: 86
投稿日時: 2009-02-24 19:12
saki1208です。

私は場合によりけりだと思います。

単純な条件では問題はないですが、複雑な条件になるときは
NOT を付加することによりさらに分かり辛くなる場合がある
と思います。

NOT を付加しない方が直観的に理解できそうなときは、あえ
て空の分岐を記述する場合があります。

もちろん、コメントで明記しますけどね。

スキルアップ/キャリアアップ(JOB@IT)