できるだけコードに仕様を埋め込む努力をしよう

例えばこんな仕様がありました。


鼻毛を処理する道具があれば鼻毛処理ができる。

道具には、鼻毛抜き、鼻毛カッターがある。

これに対してこんなコードがありました。


001 If 鼻毛抜きの在庫 > 0 OrElse _
002 鼻毛カッターの在庫 > 0 Then
003 鼻毛処理()
004 End If

これでも、確かに仕様を実現していますが、より仕様を埋め込んだ方が後から読んだ時に分かりやすいので


001 If 鼻毛処理の道具がある() Then
002 鼻毛処理()
003 End If
004
005
006 Private Function 鼻毛処理の道具がある() As Boolean
007 If 鼻毛抜きの在庫 > 0 Then
008 Return True
009 End If
010
011 If 鼻毛カッターの在庫 > 0 Then
012 Return True
013 End If
014
015 Return False
016 End Function

こんなコードにします。
仕様がよりコードに埋め込まれ、
また

鼻毛処理の道具がある から 鼻毛処理 ができる。


と、より自然に読むことができるようになりました。

どうでもいいですが、後から、道具の種類に電動鼻毛カッターが増えても安心です。