更新:私の最初の質問は明確ではありませんでした。以下の例のようなコードが違反している原則の名前を探しています。
(私が話しているシナリオによりよく似るようにコード例を更新しました。私が含めた元のコード例は一番下にあります。任意の「深さ」レベルのサブメンバーであり、さらに構成とはほとんど関係がありませんでした。これは、私が質問するつもりだったものです.)
これには用語があると確信していますが、それを考えるのに苦労しています。
悪いコードの例:
public interface IJumper
{
void Jump();
}
public class Creature
{
public IJumper Jumper;
}
var c = new Creature();
c.Jumper.Jump();
より良いコードの例:
public class Creature : IJumper
{
private IJumper _jumper;
public void Jump()
{
_jumper.Jump();
}
}
var c = new Creature();
c.Jump();
[ここに原則の名前を挿入] のために、これ (メンバーオブジェクトを直接公開して、そのすべてのプロパティ/メソッドにパブリックにアクセスできるようにすること) が悪いこととして説明されていることを聞いたことがあると確信しています。私が探している言葉は何ですか?
(なぜこれが悪いことなのか/悪いことなのかを尋ねているわけではないことに注意してください。私は単に用語を探しているだけで、私の人生では覚えていません。)
元の (悪い) コード例:
public class Person
{
public Person Child;
// ...
}
Person p = new Person("Philip J. Fry");
// what is the term for this?
Person greatGrandchild = p.Child.Child.Child;