アレン・ホルブは次のように書いています。
何らかの結合なしにプログラムを作成することはできません。それにもかかわらず、オブジェクト指向 (オブジェクト指向) の原則に従うことで、結合を大幅に最小限に抑えることができます (最も重要なのは、オブジェクトの実装を、それを使用するオブジェクトから完全に隠す必要があるということです)。たとえば、オブジェクトのインスタンス変数 (定数ではないメンバー フィールド) は、常に非公開にする必要があります。限目。例外なく。これまで。私は真剣です。(保護されたメソッドを効果的に使用できる場合もありますが、保護されたインスタンス変数は忌まわしいものです。)
それは理にかなっているように聞こえますが、彼は続けて次のように言います。
同じ理由で、 get/set 関数を使用しないでください。それらは、フィールドを public にする方法が非常に複雑であるためです (ただし、基本型の値ではなく本格的なオブジェクトを返すアクセス関数は、返されたオブジェクトがクラスは設計における重要な抽象化です)。
率直に言って、これは私には非常識に聞こえます。
情報隠蔽の原則は理解できますが、アクセサーとミューテーターがなければ、Java Bean をまったく使用できません。モデルはビューのレンダリングを担当できないため、モデルにアクセサーなしで MVC 設計に従う方法がわかりません。
しかし、私は若いプログラマーであり、オブジェクト指向設計について日々学んでいます。おそらく、経験豊富な人がこの問題に加担できるでしょう。