Fluent API
Fluent APIは、ドメインの語彙で一連の操作を読めるように設計したAPIです。メソッドチェーンは実装手段の一つであり、チェーンできるだけではFluent APIとは呼びません。
採用する場面
- 設定、検索条件、テスト期待値などを宣言的に組み立てる
- 操作の自然な順序があり、補完によって次の選択肢を案内できる
- 利用頻度が高く、呼び出し側の読みやすさへ投資する価値がある
単純な関数呼び出しより意味が曖昧になる場合や、各メソッドを単独で理解できなくなる場合は採用しません。非同期処理や重いI/Oを長いチェーンに隠すと、失敗地点や性能を追いにくくなります。
実装方針
- 実際の利用コードを先に書き、ドメインの文として読めるか確認する
- 中間状態で許可する操作を型と補完で絞る
- チェーンにするのは設定や条件を組み立てる操作に限り、計算結果を返す操作は通常の戻り値にする
- 実行する終端操作と、値を組み立てるだけの操作を区別し、終端は
build()、execute()、toXxx()など確定を表す名前で統一する - mutableかimmutableかをAPI契約として明確にし、呼び出し側に推測させない
- チェーン内で発生する検証、I/O、副作用を隠さない