Lambdaカクテル

京都在住Webエンジニアの日記です

Invite link for Scalaわいわいランド

返り値がBooleanのとき、Type Aliasすると分かりやすくなって便利

普段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と返り値の型を表示してくれるので、ははん変更されたかどうかを返すのだな、と合点できて便利。

★記事をRTしてもらえると喜びます
Webアプリケーション開発関連の記事を投稿しています.読者になってみませんか?