クオリティの差異を吸収する
色んな理由でコードや設計のクオリティが下がる場合がある
厳しいdeadline
仕様が曖昧
触ってるシステムが複雑すぎる
スキルセットのミスマッチ
どうやって生産性を最大化するか
クオリティが低いとは?
技術負債
間違った抽象化の導入
実装
動作の誤り
crashする
エッジケースでバグがある
計算機リソースの浪費
アルゴリズム的
時間 / ストレージ空間
リソースリーク
抽象化の限定: インターフェースを制限する
使えるリソースを限定する
誤りの限定
正しさ: コードレビュー / 受け入れテスト / assert
APIでなんとかなるならそっちのほうがいい
関心の分離
コードとデータ