Getters 和 Setters:代码味道、必要之恶或没有它们就活不下去 [重复]

2024-01-24

可能的重复:
Allen Holub 写道“你永远不应该使用 get/set 函数”,他是对的吗? https://stackoverflow.com/questions/996179/allen-holub-wrote-you-should-never-use-get-set-functions-is-he-correct

有没有好的,没有,有very有充分的理由,要经历在面向对象语言中使用 getter 和 setter 的所有麻烦吗?仅使用对属性或方法的直接引用有什么问题?是否存在某种人们不想在礼貌的公司中谈论的“语义掩盖”?当有人走出来说“你应该编写大量代码来获取 Getter 和 Setter”时,我是否太累了,睡着了?


一年后随访:

这在 Java 中似乎很常见,而在 Python 中则较少。我开始怀疑这是否更多的是一种文化现象(与语言的局限性有关)而不是“圣人建议”。 http://cafe.elharo.com/programming/java-is-dead-long-live-python/由于我不使用 Java 编程(目前是我自己选择的),所以我无法做出这样的评估。

就我而言,当前(当前截至2010年3月22日撰写本文)-1问题得分已完成。有趣的是,有些特定问题被否决,并不是因为它们是“坏问题”,而是因为它们击中了某人的观点原始神经.

那么让我们来谈谈问题的本质吧。我重复一遍:

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"?


这是艾伦·霍鲁布(Allen Holub)(他很聪明)就此事 http://www.javaworld.com/javaworld/jw-01-2004/jw-0102-toolbox.html?page=1。他在中对这个主题进行了更详细的介绍Holub 谈模式 https://rads.stackoverflow.com/amzn/click/com/159059388X。有些东西需要公共 getter 和 setter,例如序列化和模式,例如数据传输对象模式 http://msdn.microsoft.com/en-us/library/ms978717.aspx。一般来说,我认为必要的邪恶,因为当你不使用它们时你的应用程序会变得复杂。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Getters 和 Setters:代码味道、必要之恶或没有它们就活不下去 [重复] 的相关文章

  • 动态重新定义 PHP 类函数?

    我试图弄清楚如何动态导入大量 PHP 类函数 例如 class Entity public function construct type require once type functions php person new Entity
  • 为什么/何时应该使用泛型方法?

    学习Java的时候遇到过通用方法 public
  • “避免在公共 API 中使用库私有类型” - lint 警告,即使在说明书示例中也是如此?

    我注意到样式错误警告https dart lang github io linter lints library private types in public api html https dart lang github io lint
  • Python函数重载

    我知道 Python 不支持方法重载 但我遇到了一个问题 我似乎无法以一种很好的 Pythonic 方式解决它 我正在制作一个游戏 其中一个角色需要射击各种子弹 但是如何编写不同的函数来创建这些子弹 例如 假设我有一个函数 可以创建一颗以给
  • 使用继承编写 __repr__ 函数的正确方法

    我正在尝试 OOP python 但我不确定 repr 函数继承 由于父类函数如下所示 def repr self Returns representation of the object return r format Class nam
  • 在构造函数中运行代码的不好做法可能会失败?

    我的问题更像是一个设计问题 在 Python 中 如果 构造函数 中的代码失败 则该对象最终不会被定义 因此 someInstance MyClass test123 lets say that constructor throws an
  • PHP:我是否将事件驱动编程与信号感知接口(信号和槽/观察者模式)混淆了?

    我看到很多人说 Symfony2 Zend Framework 2 等都是事件驱动的 在桌面世界中 通过事件驱动编程 我了解到应用程序每当其状态发生变化时都会通知其观察者 由于 PHP 应用程序是无状态的 因此无法执行此类操作 IE 让观察
  • 阶级等级制度中频繁的贬低总是邪恶的吗?

    据我所知 如果在类层次结构中频繁使用向下转型是没有好处的 我同意这一点 但是这条规则有哪些例外情况 如果有的话 这就是我的图形编辑器设计的薄弱之处 我有两个层次结构 其中几何图形层次结构与图形基元分离 像这样 public class Ge
  • 如何正确使用状态模式?

    在我的编程经验中 我遇到过一些状态模式的实现 并且完成了一些 我见过它们在各种场景中使用 主要是 UI 和解析 问题在于 所有这些在快速开发的压力下都变成了难以维护和理解的代码块 我正在考虑重构其中之一 但我无法在网上找到合适的资源 网上有
  • 值类型如何实现引用类型

    我遇到了一个值类型正在实现 ref 的场景 类型 只是想知道这怎么可能 幕后发生了什么 结构体是值类型 接口是引用 类型但结构可以实现接口而不会出现任何错误 有什么想法吗 提前致谢 实际上 它同时以两种不同的方式进行 首先 任何值类型都可以
  • 面向对象设计的良好参考[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在VBA中使用类模块作为命名空间是否有任何陷阱

    VBA 不支持命名空间 Java 人员的包 其他语言中的命名空间有助于避免歧义并补充成员名称自动完成等工具 在 VBA 中模拟命名空间的一种方法是在类模块中声明什么是事实上的静态方法 然后在标准模块中声明该类的默认实例 这甚至是一些 Mic
  • 关联数组与 SplObjectStorage

    我正在编写代码来管理一组独特的对象 该代码的第一个原型使用关联数组 基本上就像我一直这样做的方式一样 然而 我也热衷于利用 PHP 的更现代版本中添加的功能 例如 SplObjectStorage 1 这样做 部分是作为一种学习经验 部分是
  • std:: 对象/指针/智能指针的向量传递对象(总线错误:10)?

    我想询问一般建议 下面的代码完全编译并大致代表了我处理的代码的结构 简而言之 我想将从一个地方传递一系列从基类 Class1 派生的对象和一些其他参数到另一个地方 更准确地说 实现父类的不同子类 收集这些子类的实例并传递参数进行处理 问题是
  • 可以在一堂课上延长两堂课吗? [复制]

    这个问题在这里已经有答案了 可能的重复 我可以在 PHP 中使用多个类来扩展一个类吗 https stackoverflow com questions 356128 can i extend a class using more than
  • 为什么不在java中的匿名类中使用构造函数?它与OOPs规则相矛盾[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这个问题似乎偏离主题 因为它缺乏足够的信息来诊断问题 更详细地描述您的问题或包括一个最小的例子 http stackoverflow co
  • 如何使用 php __toString

    有什么用途 toString in PHP 例如 我有一个函数 例如 在一个名为 person 的类中 public function construct id name this gt id id this gt name name an
  • matlab中类库的全局变量

    我有一些matlab声明的类 我如何声明所有类中都可见的常量 例如 这些常量可以是在所有类的方法中使用的物理常量 首先想到的是使用全局变量 还有更好的办法吗 最好在单独的文件中声明这些常量 包含常量的类是执行此操作的一种很好的干净方法 请参
  • OOP JavaScript - 创建自定义 Div 对象

    我刚刚开始使用 JavaScript 进行 OOP 我想创建一个自定义 面板 这是我到目前为止所拥有的 function ShinyPanel css attributes this container document createEle
  • Objective-C 继承中@synthesize/@property 的使用

    如果您有一个带有实例变量 foo 的类 A 该类具有 property synthesize 指令 并且类 B 继承自类 A 那么它是否还需要 property synthesize foo 我问的原因是因为当我尝试使用 B 类的 foo

随机推荐