勤勉なエンジニアの勉強記録

毎日少しずつ学ぶ

良いコード/悪いコードで学ぶ設計入門―保守しやすい 成長し続けるコードの書き方

フラゲするために東京駅まで行って買った本。

初心者向けだけど、内容が実践的で良かった。

  • 1章 悪しき構造の弊害を知覚する
  • 2章 設計の初歩
  • 3章 クラス設計
  • 4章 不変の活用
  • 5章 低凝集
  • 6章 条件分岐
    • ストラテジーパターン
    • ポリシーパターン

  • 7章 コレクション
    • ファーストコレクション

  • 8章 密結合
    • 同じロジックでも概念が違えば、DRYにすべきでない

  • 9章 設計の健全性をそこなうさまざまな悪魔たち
    • ビジネス概念でパッケージを来る
      • 確かにアクセス修飾語をうまく使えそう

  • 10章 名前設計
    • 目的駆動名前設計
      • 関心ごとにふさわしい命名
    • 商品は、目的不明なオブジェクト
    • 命名で迷ったらこの章を見直す
    • 約款読むのは良さそう

  • 11章 コメント
    • 退化コメント

  • 12章 メソッド(関数)
    • 尋ねるな、命じろ
      • 低凝集構造:別のクラスの状態を意識したり、変更する
    • コマンド・クエリ分離
  • 13章 モデリング
    • モデル
      • 物事の特徴や関係性を図式化したもの
      • 特定の目的達成のために最低限考慮が必要な要素を備えたもの
        複数目的のために無理やり利用されているモデルはモデリングが足りない!
      • 目的達成手段であるシステムの一部
        目的駆動で名前設計することが適切にモデリングできる
    • モデリング:モデルを作る活動
    • UMLでクラス図作った方が良さそう。javaでそういうツールないのかな。
    • 単一責任とは単一目的
      • クラスが果たす目的は、たった一つに限定すべき
    • 責務とは目的
    • 深いモデル
      • 本質的課題を解決し、機能性の刷新に貢献するモデル(法務の例
  • 14章 リファクタリング
    • レガシーコード改善ガイドを読んだ方が良さそう

  • 15章 設計の意義と設計への向き合い方
    • 木こりのジレンマ
    • 知覚容易な課題と知覚困難な課題
    • 理想系を知って初めて課題を知覚できる

  • 16章 設計を妨げる開発プロセスとの戦い
  • 17章 設計技術の理解の深め方
    • 様々な書籍が紹介されているので、積読がなくなったら読んでみる