読みやすいコードのガイドライン -持続可能なソフトウェア開発のために

本日読了。

良書。

  • 命名、コメントの章は、類書と同様。
  • 状態。ミュータブルは必ずしも悪いことではなく、必要な場合がある。その際も、変数が直交(相互依存しない)であるようにする(直交していない変数は関数化する or Kotlin Sealed Classを使う)。冪等性(状態遷移関数を複数回操作しても1回の操作と変わらないこと)、非巡回(自己ループを取り除いた場合)を意識すること。
  • 関数。単一責任の原則。コマンド・クエリの分割はすべき場合(コマンドが主たる結果のみ返す場合)とそうでない場合(コマンドが副次的な結果も返す場合)がある。長いメソッドチェインは適当に分割する。早期リターンでアンハッピーパスの処理を関数の最初にまとめ、流れを理解しやすくする。
  • 依存関係。結合度: 内容結合は避け、共通結合・外部結合・制御結合は緩和すべき場面がある。方向: 不要な巡回は避ける。重複、数珠繋ぎの依存や依存の集合の重複は避ける。明示性: 過度な抽象化や暗黙的な変域は避ける。