问题标签 [setter]

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

java - 具有所有类属性的构造函数还是具有设置器的默认构造函数?

以下是两种方法:

  • 具有所有类属性的构造函数

优点:我必须输入准确数量的参数类型,所以如果我出错,编译器会警告我(顺便说一句,有没有办法防止在参数列表上错误地切换两个 Integer 的问题?)

缺点:如果我有很多属性,则实例化行可能会变得很长,并且可能跨越两行或多行

  • setter 和默认的空构造函数

优点:我可以清楚地看到我在设置什么,所以如果我做错了什么,我可以在输入时立即查明它(我不能犯切换相同类型的两个变量的先前错误)

缺点:具有许多属性的对象的实例化可能需要几行(不知道这是否真的是一个缺点),如果我忘记设置一个属性,编译器不会说任何东西。

你会做什么,为什么?您是否知道建议的任何灯光模式(考虑到每次实例化具有 7 个以上属性的对象时都应该使用它)?我问这个是因为我倾向于不喜欢大型构造函数,因为我无法快速找出我正在寻找的变量在哪里,另一方面,我发现“设置所有属性”容易丢失一些属性。

随意争论我的利弊假设,因为它们只是我的想法:)

更新 - 我发现了一个与此相关的问题:Building big, immutable objects without using constructors have long parameter lists

0 投票
1 回答
1097 浏览

ruby-on-rails - 覆盖 Rails 中的属性并获取底层值

对于我的生活,我无法弄清楚如何做到这一点。我有一个模型,它的存储值是文件系统上资源的路径。我希望模型从文件系统中写入和获取资源,所以我自然想覆盖 getter 和 setter 来执行此操作。然后我如何获得数据库中的基础价值?

下划线在哪里?我见过'write_attribute'曾经这样做过,但它似乎已被弃用。有任何想法吗?当然,吸气剂也是如此。

另外,如果我在覆盖方面说错了,我很想听听更好的技术。唯一不能选择的是将值直接存储在数据库中。

谢谢!

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

.net - setter中的数据绑定和抛出异常

假设我有一个简单的课程

然后我想为这个类设置一个绑定:

现在,如果我在文本框中输入不正确的年龄值(比如 200),setter 中的异常将被吞下,并且在我更正文本框中的值之前,我将无法做任何事情。我的意思是文本框将无法失去焦点。这一切都是无声的——没有错误——在你更正值之前,你什么也做不了(甚至关闭表单或整个应用程序)。

这似乎是一个错误,但问题是:解决方法是什么?

0 投票
3 回答
102 浏览

testing - 代表的灵魂二传手在界面中吗?

我们有很多具有这种设计的对象:接口和几个实现,以及通过组合使用多个对象。示例: Foo 实现了 IFoo 并有一个 Bar 对象,该对象实现了 IBar Foo 也有一个用于注入依赖项的 setBar(IBar bar) 方法。

我的问题是:setter 不在界面中?(为了测试,嘲笑......我被卡住了!)

0 投票
4 回答
2795 浏览

iphone - Objective-C Setter 内存管理

仍然对 Objective-C 内存管理有点困惑。我认为我的困惑源于自动释放的确切含义。

现在,我应该如何处理视图控制器的 setAccountDictionary 方法中的 accountDictionary?现在我只是将实例变量“accountDictionary”设置为返回的任何内容。我应该将其设置为保留的,然后释放返回的吗?鉴于 NSString 的 propertyList 方法是自动释放的,我的 setter 代码块应该是什么样子?

顺便说一句,如果我释放了BackendResponse,我会丢失accountDictionary吗?我假设不是...

0 投票
13 回答
9823 浏览

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

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

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

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

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

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

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

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

Allen Holub 的文章供参考


相关问题:

0 投票
3 回答
1410 浏览

vb.net - 无法设置属性的属性

正如我所说,我在设置属性的属性时遇到了麻烦。假设我有一个代表交易的类。在我的班级中,我有一个代表另一个班级的属性,例如:

所以我基本上有一个属性,它有一个获取合适的人的过滤器。问题是,当我想通过属性设置 Person 的信息时,VB 似乎忽略了我什至这样做,例如:

但是当我对此进行观察时,设置属性后,我的值不会改变。我对这种行为感到困惑。有什么我做错了吗?谢谢!

0 投票
14 回答
77410 浏览

java - 简单的 Getter/Setter 注释

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

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

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

你怎么看?