「淡路島の電車の運行状況を聞いた話」をシステム開発に置き換えてみるはただの設計ミス

@irof氏の「淡路島の電車の運行状況を聞いた話」をシステム開発に置き換えてみるについてはNullObjectパターンを適用する形で終わってるけれども、それはちょっとおかしい気がする。

そもそもなぜ、淡路島はget路線()メソッドを持っているのだろうか?

"淡路島クラス"が存在すると考えよう。
"淡路島クラス"自体は"地域インターフェース"を実装していると考えられる。

  class 淡路島 implements 地域

すべての地域が路線を持っていなければいけないのだろうか?いや、そんなことはない。
地域とは別に路線敷設地域(仮称)というインターフェースがあってしかるべきではないだろうか。

  class 東京 implements 地域, 路線敷設地域

淡路島自体に路線はないわけだから路線敷設地域インターフェースは実装しているわけがない。
よって、get路線()メソッドがあることがそもそも間違いだと考える。

必ず実装しなければいけないメソッドが必ずnullを返す時点でインターフェースが適切に分割されてないことを疑うべきではないではないか。

と、昼休み10分でまとめてみる。