0

在 Java 中,当我有简单的模型/pojo 时,我会使用 getter/setter。我发现当你这样做时,代码变成了自我记录。调用 getName() 将返回一个名称,我不需要关心它是如何映射到某个数据库的等等。

当使用 getter 和 setter 开始感觉笨拙的语言时,问题就会出现,比如在 Python 中,我经常听到人们说它们很糟糕。例如,有一次我有一个 PHP 项目,其中一些数据只是从数据库中查询,列值映射到对象/字典。我发现像这样的代码很难阅读,你不能真的只是阅读代码,你阅读了代码,然后你注意到值是从数据库中获取的,现在你必须查看数据库架构一直理解它。当您所能做的只是查看类定义并知道那里不会有任何未记录的魔术键时。

所以我的问题是你们如何在没有 getter 和 setter 的情况下记录代码?

4

1 回答 1

1

在我看来,一个类中不应该有任何未记录的属性。PHP 和其他语言允许您从任何地方将属性粘贴到类上,无论它们是否已在类中定义。由于您描述的原因以及更多原因,我认为这是不好的做法:

很难阅读。

它使其他程序员(包括你未来的自己)更难理解正在发生的事情。

它会阻止 IDE 中的自动完成功能正常工作。

它常常使领域层过于依赖持久层。

是否使用 getter 和 setter 来访问类的已定义属性对我来说更具可替代性。我喜欢保持一致,所以如果我有一个类有一个 getChildren() 方法来延迟加载一些对象数组,那么我不会将 $children 属性设为公开,我也倾向于将其他属性设为私有. 我认为这更像是一个品味问题,但我发现直接访问类中的某些属性($object->name;)和通过 getter/setter 访问其他属性很烦人。

于 2012-06-15T15:25:17.860 回答