Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

SOLID原則とは

1 637 vues

Publié le

SOLID原則について説明します

Publié dans : Design
  • Soyez le premier à commenter

SOLID原則とは

  1. 1. SOLID原則 佐久間 尚輝
  2. 2. 自己紹介
  3. 3. では、本題へ
  4. 4. アジェンダ SOLID原則とは? SOLID原則の中身 - 単一責任の原則 - オープン・クローズドの原則 - リスコフの置換原則 - 依存関係逆転の原則 - インターフェース分離の原則 まとめ
  5. 5. アジェンダ SOLID原則とは? SOLID原則の中身 - 単一責任の原則 - オープン・クローズドの原則 - リスコフの置換原則 - 依存関係逆転の原則 - インターフェース分離の原則 まとめ
  6. 6. SOLID原則とは? In object-oriented computer programming, the term SOLID is a mnemonic acronym for five design principles intended to make software designs more understandable, flexible and maintainable. The principles are a subset of many principles promoted by Robert C. Martin. Though they apply to any object- oriented design, the SOLID principles can also form a core philosophy for methodologies such as agile development or adaptive software development.(wikipediaより抜粋)
  7. 7.
  8. 8. ちゃんと説明させて いただきます
  9. 9. SOLID原則とは? ソフトウェアの設計を 理解しやすく柔軟にすることを 目的とした5つの設計原則のこと (オブジェクト指向のようなもの)
  10. 10. アジェンダ SOLID原則とは? SOLID原則の中身 - 単一責任の原則 - オープン・クローズドの原則 - リスコフの置換原則 - 依存関係逆転の原則 - インターフェース分離の原則 まとめ
  11. 11. SOLID原則の中身 単一責任の原則 - Single responsibility principle オープン・クローズドの原則 - Open/closed principle リスコフの置換原則 - Liskov substitution principle 依存関係逆転の原則 - Interface segregation principle インターフェース分離の原則 - Dependency inversion principle
  12. 12. アジェンダ SOLID原則とは? SOLID原則の中身 - 単一責任の原則 - オープン・クローズドの原則 - リスコフの置換原則 - 依存関係逆転の原則 - インターフェース分離の原則 まとめ
  13. 13. 単一責任の原則 クラスを変更する理由は 2つ以上存在してはならない
  14. 14. どういうこと? 1つのクラスには1つの役割
  15. 15. 悪い例 PlayerManagerクラス
  16. 16. 何が悪いの? ・1つのクラスの役割が多すぎる ・機能の修正、追加をする際 思わぬところで不具合が 発生する可能性がある
  17. 17. 改善 PlayerMoveクラス PlayerAttackクラス PlayerEffectクラス 処理ごとにクラスを分ける
  18. 18. アジェンダ SOLID原則とは? SOLID原則の中身 - 単一責任の原則 - オープン・クローズドの原則 - リスコフの置換原則 - 依存関係逆転の原則 - インターフェース分離の原則 まとめ
  19. 19. オープン・クローズドの原則 クラスは 拡張に対して開いていて、 修正に対して閉じて いなければならない
  20. 20. どういうこと? 仕様変更があった場合は 機能の追加を容易に出来る その際に既存のコードは 影響をうけない
  21. 21. 悪い例 プレイヤーの当たり判定
  22. 22. 何が悪いの? ・処理を記述し忘れても気付けない ・当たり判定が増えるたびに このif文が増える
  23. 23. 改善 if文の羅列もなくなり 変更に強いコードに Playerクラス
  24. 24. 改善 基底クラスやインターフェースを使って 抽象化する 当たったときの インターフェース Enemyクラス
  25. 25. アジェンダ SOLID原則とは? SOLID原則の中身 - 単一責任の原則 - オープン・クローズドの原則 - リスコフの置換原則 - 依存関係逆転の原則 - インターフェース分離の原則 まとめ
  26. 26. リスコフの置換原則 派生クラスはその基底クラスと 置換可能でなければならない
  27. 27. どういうこと? 基底クラスで決められた約束を 派生クラスで破ってはいけない
  28. 28. 悪い例 値段クラス 税込み価格クラス 悪い例クラス
  29. 29. 何が悪いの? 計算機クラス ・結果が違っているのに動いてしまう ・親クラスが望んでいる結果と違う ・チーム制作で起こりやすい 税込み価格クラスの 処理を知らない人が 作ったクラス
  30. 30. 改善 税込み価格クラス 専用の属性を用意してあげると 親の挙動を変更せずに 処理がおこなえる
  31. 31. アジェンダ SOLID原則とは? SOLID原則の中身 - 単一責任の原則 - オープン・クローズドの原則 - リスコフの置換原則 - 依存関係逆転の原則 - インターフェース分離の原則 まとめ
  32. 32. 依存関係逆転の原則 上位モジュールは 下位のモジュールに 依存してはならない どちらのモジュールも「抽象」に 依存すべきである
  33. 33. どういうこと? 上位クラスが方針を決め、 下位クラスがその方針に従う
  34. 34. 悪い例 Playerクラス PlayerのHPを記憶 するクラス
  35. 35. 何が悪いの? ・下位クラスに依存してしまっている ・他に記憶させたいものが 出てきた時にif文が増える
  36. 36. 改善 Playerクラス 記憶するインター フェース 下位クラスに依存せずに 抽象クラスに依存している
  37. 37. アジェンダ SOLID原則とは? SOLID原則の中身 - 単一責任の原則 - オープン・クローズドの原則 - リスコフの置換原則 - 依存関係逆転の原則 - インターフェース分離の原則 まとめ
  38. 38. インターフェース分離の原則 クライアントが利用しない メソッドへの依存を 強制してはならない
  39. 39. どういうこと? インターフェースは シンプルにする
  40. 40. 悪い例 Playerインターフェース
  41. 41. 何が悪いの? Playerインターフェース ・このインターフェイスを継承したクラスの メソッドを変更した場合、他のメソッドも 変更しなければならない可能性がある
  42. 42. 改善 当たったときのインターフェース インターフェイスの実装は 必要最低限にする
  43. 43. アジェンダ SOLID原則とは? SOLID原則の中身 - 単一責任の原則 - オープン・クローズドの原則 - リスコフの置換原則 - 依存関係逆転の原則 - インターフェース分離の原則 まとめ
  44. 44. まとめ SOLID原則はあくまで「原則」 なので、臨機応変に使用しよう
  45. 45. ご清聴ありがとうございました

×