更新:我最初的问题不是很清楚。我正在寻找像下面示例这样的代码违反的原则的名称。
(我更新了代码示例以更好地类似于我正在谈论的场景。我包含的原始代码示例可以在底部找到。这是一个选择不当的示例,因为它说明了一个实际上应该提供访问的层次结构任意“深度”级别的子成员,而且几乎与构图无关,这就是我要问的问题。)
我很确定这有一个术语,我只是想不出它。
错误代码示例:
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;