在Java中,当我有简单的模型/ pojos时,我使用getter / setter。我发现当你这样做的时候,代码会变成自我记录的。调用getName()将返回一个名称,我不需要关心它是如何映射到某个数据库的等等。
当使用getters和setter开始感觉笨拙的语言时会出现问题,比如Python,我常常听到有人说他们很糟糕。例如,有一段时间我有一个PHP项目,其中一些数据只是从数据库中查询,而列值映射到对象/字典。我发现这样的代码是令人讨厌的难以阅读,你不能真正只读代码,你读代码,然后你注意到值是从数据库中提取的,现在你必须通过数据库查看架构一直在理解它。当你所能做的就是查看类定义并知道那里没有任何未记录的魔术键。
所以我的问题是你们如何在没有getter和setter的情况下记录代码?
答案 0 :(得分:1)
在我看来,类中不应该有任何未记录的属性。 PHP和其他语言允许您从任何地方粘贴类的属性,无论它们是否已在类中定义。我认为这是不好的做法,因为你描述的原因和更多:
很难读懂。
让其他程序员(包括你未来的自己)更难理解正在发生的事情。
它可以防止IDE中的自动完成功能起作用。
它经常使域层过于依赖持久层。
使用getter和setter来访问类的已定义属性对我来说更具可替代性。我喜欢要保持一致的东西,所以如果我有一个具有getChildren()方法的类来延迟加载一些对象数组,那么我不会将$ children属性设为public,而且我倾向于将其他属性设为私有。我认为这只是一个品味问题,但我觉得直接访问类中的某些属性($ object-> name;)以及其他getter / setter来说很烦人。