这是否违反了德墨忒尔法则?
这是否违反了德墨忒尔法则?
private void MoveEmptyCells()
{
IEnumerable<Cell> cells = this.internalGrid.GetAllEmptyCells();
foreach(Cell cell in cells)
{
cell.RowIndex += this.moveDistance; // violation here?
}
}
这个怎么样?
private void MoveEmptyCell()
{
Cell cell = this.internalGrid.GetEmptyCell();
cell.RowIndex += this.moveDistance; // violation here?
}
Is this a violation of the Law of Demeter?
private void MoveEmptyCells()
{
IEnumerable<Cell> cells = this.internalGrid.GetAllEmptyCells();
foreach(Cell cell in cells)
{
cell.RowIndex += this.moveDistance; // violation here?
}
}
How about this one?
private void MoveEmptyCell()
{
Cell cell = this.internalGrid.GetEmptyCell();
cell.RowIndex += this.moveDistance; // violation here?
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
德墨忒尔定律说:
this.moveDistance; // O 本身的方法。
返回一个没有行为的 RowIndex 对象,因此 Demeter 不适用。
Law of Demeter says:
this.moveDistance; // Method of // O itself.
Return a RowIndex object with no behavior, and so Demeter does not apply.
如果没有打破的话,那就是稍微弯曲了德米特定律。
您可以尝试以某种方式实现它,以便您可以调用:
It is if not breaking, then it is slightly bending the Demeter Law.
You could try implementing it in a way so that you can call: