Boolean型Function作成時のコーディング規約
Boolean型Function作成時のコーディング規約
For
ループで回すときなんかに、そもそも処理をすべきなのかどうかを判定し、処理の必要がなければ飛ばす、ということがよくある。
処理の要不要を判定する条件が単純なら、ブロック内でIf
分岐すればよいが、判定条件がそこそこややこしくなってくると、判定処理そのものをメソッドとして括り出したくなる。
そういうときのコードの書き方について述べる。
条件に引っかかったら即return
現在のところ、私の方針は見出しのとおり。
たとえば、条件が(1)~(5)まであるとして、一つでも引っかかったらFalse
というisHoge
というBoolean
型メソッドを考える。
私は、次のように書くようにしている。
リスト1
Private Function isHoge(Byval arg As String) As Boolean isHoge = False If 条件(1) Then Exit Function If 条件(2) Then Exit Function If 条件(3) Then Exit Function If 条件(4) Then Exit Function If 条件(5) Then Exit Function isHoge = True End Function
こんな感じ。
条件判定のところは、Or
を使って書くこともできるが、一つでも引っかかったら即returnすればいいので、1行1行書いておいたほうが後で読みやすいと思う。
おわりに
メソッド名を変えたときに、二箇所修正しないといけないのが難点といえば難点。
しかし、返り値用変数ret
を使うやり方だと、即returnのたびにret
を書かなくてはいけなくなるので却ってめんどくさい。メソッド名は必ず冒頭と最後に出てくるので、修正漏れリスクも極小だと思う。
コーディングの作法については、人それぞれに色んな考えがあるので、色々な理屈に触れてみたい。