昨天我从假期回来工作,在我们的日常站立中,我的队友们提到他们正在重构我们的java代码中的所有模型对象以删除所有的getter和setter,并使模型字段成为所有公共对象,调用Law of Law德米特之所以这样做是因为
为了方便我们遵守得墨忒耳定律:模块不应该知道它操纵的"物体"的内部.由于数据结构不包含任何行为,因此它们自然会暴露其内部结构.因此,在这种情况下,德米特不适用.
我承认我必须了解我对LoD的了解,但对于我的生活,我找不到任何迹象表明这符合法律的精神.我们模型中的getter/setter都不包含任何业务逻辑,这是他这样做的理由,因此这些对象的客户端无需了解是否在get/set方法中执行了某些业务逻辑.
我认为这是对需要"对象结构的内部知识"意味着什么的误解,或者至少在字面意义上并且在这个过程中打破了一个非常标准的约定.
所以我的问题是,直接暴露模型对象内部结构而不是通过LoD名称中的getter/setter实际上是否有意义?