boolean型の関数がデフォルトで返すFalseは利用すべきか?

解決


ごーご  2007-09-21 03:05:56  No: 99454

VB6.0でboolean型の値を返す関数を作るとき、返す値を明示しなければ自動的にFalseが返されるようになっているようですが、この事実は自明のものとして一般に利用して差し支えないのでしょうか。

例えばある整数が偶数かどうかを調べるときに、以下のサンプルで示した一文を明示する必要はないと考えていて差し支えありませんか?

Public Function IsEven(ByVal iVal As Integer) As Boolean
    If iVal Mod 2 = 0 Then
        IsEven = True
    Else
        IsEven = False     '←この一文はあった方がよい?ない方がよい?
    End If
End Function

非常に細かいことだとは思うのですが、お考えをお持ちの方はどうかお聞かせください。よろしくお願いします。


ごーご(投稿者)  2007-09-21 03:10:23  No: 99455

改行を入れるべきでした。
読みづらくてすみません。


我龍院  2007-09-21 03:51:25  No: 99456

普通の変数と同じように初期化されると考えると
どちらでも良いことになりますね。


魔界の仮面弁士  2007-09-21 04:34:23  No: 99457

> この事実は自明のものとして一般に利用して差し支えないのでしょうか。
たとえ冗長であっても、戻り値を明示した方が(人間には)分かりやすいと
いう意見もありますので、差し支えるかどうかは、それぞれの開発者の
コーディング仕様に依存するかと思います。

しかしながら、言語仕様的には、Boolean 型の場合は、常に False が
初期値として代入されるため、未初期化のままでも問題はありません。

ちなみに、ヘルプ上における説明はこのあたり。

[Visual Basic ドキュメント]
├[Visual Basic の使用方法]
│└[プログラミング ガイド]
│  └[Visual Basic の基本]
│    └[プログラミングの基礎]
│      └[変数、定数、およびデータ型]
│        └[変数、定数、およびデータ型]
│          └[データ型]★1
└[リファレンス]
  └[ランゲージ リファレンス]
    └[ステートメント]
      └[A-H]
        └[Function ステートメント]★2

※1 の『データ型』の項には、「ブール型」に対して下記のように説明されています。
》 ブール型変数は、真 (True) または偽 (False) のいずれか一方を表し、
》 既定値は偽 (False) です。

※2 の『Function ステートメント』の項には、下記のように説明されています。
》 Function プロシージャから値を返すには、値を Function プロシージャ名に
》 代入します。プロシージャ名には、Function プロシージャ内の任意の場所で、
》 必要に応じて何回でも値を代入できます。プロシージャ名 name に値を
》 代入しない場合、既定の戻り値が返されます。
》 既定の戻り値は、Function プロシージャが数値型の場合は 0、文字列型の場合は
》 長さ 0 の文字列 ("")、バリアント型の場合はEmpty 値です。オブジェクトへの
》 参照を返す Function プロシージャでは、プロシージャ内で Set ステートメントを
》 使ってプロシージャ名 name にオブジェクトへの参照を代入しない場合は、
》 Nothing が返されます。

※2 では、「ブール型」に対する明示的な説明はありませんが、※1 と組み合わせることで、
プロシージャ名変数に代入していないときは False が初期値であると読み取ることができます。


ごーご(質問者)  2007-09-21 18:10:14  No: 99458

我龍院様、魔界の仮面弁士様、ご回答ありがとうございます。
ことに魔界の仮面弁士様には、懇切丁寧なご説明に感謝いたします。

感覚的なわかりやすさとしては、やはり明示した方がよさそうなので、
積極的に記述をしていこうと思います。ありがとうございました。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加