多くの人がこの記事を知っています:ゲッターとセッターの詳細。ゲッター/セッターの邪悪な側面を描写するという説得力のある仕事をしていると思います。また、既存のプロジェクト(未完成)をゲッター/セッターなしのコードに変換してテストしました。機能した。コードの可読性が大幅に向上し、コードが減り、最初は本当に必要だと思っていたゲッター/セッターを取り除くことができました。1か所を除いて。
モデルをビュー部分に配置することは、このアプローチがポイントを逃していると私が思うところです。この記事では、作成者はビルダーを使用してモデルをエクスポートします。問題は、ゲッターで得られるものと同じくらい多くの制御がビルダーに入れられることです。はい、モデルでの表現方法である実装を非表示にします。しかし、ゲッターは、そこに入れられたものとは非常に異なる何かをモデルから抜け出すことはありません。コンストラクターを介して「5」を渡すMoneyオブジェクトを作成する場合、money.getAmount()は、これを他の通貨に変換したり、1つの要素「5」を含む配列として返したりしません。
あなたが設定したものが得られます。そして、ビューを介して値を設定し、最初に設定したものを保持することになっているオブジェクトから値を要求(取得)するときに期待する値を設定します。これらをエクスポートするビルダーは、同じことを期待しています。
これは質問には少し長いです。しかし、私は自分の見解に挑戦したいと思います。ゲッターとセッターは、モデルデータをビューレイヤーに転送するのに悪ですか?
ゲッター/セッターはまったく悪ではないと考える人はたくさんいます。私が言及した以外の場所では彼らは悪であると思うので、これも私が擁護したいと思っていることではありません。