【アーキテクチャ アンチパターン】Swiss Army Knife

どんな問題?

  • クラスが複雑すぎるインターフェースをもつこと
    • 設計者がクラスの利用ニーズに対して,すべて満たそうとした結果,下記を失ってしまった状態
      • 明快な抽象化
      • クラスの目的
  • Swiss Army Knivesは,商用ソフトのインターフェースに多い.
    • ベンダーがプロダクトを様々なアプリに適用させようとした結果
  • インターフェースの複雑さが引き起こす問題
    • 他のプログラマが読みにくくなる
    • デバッグが難しくなる
    • ドキュメント化が難しくなる
    • 保守が難しくなる

f:id:yusuke_ujitoko:20161129224019p:plain:w500

どう解決する?

profileをつくる
  • 複雑なインターフェースをもつクラスの慣習的な利用法を定義しておく
    • これをprofileをつくるという.
  • profileとは
    • 複雑な技術を使う方法を説明するための書類
    • よくあるのが,実装方法を規定したもの
      • 二人のプログラマがだいたい同じ方法で実装するようになる.
  • profileは通常,パラメータの値などの既定値を定めたりするが,
    アプリの動的な振る舞いまで定義して良い
    • 実行の順序
    • 関数呼び出し
    • 例外ハンドリング