java - 不使用 getter 和 setter 时的文档

标签 java php python setter getter

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

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

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

最佳答案

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

很难读。

这使得其他程序员(包括 future 的你)更难理解正在发生的事情。

它会阻止 IDE 中的自动完成功能发挥作用。

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

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

关于java - 不使用 getter 和 setter 时的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11053550/

相关文章:

java - 构建XML服务解析库

java - 为什么嵌套接口(interface)隐式声明为静态?

python - 用于橡皮筋的鼠标左键和用于平移 PYQT 的中间键

python - 我搞砸了 conda,命令在 Mac 上不起作用

java - 使用 Scanner 类扫描 int 时出错

java - org.springframework.beans.factory.UnsatisfiedDependencyException : Error creating bean with name 'demoRestController'

PHP 和 cURL : same code but unable to fetch content on existing server conf

php - 如何在 php 中使用 sql 内连接进行选择

php - 加载一千个 Cron 脚本的最佳方法

python - 一个令人困惑的功能,不按照它所说的去做