在Java中,当我有简单的model/pojos时,我使用getters/setters。我发现当你这样做的时候,代码变得自文档化了。调用getName()将返回一个名称,我不需要关心它如何映射到某个数据库等等。
当使用像Python这样的getter和setter开始感到笨拙的语言时,问题就出现了,我经常听到人们说它们很糟糕。例如,有一次,我有一个PHP项目,其中的一些数据只是从数据库中查询出来的,列值映射到对象/字典。我发现像这样的代码非常难读,你不能只读代码,你读了代码,然后你注意到值是从数据库中获取的,现在你必须一直查看数据库模式才能理解它。当你所能做的就是看看类的定义,并且知道那里不会有任何没有文档记录的魔术钥匙。
所以我的问题是,如果没有getter和setter,你们怎么记录代码呢?
发布于 2012-06-15 23:25:18
在我看来,类中不应该有任何未记录的属性。PHP和其他语言允许您从任何地方将属性粘贴到类上,无论这些属性是否已在类中定义。我认为这是一个糟糕的实践,因为你所描述的原因以及更多的原因:
这很难读懂。
这会让其他程序员(包括你未来的自己)更难理解正在发生的事情。
它会阻止IDE中的自动补全功能工作。
它经常使域层过于依赖于持久层。
您是否使用getter和setter来访问类的已定义属性对我来说更具互换性。我喜欢保持一致,所以如果我有一个类,它有一个getChildren()方法来延迟加载一些对象数组,那么我不会将$children属性设为公共属性,我也倾向于将其他属性设为私有属性。我认为这更多的是一个品味问题,但我发现直接访问类中的一些属性($object->name;)和通过getter/setter访问其他属性是很烦人的。
https://stackoverflow.com/questions/11053550
复制相似问题