吸毒者和二传手:代码气味,必要的邪恶,或者没有他们的生活

Ave*_*yne 10 oop

可能重复:
Allen Holub写道"你永远不应该使用get/set函数",他是否正确?

是否有一个良好的,没有,一个非常充分的理由,要通过使用getter和setter方法的面向对象语言的所有麻烦吗?使用对属性或方法的直接引用有什么问题?人们不想在礼貌的公司谈论某种"语义掩盖"吗?当有人走出去说"你应该写大量的代码以获取吸气剂和制定者"时,我是否太累了并且睡着了?


一年后的后续行动:

它似乎是Java的常见现象,而不是Python. 我开始怀疑这是否更像是一种文化现象(与语言的局限性有关),而不是"圣人的建议". 由于我不使用Java编程(目前可供选择),因此无法进行评估.

就我而言,目前(截至本文写作2010-03-22)-1问题得分已经完成了lulz.有趣的是,有一些特定的问题被低估了,不是因为它们是"坏问题",而是因为它们触及某人的原始神经.

那么让我们来解决问题.我重复一遍:

What's wrong with just using a direct reference to a property or method?

这是不成文的推论:

Are we so undisciplined as programmers that we can't keep our hands off of things that are clearly marked "no touchy"?

JP *_*oto 4

这是艾伦·霍鲁布(Allen Holub)(他很聪明)对此事的看法他在Holub on Patterns中更详细地讨论了这个主题。有些事情需要公共 getter 和 setter,例如序列化和数据传输对象模式等模式。一般来说,我认为必要的邪恶,因为当你不使用它们时你的应用程序会变得复杂。