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

オブジェクト指向を学んでから20年間でモヤったこと / Object-Oriented-gro...

moomoo-ya
February 05, 2020

オブジェクト指向を学んでから20年間でモヤったこと / Object-Oriented-groomy-in-20-years

moomoo-ya

February 05, 2020
Tweet

More Decks by moomoo-ya

Other Decks in Programming

Transcript

  1. #ooltjp 鈴木 勇 / Isamu Suzuki @moomooya 株式会社ラクス • 新卒採用イベントやったり

    • 技術選定したり • 社内傭兵やったり • 社内勉強会開いたり • OORC出まぁす! • Node.jsおじさん • Pythonおじさん AtCoderはまだ灰色 • 勉強会レポ最速おじさん • MSA考えるの好きおじさん • アナログゲームデザイナー
  2. #ooltjp Moya1: プロダクトコードでのJava • あまり機能が使われていなかった ◦ 多態性 ◦ 継承(Abstract, Interface)

    ◦ (思い出したら) • 実装者のレベルがばらつくため制限 ◦ まあ分かる……わかる……けど ◦ 当時SIerで半分くらい派遣エンジニア、という環境でした
  3. #ooltjp DI的な実装 public class App { private static final Dependency

    processor = new DependencyImpl(); public static void main(String[] argv) { Client client = new Client(processor); client.run(); } } public class AppTest { private static final Dependency processor = new DependencyMock(); public static void main(String[] argv) { Client client = new Client(processor); client.run(); } }
  4. #ooltjp DI的な実装 public class App { private static final Dependency

    processor = new DependencyImpl(); public static void main(String[] argv) { Client client = new Client(processor); client.run(); } } public class AppTest { private static final Dependency processor = new DependencyMock(); public static void main(String[] argv) { Client client = new Client(processor); client.run(); } } 本番用実装 モック実装 ←テストコード
  5. #ooltjp DI的な実装 public class App { private static final Dependency

    processor = new DependencyImpl(); public static void main(String[] argv) { Client client = new Client(processor); client.run(); } } public class AppTest { private static final Dependency processor = new DependencyMock(); public static void main(String[] argv) { Client client = new Client(processor); client.run(); } } 本番用実装 テスト用モック ←テストコード DIでの切り替えケースが • モック利用 • テストケース くらいならこれで十分 より複雑な切り替えが必要→DIコンテナは有用 そんな複雑なシステムどれだけある? (そしてそんな複雑なシステムだとリブートなしで切り替えたかったりもする)