普段Boolean
を返すメソッドというとisFooBar()
という名前になっているからどういう挙動をしているか一目瞭然なのだけれど、たまに副作用の結果をBoolean
で返すメソッドがある。
def isEmpty(): Boolean = { ... } // 一目瞭然 def createFooBar(): Boolean = { ... } // ???
どういう挙動をしているかは実装を見ればそれで良いのだけれど、呼び出し元からわざわざ実装を見に行くのは不便だし、Dependency Inversion Principleとかを使って抽象化されていたりすると何も分からない・・・となりがち。いったん具象に飛んでああそういう事ね、と理解するという手間がかかる。
trait Abstract { def createFooBar(): Boolean } class Concrete extends Abstract { def createFooBar(): Boolean = ??? }
こういうときはtype ailasをつけて何しているかを明示すると分かりやすくなってお得。
trait Abstract { type IsModified = Boolean def createFooBar(): IsModified } class Concrete extends Abstract { def createFooBar(): IsModified = ??? }
呼び出す側からも、IDEがIsModified
と返り値の型を表示してくれるので、ははん変更されたかどうかを返すのだな、と合点できて便利。