Upgrade to Pro — share decks privately, control downloads, hide ads and more …

秘伝のタレ.pdf

SatoshiN
May 28, 2019
23

 秘伝のタレ.pdf

SatoshiN

May 28, 2019
Tweet

Transcript

  1. まずは秘伝のタレの特徴を抽出する • 非同期処理の完了通知にNSNotificationCenter • → 可読性低下・複雑性循環 • 一つのViewController や ◯◯Manager

    に複数の責務 • → 責務肥大化 • 同じ責務の処理がバラバラに管理 • → 一貫性のなさ • MethodSwizzlingなど黒魔術の利用 • → 標準的な方法からの逸脱
  2. ただし状況によっては最適なケースもある • 非同期処理の完了通知にNSNotificationCenter • → 小規模で設計がMVCなら有り • ViewController や ◯◯Manager

    に複数の責務 • → 小規模・納期短い場合 なら有り • 同じ責務の処理がバラバラに管理 • → 逆に極端な再利用を考えると実装スピード落ちる • MethodSwizzlingなど黒魔術の利用 • → 黒魔術使ったほうがいい場合なら有り
  3. 設計選択の簡易フローチャート (フルスクラッチ版) 目的達成を 最優先で 最低限責務 (例 MVC) 小規模責務 (例 MVP)

    中規模責務 (例 VIPER) 大規模責務 (例Clean Architecture) 納期の余裕 案件の規模 継続開発見込み 納期の余裕 ネガティブ ポジティブ
  4. 秘伝のタレを紐解く・改善する • 非同期処理の完了通知にNSNotificationCenter • → 可読性低下・複雑性循環 • → 静的解析ツールをビルド毎に走らせる •

    → NSNotificationCenter による完了通知はMVC向きなの で方法を変更。Delegateパターンや closure, Promiseパ ターン, async / await を検討し利用する。
  5. 秘伝のタレを紐解く・改善する • ViewController や ◯◯Manager に複数の責務 • → 責務肥大化 •

    同じ責務の処理がバラバラに管理 • → 一貫性のなさ • → 静的解析ツールをビルド毎に走らせる • → Clean Architectureを採用。設計レベルで責務を分ける ことで実装者の関心を出来る限り責務分けから離す。設計に 一貫性をもたせる。