自动属性对于私有变量来说是否是不必要的?

4
我看了别人的代码,发现了这段代码。
private string _deviceName { get; set; }
private string _deviceAlias { get; set; }

我的想法是,私有变量的自动属性是不必要的。我的想法是否正确?

可能是在内部使用属性的好处是什么?的重复问题。 - nawfal
2个回答

8
我认为对于私有变量来说,那些自动属性是不必要的。我这么想是对的吗?
这些自动属性并不是必需的,但也不会带来任何负面影响。话虽如此,它们也并没有什么用处,因为它们只是一些实现细节,所以将来从字段切换到属性也不会造成破坏性的改变。
唯一潜在需要这样做的原因是,如果您知道未来可能需要自定义 get 或 set 的逻辑,并且正在使用某些需要属性语法不同的东西(例如反射),那么现在将它们设置为自动属性可以避免以后需要更改代码。

它们确实有帮助,但并非必需品。对于输入验证来说,它们是必不可少的。在这个编程层面上,输入验证经常被忽视。通常你不会考虑其他程序员也需要进行验证。 - ZnArK
1
@ZnArK,“输入验证”既不是私有字段的关注点,也不是私有属性的关注点。 - Kirk Woll
@KirkWoll 这显然是有争议的。我猜这取决于你自己的风格和对细节的关注程度。 :) http://programmers.stackexchange.com/a/64930 - ZnArK
2
@ZnArK,你仍然混淆了验证API的公共界面和验证内部实现细节。按照你的逻辑,如果你有private string foo { get; set; }public string Foo { get { return foo; } set { foo = value; } }: 你建议在foo.setFoo.set两个地方进行验证,这是完全无意义的。 - Kirk Woll

0

这只是你创建了一个属性,而不是一个变量,在将来你想要在设置和检索值时进行一些自定义工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接