问题标签 [getter-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 投票
12 回答
85609 浏览

c# - Getter、setter 和属性最佳实践。Java 与 C#

我现在正在上 C# 课程,我正在尝试找出最好的做事方式。我来自 Java 背景,所以我只熟悉 Java 最佳实践;我是 C# 新手!

在 Java 中,如果我有私有财产,我会这样做;

在 C# 中,我看到有很多方法可以做到这一点。

我可以像 Java 那样做:

或者我可以这样做:

或者:

我应该使用哪一个,每种方法有哪些注意事项或微妙之处?在创建类时,我遵循我从 Java 中了解的一般最佳实践(尤其是阅读有效 Java)。因此,例如,我赞成不变性(仅在必要时提供设置器)。我只是想知道这些实践如何与 C# 中提供 setter 和 getter 的各种方式相适应;本质上,我如何将 Java 世界的最佳实践转化为 C#?

编辑

我将其发布为对 Jon Skeet 答案的评论,但后来它变得很长:

那么一个重要的属性(即,可能有重要的处理和验证)呢?我是否仍然可以通过公共属性公开它,但将逻辑封装在getand中set?为什么/应该通过专用的 setter 和 getter 方法(具有相关的处理和验证逻辑)来执行此操作。

0 投票
3 回答
11120 浏览

php - 单元测试访问器(getter 和 setter)

给定以下方法:

假设将来它们可能会变得更复杂:

  • 您将如何为这些方法编写单元测试?
  • 只有一种测试方法?
  • 我应该跳过那些测试吗?
  • 代码覆盖率怎么样?
  • @covers注释呢?
  • 也许在抽象测试用例中实现一些通用测试方法?

(我使用 Netbeans 7)

这似乎是在浪费时间,但我不介意 IDE 是否会自动生成这些测试方法。

引用 Sebastian Bergman 博客的评论:

(这就像测试 getter 和 setter 一样——失败!)。无论如何,如果他们失败了;依赖它们的方法不会失败吗?

那么,代码覆盖率呢?

0 投票
2 回答
166 浏览

iphone - 通过objective-c中的类访问变量

在我的项目中,我的第一个视图是日志视图,我想将用户名获取到其他类中。我真的不知道如何在其他课程中获得它,我在stackoverflow中搜索并没有找到(我尝试了几件事但没有成功)我告诉你我是如何尝试这样做的:

登录.h

登录.m

家.m

我在我的所有项目中都需要这个值,以显示有关已连接客户端的信息。

我只需要一个提示或我可以使用的示例代码。

编辑:我按照给出的建议更改了我的代码,如果我错过了什么,请告诉我

0 投票
5 回答
39807 浏览

c# - C# getter 和 setter 简写

如果我对这条线的内部运作的理解是正确的:

然后它在幕后这样做:

我真正需要的是:

但我想这样写:

哪个不起作用。问题是我需要执行 IsDirty 的一些对象有几十个属性,我希望有一种方法可以使用自动 getter/setter,但在修改字段时仍然设置 IsDirty。

这是可能的,还是我只需要让自己在我的课程中增加三倍的代码量?

0 投票
2 回答
3385 浏览

iphone - CGFloats,浮点数设置为零

我有一个自定义类 Custom.mm,我在其中尝试使用控制器类 MainController 中的设置器设置浮点值。Custom 实例被键入为 id,因为它是一个 Obj-C++ 文件,并且在编译时指向正确的类对我来说效果很好。一切正常,实例已验证。如果我将数量变量设置为 int 类型并传递 int ,它就可以正常工作。与任何其他值或对象相同——除了浮点数。由于某种原因,浮点数(float、CGFloat 等)在 Custom.mm 类中设置为 0。这不是 NSLog 或任何东西的问题——我已经用断点检查了 amount 变量,一切正常但浮动。




0 投票
6 回答
7811 浏览

java - 对 Java 封装概念感到困惑

再会!

我正在阅读一本关于封装的 Java 书籍,其中提到了 getter 和 setter 方法。

我已经读过要隐藏属性,我必须将我的实例变量标记为“PRIVATE”并使用“PUBLIC”方法getter and setter来访问数据。所以我尝试制作一个类似但不是常规的代码,如下所示:

我上面的代码是否公开了我的变量,因为我直接分配了它?我怎样才能做得更好?如果我getter and setter改用传统方法并将值分配给另一个类会更好吗?“隐藏数据”是什么意思?

谢谢你。

0 投票
3 回答
10643 浏览

scala - Scala 构造函数、命名参数和隐式 Getter/Setter

是否可以在 Scala 构造函数中使用命名参数,然后在不破坏构造函数接口或使代码非常难看的情况下覆盖 getter 和 setter?

获取以下 scala 代码

干净整洁。这将创建一个名为 person 的简单类,我们可以通过以下方式使用它

稍后,我们决定要向 FirstName 设置器添加一些验证。因此,我们创建一个新的私有局部变量并覆盖 getter 和 setter 方法

仍然有些干净,但是为了做到这一点,我们不得不更改构造函数参数名称,从而破坏了外部接口。

我想出的第一个解决这个问题的方法是

这有点丑陋和不雅,并且消除了我最初使用 scala 的大部分好理由。

有没有更好的方法来做到这一点?

tl;dr 如何覆盖默认构造函数中定义的成员的 getter/setter 而不使代码丑陋或更改公共接口?

0 投票
3 回答
2752 浏览

java - 拥有大量的 getter 和 setter 是个好主意吗?

在编写您打算开源的应用程序(在 java 中)时,拥有大量 getter 和 setter 并将变量设为私有通常是一个好主意吗?更具体地说,如果那是一个android 应用程序,上述问题的答案是否仍然成立?

编辑:如果你们能给我一个具体的理由说明为什么它更好,那就太棒了。

0 投票
2 回答
330 浏览

java - 为什么我不能更改 getter 返回的集合?

我有一个带有 getter 的类,它返回其私有字段 List。

但是 getter 方法的调用者不能在该列表中添加或删除元素。

引发了 UnsupportedOperationException。

我知道 getter 返回对该列表的引用,但为什么该列表在调用方是只读的?注意我没有在 getter 中返回 Collections.unmodifiableList() 。

更新:

抱歉,我通过 Arrays.asList 创建了一个固定大小的列表,这就是为什么 ;)

0 投票
3 回答
2105 浏览

java - Getter 和 Setter、线程和 Java

在学校里,他们教我们在 Java 中使用 getter 和 setter。最近我一直在阅读这样的事情是不好的,而不是 OOP。好的,所以我可以编写一些代码,只使用构造函数设置数据并返回所需的数据。

你怎么不使用带线程的getter?当你执行一个线程时,它的类型总是 void 并且在 java 中有全局变量。. .. 那么如何在没有 getter 方法的情况下从线程中获取数据呢?