Boolean型Function作成時のコーディング規約

Boolean型Function作成時のコーディング規約

f:id:akashi_keirin:20190813075140j:plain

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を書かなくてはいけなくなるので却ってめんどくさい。メソッド名は必ず冒頭と最後に出てくるので、修正漏れリスクも極小だと思う。

コーディングの作法については、人それぞれに色んな考えがあるので、色々な理屈に触れてみたい。