问题标签 [accessor]

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 投票
16 回答
80952 浏览

java - getter 和 setter 是糟糕的设计吗?看到矛盾的建议

我目前正在开发一个具有多种不同模式的简单 Java 游戏。我扩展了一个主游戏类,将主逻辑放在其他类中。尽管如此,主要的游戏类仍然相当庞大。

在快速浏览了我的代码后,其中大部分是 Getters 和 Setters(60%),而其余部分则是游戏逻辑真正需要的。

一些 Google 搜索声称 Getter 和 Setter 是邪恶的,而其他人则声称它们对于良好的 OO 实践和出色的程序是必要的。

所以我该怎么做?应该是哪个?我应该为我的私有变量更改我的 Getter 和 Setter,还是应该坚持使用它们?

0 投票
8 回答
28837 浏览

c# - C# 中的“只读”属性访问器

我有以下课程:

我希望用户能够获取 mMyList 这就是为什么我通过属性公开“get”但是我不希望他们对对象(即 MyList.Add(new Class());) 进行更改以使其回到我的课堂。

我想我可以返回对象的副本,但这可能会很慢,我正在寻找一种方法来提供编译时错误,通知用户他们不应该期望能够修改返回的值财产。

这可能吗?

0 投票
8 回答
76513 浏览

java - “访问器方法”的定义是什么?

我一直在争论“访问器”这个词的用法(上下文是 Java 编程)。我倾向于将访问器视为隐含的“属性访问器”——也就是说,该术语暗示它或多或少地提供对对象内部状态的直接访问。对方坚持认为,任何以任何方式接触到对象状态的方法都是访问者。

我知道你们不能为我赢得争论,但我很想知道你会如何定义这个词。:)

0 投票
1 回答
1144 浏览

.net - 自定义控件上的 SkinID 不起作用(asp.net)

我从 syste.web.ui.webcontrols.button 派生一个控件。然后我称它为buttonv2。然后,我向这个新类“int abc”添加一个任意属性,通过一个 get/set 访问器访问它,该访问器将它的值存储在 viewstate 中(如果 viewstate 值为 null,它也返回 0,即我试图无需设置即可访问它)。

现在,每当我给'abc'一个值,然后在调试模式下观察它,它会很好地命中访问器的'set'部分,并输入我给它的值(即55),然后紧接着,它会命中一些我的代码“if (abc >0){}”的一部分,它从视图状态中获取值为 0!

这仅在我使用 asp.net 'skins' 并在皮肤文件中预设 'abc' 值时发生。(ie) 皮肤文件内容如下:<asp:buttonv2 runat="server" SkinID="bob" abc="55" />

在我使用的页面中<asp:buttonv2 runat="server" SkinID="bob" />,我的概率是 abc 总是等于 0?!

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 投票
7 回答
1278 浏览

c++ - 在同一个类中使用访问器

我听说在 C++ 中,get...()在定义访问器的同一类的成员函数中使用访问器 () 是一种好的编程习惯?这是真的吗?应该这样做吗?

例如,这是首选:

在这样的事情上:

data是定义访问器的同一类的数据成员...与display()方法相同。

我正在考虑这样做的开销,特别是如果您需要在同一个类中多次调用访问器,而不是直接使用数据成员。

0 投票
6 回答
24270 浏览

c# - 具有不同设置和获取类型的访问器?

简单的问题,希望是一个简单的答案:

我想做以下事情:

以上只是我正在尝试做的一个例子。我想要一个 x 类型的内部变量的公共访问器。我希望将该变量作为字符串获取,但使用 x 类型的东西设置它。

这可能吗?

- 编辑 -

我刚刚意识到我可以做类似的事情:

但是,假设我使用类型 y 而不是“字符串”作为我的“获取”类型。如果我想在我的代码中的其他地方使用“DateTimeProperty”,我必须强制转换它。

0 投票
5 回答
6185 浏览

c# - 为什么我不能将 set 访问器添加到覆盖的属性?

在基类中,我有这个属性:

我想覆盖它并返回不同的文本,但我也希望能够设置文本,所以我这样做了:

然而,这不起作用。我得到一个红色波浪线,set说我不能覆盖,因为它没有设置访问器。为什么这是个问题?我该怎么办?

0 投票
11 回答
763 浏览

language-agnostic - 将 getter 和 setter 明确命名为“get...”和“set...”有什么好处?

这会激怒其他人吗?我更愿意看到:

首先,“set”和“get”是多余的(因此增加了噪音,降低了可读性)。操作 (set/get) 由每个语句的语法定义。我理解超载。事实上,使用相同的确切标识符强化了这些是对象的相同属性。当我阅读“getKey()”和“setKey()”时,我可能不太确定。

其次,如果“get”和“set”被严格解释为setter和getter,那么如果与设置/获取值相关的其他语义,例如副作用,将是令人惊讶的。

我想这种偏见来自我的 Smalltalk 背景,但是在一个多态性工作得很好的世界里,如果没有“get”和“set”到处都是,我们不是会更好吗?试想一下,如果我们不必一遍又一遍地输入这三个字母,我们还能输入多少代码?!(舌头有点靠近脸颊)

有没有人有同感?

0 投票
3 回答
685 浏览

objective-c - 使用 obj-c 访问器和使用点语法有什么区别?

自从我开始 iPhone 开发以来,我一直有点困惑,哪种方式是作为班级成员访问数据的最佳方式。

假设我有一个名为 MyClass 的类,其中我有:

在实现中,这样做是否更好:

或这个?

这也适用于读取值。

对比