问题标签 [getter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
23820 浏览

c# - Rhino 使用 AAA 在属性获取器上模拟 AssertWasCalled(多次)

我有一个模拟对象,它作为构造函数参数传递给另一个对象。

如何测试已调用模拟对象的属性?这是我目前使用的代码:

这有效,除非在“someobject”内多次使用 Forenames 属性的 getter。那是我得到“Rhino.Mocks.Exceptions.ExpectationViolationException: INewContactAttributes.get_Forenames(); 预期 #1,实际 #2 ..”的时候

只需使用

不起作用并给出以下错误:

“期望已从等待期望列表中删除,您是否调用了 Repeat.Any() ? AssertWasCalled() 不支持此操作。”

那么如何满足多个呼叫的需求呢?

0 投票
1 回答
590 浏览

php - 为什么我应该在 php 中使用 __get() 和 __set()-magic 方法?

可能重复:
我什么时候应该/应该在 PHP 中使用 __construct()、__get()、__set() 和 __call()?

这是我没有找到任何好的答案的一个领域。谁能向我解释为什么/如何正确使用它们?它们不只是一个糟糕的设计决定吗?

0 投票
10 回答
2403 浏览

java - Java:如何干净地处理大量字段及其封装?

假设我的任务是编写某种 RPG。这意味着,例如,我要跟踪 a及其统计数据,例如智力、伤害加成或生命值。Character GameCharacter

我非常害怕在项目结束时我最终可能会处理大量字段 - 对于每个字段,我都必须确保它们遵循一组非常相似的约束和行为(例如,我希望它们限制在最小值和最大值之间;我希望能够区分“基本值”和“临时奖金”;我希望能够在不通过 setter 和 getter 的情况下增加和减少两者) . 突然之间,对于每个字段,我都需要一个(两个?)getter 和四个 setter,也许还需要几个重置器!即使对于 10 个字段,这也意味着很多方法都相似,eek。

对于 DRYness,我已经开始将在Field类中处理这些统计数据的逻辑封装起来,这样我就可以编写诸如intelligence.applyBonus(10)or之类的代码hitpoints.get()(它会注意返回的值在范围内)等。我什至花了这么长的时间来创建类将这些字段组合在一起,但这不是现在的重点。

现在,我在“插入”时遇到了这个问题FieldGameCharacter大多数 Java 教科书都说每个类都应该有带有公共 getter 和 setter 的私有字段。这在理论上听起来不错,而且我已经围绕int;建立了一个完整的课程。但是,当您发现自己调用 getter 来获取... getter 时,这个想法听起来并不可靠:

我宁愿直接访问该字段。也许这是我的 Python/VB [1] “背景”,但对我来说它更干净、更清晰、更直接:

公共领域的(理论上)问题是我放弃了对它的所有控制;例如,在代码库中的某个其他点,不幸的是,可能会发生以下情况:

听起来像是一个微妙的错误……但是……我的意思是,我真的应该担心吗?我从来没有打算Field直接分配 [2],我已经在 J​​avadoc 中记录了这不是应该做的事情,但我仍然是新来的,所以我有点被撕裂了。

所以我想听听你对这个话题的看法。封装的优势是否如此巨大,以至于我应该继续使用 getter getter 和 setter getter 等等……还是我应该采取健康措施进行封装并将其Field作为一个public领域?


[1] 是的,我知道。我一直在努力忘记。但是我们最近也看到了一些 C# 和 man,属性并不甜。那好吧。

[2] 构造函数除外!getter 不会把我从错误的构造函数中拯救出来。

0 投票
2 回答
680 浏览

c# - C# 控制台问题

考虑这个类:

然后我创建一个像这样的新对象:

现在的问题是,我无法使用 getter 方法访问对象的属性,即这不起作用:

“不起作用”是指当我单击“开始调试”时,控制台窗口出现但什么都没有,它是空白的。但是,这很好用:

我究竟做错了什么?

理查德

0 投票
14 回答
127765 浏览

javascript - Getters \ setters for dummies

I've been trying to get my head around getters and setters and its not sinking in. I've read JavaScript Getters and Setters and Defining Getters and Setters and just not getting it.

Can someone clearly state:

  1. What a getter and setter are meant to do, and
  2. Give some VERY simple examples?
0 投票
5 回答
73989 浏览

c# - c#中类的getter和setter

假设我们有一个带有属性和 getter/setter 的类 InnerClass。我们还有一个包含 InnerClass 的类 OuterClass。

例如

我将如何为 OuterClass 的 innerClass 成员实现正确的 getter 和 setter?

提前致谢!

0 投票
7 回答
45026 浏览

java - Java中的getter/setter

我是 Java 新手,但对 ActionScript 3 有一些 OOP 经验,所以我试图依靠我知道的东西进行迁移。

在 ActionScript 3 中,您可以使用 get 和 set 关键字创建 getter 和 setter,这意味着您可以在类中创建一个方法并通过该类实例的属性访问数据。我可能听起来很复杂,但事实并非如此。这是一个例子:

我会name在一个对象中访问:

我将如何在 Java 中做到这一点?

仅仅拥有一些公共领域是不可能的。我注意到在方法前面有使用 get 和 set 的约定,我可以接受。

例如,

Java 中是否有与 ActionScript 3 的 getter/setter 等效的方法,例如从类的实例中将私有字段作为字段访问,但在类内部有实现该字段的方法?

0 投票
9 回答
36139 浏览

javascript - 所有属性的 JavaScript getter

长话短说:我现在想要一个 PHP 风格的 getter,但在 JavaScript 中。

我的 JavaScript 仅在 Firefox 中运行,因此我可以使用 Mozilla 特定的 JS。

我能找到制作 JS getter 的唯一方法需要指定它的名称,但我想为所有可能的名称定义一个 getter。我不确定这是否可能,但我非常想知道。

0 投票
13 回答
9823 浏览

language-agnostic - Allen Holub 写道“你永远不应该使用 get/set 函数”,对吗?

艾伦·霍鲁布(Allen Holub)写道,

没有耦合就不可能有一个程序。尽管如此,您可以通过盲目地遵循 OO(面向对象)规则来大大减少耦合(最重要的是对象的实现应该对使用它的对象完全隐藏)。例如,对象的实例变量(不是常量的成员字段)应该始终是私有的。时期。没有例外。曾经。我是认真的。(你偶尔可以有效地使用受保护的方法,但受保护的实例变量是可憎的。)

这听起来很合理,但他接着说,

出于同样的原因,您永远不应该使用 get/set 函数——它们只是将字段公开的过于复杂的方法(尽管返回完整对象而不是基本类型值的访问函数在返回对象的情况下是合理的)类是设计中的关键抽象)。

坦率地说,这对我来说听起来很疯狂。

我了解信息隐藏的原理,但是如果没有访问器和修改器,您根本无法使用 Java bean。我不知道如果模型中没有访问器,您将如何遵循 MVC 设计,因为模型不能负责呈现视图。

然而,我是一个年轻的程序员,我每天都在学习更多关于面向对象设计的知识。也许有更多经验的人可以在这个问题上权衡。

Allen Holub 的文章供参考


相关问题:

0 投票
14 回答
77410 浏览

java - 简单的 Getter/Setter 注释

您使用什么约定来评论 getter 和 setter?这是我很长时间以来一直想知道的事情,例如:

我总是发现我在为 1a/b 和 2a/b 写几乎完全相同的东西,比如 1a) 设置员工的薪水,1b) 员工的薪水。这似乎是多余的。现在我可以看到对于更复杂的东西,您可能会在 (a) 部分中写更多内容,以提供上下文,但对于大多数 getter/setter 而言,措辞几乎完全相同。

我只是好奇,对于简单的 getter/setter 是否可以只填写 (a) 部分或 (b) 部分。

你怎么看?