/note/tech

クラスは、レコード(データ構造)や制御手続きを表現するための良い仕組みではない

金額、数量、日付のように値の種類を表現するクラス名は、適切な値の範囲と必要な計算ロジックを記述する計算指向の設計。

顧客、商品、注文のようにデータ項目を集めたレコード的なクラス名は、入出力駆動の設計。

マネージャー、コントローラ、プロセッサとかのクラス名の関心は、動作の制御。

@masuda220

レコード的なクラス名や、制御的なクラス名は、オブジェクト指向らしくないというか、そもそもクラスを使う必然性はない。

Javaのように、クラス宣言が必須の言語でレコードや制御手続きの入れ物として、無理矢理、クラス名にしている感じ。

@masuda220

データとロジックを一つの入れ物に閉じ込めて、それを一つのモジュールとしてコードを整理する仕組みとしてクラスは便利なやり方。

クラスは、レコード(データ構造)や制御手続きを表現するための良い仕組みではない、

@masuda220

ここで重要なのは「ドメインロジックの設計/実装については、制御構造を意識したクラスはNG」という話で、F/Wやライブラリを作る場合は制御構造を意識した設計はむしろ正しくなる(それらは制御構造自体が主要な観点になるので)。