如何从对象方法中访问对象属性?[已关闭]

2022-08-30 07:33:02

从不是 getter/setter 方法的对象方法中访问对象属性的“纯粹主义”或“正确”方法是什么?

我知道从对象外部你应该使用getter/setter,但从内部你只需要做:

爪哇岛:

String property = this.property;

菲律宾比索:

$property = $this->property;

或者你会做:

爪哇岛:

String property = this.getProperty();

菲律宾比索:

$property = $this->getProperty();

如果我的Java有点偏差,请原谅我,自从我用Java编程以来已经一年了......

编辑:

似乎人们认为我只是在谈论私有或受保护的变量/属性。当我学习OO时,我被教导要对每个属性使用getters/setters,即使它是公开的(实际上我被告知永远不要让任何变量/属性公开)。所以,我可能从一开始就从一个错误的假设开始。似乎回答这个问题的人可能会说你应该拥有公共财产,而这些财产不需要getter和setters,这与我所教的和我所谈论的背道而驰,尽管也许这也需要讨论。对于另一个问题来说,这可能是一个很好的话题......


答案 1

这有宗教战争的潜力,但在我看来,如果你使用getter/setter,你也应该在内部使用它 - 使用两者都会导致维护问题(例如,有人将代码添加到一个 setter 中,每次设置该属性时都需要运行,并且该属性是在内部设置的,而不调用该 setter)。


答案 2

就个人而言,我觉得保持一致性很重要。如果您有 getter 和 setter,请使用它们。我唯一一次直接访问字段是当访问器有很多开销时。你可能会觉得你不必要地膨胀了你的代码,但它肯定会在未来节省很多麻烦。经典示例:

稍后,您可能希望更改该字段的工作方式。也许它应该即时计算,或者您可能希望为后备商店使用不同类型的类型。如果您直接访问属性,那么像这样的更改可能会在一次膨胀中破坏大量代码。


推荐