以下のコードで、外部メソッド パラメーター ( ) としてプライベート メンバー を渡すことは_field
、class Foo
SOLIDプログラミング プラクティスのOpen/Closed 原則Bar.DoSomething(_field)
に違反しますか?
オブジェクト指向プログラミングでは、オープン/クローズの原則により、「ソフトウェア エンティティ (クラス、モジュール、関数など) は、拡張に対してオープンである必要がありますが、変更に対してクローズされている必要があります」と述べられています。つまり、そのようなエンティティは、ソース コードを変更せずに動作を拡張できます。
私が理解しているように、エンティティは拡張に対して開かれている必要がありますが、変更に対しては閉じられています。ただし、この場合、 is はand is_field
のコンストラクターで一度設定されます。プライベート メンバーを外部メソッドのパラメーターに渡すことは、オープン/クローズの原則またはその他のベスト プラクティスに違反していますか?Foo
readonly
public class Foo
{
private readonly int _field;
public Foo(int input)
{
_field = input;
}
private void FooDoSomething()
{
Bar.BarDoSomething(_field); //Breaking Open/Closed Principle?
}
}
public static class Bar
{
public static void BarDoSomething(int input)
{
//Something happens
}
}