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

YAGNIのお話

chiroruxx
September 26, 2018

 YAGNIのお話

9/26 php勉強会@東京

chiroruxx

September 26, 2018
Tweet

More Decks by chiroruxx

Other Decks in Programming

Transcript

  1. ちなみにYAGNIとは ▪ “You ain’t gonna need it” ▪ (どうせ要らないって!) ▪

    機能は実際に必要になるまで追加しないほうが良い ということ – 後で使う予定の機能の90%は実際に使用されない
  2. とりあえず共通化 class CsvBuilder{ public function build($items, array $header): string {

    $stream = fopen('php://temp', 'w'); fputcsv($stream, $header); foreach ($items as $item) { fputcsv($stream, $item->toCsvRow()); } rewind($stream); return stream_get_contents($stream); } }
  3. YAGNIポイント1 public function build($items, array $header, bool $convert = false):

    string { $stream = fopen('php://temp', 'w'); fputcsv($stream, $header); foreach ($items as $item) { fputcsv($stream, $item->toCsvRow()); } rewind($stream); $contents = stream_get_contents($stream); if ($convert) { return mb_convert_encoding($contents, 'SJIS', 'UTF-8'); } return $contents; }
  4. YAGNIとは ▪ “You ain’t gonna need it” ▪ (どうせ要らないって!) ▪

    つまり、実装のコスト支払いをできる限り遅らせる取り組み ▪ XPのスローガンの「なんとか動いて、最も無駄のないものを作れ」を支えるプ ラクティスのひとつ
  5. YAGNIポイント ▪ 以下のようなものを作ろうとしたときには「本当に必要?」と自問しよう – フレームワーク – 再利用可能なコンポーネント – フレキシブルな設計 ▪

    エンジニアはキラキラした言葉に踊らされやすい ▪ パターンが使えるときも注意 – 必要ないのにコンストラクタインジェクションしてるコードはよく見かけ る ▪ ⇒本当に価値のあるものを作ろう