質問

読んだばかりです SRP、123と同じくらい簡単です…, 、そしてそれはすべて「凝集」という名前のセクションで私と共鳴します(私は以前に「取得」することを主張しましたが、このパラメーターの話とインスタンスフィールドの話は私に一時停止を与えます...):

あなたのクラスを取ってください。あなたの方法を見てください。彼らはパラメーターを持っていますか、それともインスタンスフィールドを使用していますか?パラメーターを使用している場合は、削除します。それらをインスタンスフィールドにします。 5つのインスタンスのいずれかを使用する方法になりますか?それはおそらく、その方法とあなたのクラスの間に存在する低い凝集の警告です。

このパラメーターの削除は、静的性(低い凝集)に近づいている方法を明らかにするための一時的な演習であり、完了時にパラメーターの使用に戻るという考えです。

または、たとえばパラメーターよりもフィールドの好みは、高い結束を維持するための実際の設計手法ですか?

私はどういうわけか引用を文脈から外しましたか?

役に立ちましたか?

解決

CRUDは、インターフェイスベースのプログラミングに対する実際の一般的なアプローチです。 CRUDインターフェイスを実装する2つのコンクリートクラスの従業員と建物を取ります。

ここで、コードがパラメーターに基づいているように見える方法を想像してみてください。

Employee employeeObj = new Employee();
Building buildingObj = new Building();

string firstName = "Bob";
employeeObj.Create(firstName);

建物はどうですか?

BuildingTypes buildingType = BuildingTypes.One;
building.Create(buildingType);

woops ...さまざまなパラメーターでCRUDインターフェイスをどのように実装することになっていますか?オーバーロードを作成しますか?より多くのインターフェイス? 2つのParams(FirstName LastName)はどうですか?

これは非常に速くなります.... CRUDインターフェイスを備えたパラメーターを使用するとすぐに、変更する理由が複数あるため、デザインの結束が減少します。

オブジェクト/インスタンスベースのパラメーションを使用してみましょう...

Employee empObj = new Employee();
empObj.FirstName = "Bob";

empObj.Create();

Building buildingObj = new Building();
buildingObj.BuildingType = BuildingTypes.One;

buildingObj.Create();

シンプルなクラッドとパラマリは、多型を振りかけることさえできません。

someObj.Create();

これは、カプセル化された組成、デカップリング、SRPなどにもつながります...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top