如何解决使用私有自动属性代替简单变量作为编程标准
| 在与同伴的讨论中,提出了我们应该考虑对所有类级别变量使用自动属性,包括私有变量。 因此,除了像这样的公共财产:public int MyProperty1 { get; set; }
我们的私有类级变量如下所示:
private int MyProperty2 { get; set; }
代替:
private int _myProperty2;
我对有人为什么要这么做的看法持怀疑态度,但是我不能决定我是否愿意接受这是因为我自己内部洗脑,我如何按照相同的编程标准和命名约定编写代码\已经使用了10年,或者因为我之前从未见过(出于某种原因)。
我意识到这是要输入的额外代码,但老实说,当使用自动属性时,我不认为我曾经因为\'prop \'和\'propg \'片段而输入过代码因此,设置新的代码片段以创建私有自动属性非常简单,因此多余的代码不会给我带来太多麻烦,因为我永远不必键入它。
除了美学可能只是我的潜意识之外,使用完全私有的汽车属性还会导致任何问题吗?是否有充分的理由这样做或不这样做?那天,我在stackoverflow,codeplex,codeproject等上看过很多代码,但我从未见过有人使用此标准。
解决方法
这没有太大意义。
我可以想到一个“好处”:
您以后可以在getter和/或setter中添加逻辑,并确保始终将其传递
但坦率地说,您的课程不应太大,以至于没有用。
“有什么问题”吗?
您的属性不能用作
ref
或out
参数的参数。
,我认为私有的自动属性是毫无意义的。私有自动属性提供什么值而普通字段不提供?
(当自动属性仅是部分私有时(例如,带有私有设置器的公共/受保护的getter)或使用私有的非自动属性使您能够在getter周围包装其他代码时,情况就不同了。 / setter。)
,它对私人的用途不如对公众有用。
假设您拥有了自动私有财产,然后在其中建立了一些逻辑(能够不破坏任何东西就可以做到这一点是自动道具的全部重点)...
这将要求您创建一个私有的后备成员,以包装该属性。
因此,尽管有一个隐藏的副作用(属性),但您现在有两种不同的私有方法(成员和属性)来做同一件事,而且现在还遇到了一个问题,即确保类直接访问该成员。
最终,不仅要从一开始就使用私人成员,更是令人头疼。
,该策略将为您提供一个机会,将将来的任何更改放入以前自动生成的私有财产中,而不会影响获取或设置私有财产的任何其他代码。我个人并没有使用太多,但是在处理方式可能发生变化的情况下可能会有所帮助。它还使代码标准化,以使属性始终可以访问字段。没有实际的缺点,但是在大多数情况下也没有太大的好处。我认为在大多数情况下,风格确实是最大的推动力。
, 在与同行的讨论中,
长大了,我们应该考虑
对所有类使用自动属性
级别变量...包括私有
那些。
如果您没有任何逻辑可在属性中编写用于检索和返回值的属性,则此功能将无用。
除了第1点,您还拥有只读属性
所以你可以直接去
public int MyProperty1 { get; set; }
此外,它减少了您的代码行和快速实施
,我坚信KISS。当一个字段可以使用时,我从不使用属性,我几乎没有理由使用私有访问器(get)。
属性的主要目的是成为私有数据的公共访问者。因此,对于仅设置或获取值无所作为的简单财产,私有访问者和设置者毫无意义。
话虽如此,当您需要在读取数据时进行数据转换,或者在更新值时需要执行副作用时,应使用一个字段。改变价值会引发事件吗?那么,一个领域就不言而喻了。但是,那不是您用{get;组;}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。