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

『オブジェクト指向設計実践ガイド』を読もう(2016/12/16 社内勉強会)

Yoko TAMADA
December 16, 2016

『オブジェクト指向設計実践ガイド』を読もう(2016/12/16 社内勉強会)

『オブジェクト指向設計実践ガイド 〜Rubyでわかる進化しつづける柔軟なアプリケーションの育て方』を読んで「みんな読めばいいのに!」という強い思いを発表しました。

Yoko TAMADA

December 16, 2016
Tweet

More Decks by Yoko TAMADA

Other Decks in Programming

Transcript

  1. An Agile Primer Practical Object-Oriented Design in Ruby Yoko TAMADA

    @tmd45 2016-12-16 feedforce Inc. 日本語版
  2. POODR will help you from www.poodr.com ❖ Decide what belongs

    in a single class ❖ Avoid entangling objects that should be kept separate ❖ Define flexible interfaces among objects ❖ Reduce programming overhead costs with duck typing ❖ Successfully apply inheritance ❖ Build objects via composition ❖ Design cost-effective tests ❖ Craft simple, straightforward, understandable code
  3. POODR will help you from www.poodr.com ❖ 1つのクラスに属するものを決める ❖ 分けられているべきオブジェクトがもつれないようにする

    ❖ オブジェクト間の柔軟な「インターフェース」を定義する ❖ 「ダックタイピング」でコーディングのオーバーヘッドコストを削減 ❖ 「継承」を正しく適用する ❖ 「コンポジション」を使ってオブジェクトを生成する ❖ 費用対効果の高いテストの設計 ❖ シンプルで、わかりやすく、理解できるコードを作成する
  4. ❖ アプリケーションを「部品」で構成する ❖ 部品は相互に作用し合い、全体の振る舞いが生まれる ❖ 部品とは「オブジェクト」 ❖ 相互作用はオブジェクト間で受け渡される「メッセージ」 ❖ メッセージの送り手は、受け手のことを知っている必要がある

    ➢ 知っている=2つのオブジェクトの「依存関係」となる ➢ 依存関係は変更を邪魔する オブジェクト指向設計とは「依存関係を管理すること」 Object-Oriented design? オブジェクト指向設計とは - 第1章 オブジェクト指向設計
  5. ❖ アジャイル開発のよくわからなかった部分がわかった ➢ 顧客と共同作業をし、ソフトウェアは一度に小さな単位でつくり、そのときそれぞれの単位が次のア イディアを得る機会となることを目指す ➢ 真実1:前もってつくる全体の詳細設計( Big Design Up

    Front)にはまったく何の意味もない ➢ 真実2:アプリケーションの完成時期は誰にも予測できない ➢ この事実により "顧客とプログラマは必然的に敵対する " が、アジャイルを有効にするにはソフト ウェアがかたちになる「前」に確かさを手に入れることはできないと認めること 全体の詳細設計(BDUF)ではなく 変化を受け入れるための「設計」はむしろ必要とされるものである With Agile development アジャイル開発
  6. ❖ 親子関係だけでは理解できなかった「実践的な」オブジェクト指向設計 ➢ とくに実際の改善例が Ruby で書かれていて、Ruby ならこうすると上手くいくというのが分かりやす い。そこから Ruby に限らずにオブジェクト指向設計を学べる

    ❖ オブジェクトの「インターフェース」を考えることに集中したら「公開しない部分」の実 装に迷いが減った ❖ クラスに含まれている何かを別のオブジェクトとして捉らえて切り分ける考え方が以 前よりスムーズにできるようになった ❖ とにかく大切なのは「変更を受け入れられるように」作ること ➢ 疎結合とか単一責任とかはすべてそのために存在するということ With Object-Oriented Design オブジェクト指向設計
  7. ❖ 最初から順に読んでいくとスッと入ってくる良書! ➢ 導入・文化(アジャイル開発との関連)・概要 ▪ 第1章 オブジェクト指向設計 ➢ パターンと実装 ▪

    第2章 単一責任のクラスを設計する ▪ 第3章 依存関係を管理する ▪ 第4章 柔軟なインターフェースをつくる ▪ 第5章 ダックタイピングでコストを削減する ▪ 第6章 継承によって振る舞いを獲得する ▪ 第7章 モジュールでロールの振る舞いを共有する ▪ 第8章 コンポジションでオブジェクトを組み合わせる ▪ 第9章 費用対効果の高いテストを設計する How to read 本書の読み方 関係の選択(p.233)
  8. ❖ 1つのクラスに属するものを決める ❖ 分けられているべきオブジェクトがもつれないようにする ❖ オブジェクト間の柔軟な「インターフェース」を定義する ❖ 「ダックタイピング」でコーディングのオーバーヘッドコストを削減 ❖ 「継承」を正しく適用する

    ❖ 「コンポジション」を使ってオブジェクトを生成する ❖ 費用対効果の高いテストの設計 ❖ シンプルで、わかりやすく、理解できるコードを作成する 終 ────── ⓣⓜⓓ POODR will help you from www.poodr.com