Code comparison - Which is better or unnecessary?
本问题已经有最佳答案,请猛点这里访问。
0
1 2 3 4 5 | public class Test { public bool testData1; public string testData2; } |
或
1 2 3 4 5 | public class Test { public bool TestData1 { get; set; } public string TestData2 { get; set; } } |
或
2哪些优化代码更好或不必要?为什么?
最后一个不是有很多不必要的数据吗?
编辑:
我认为在这种情况下:
1 2 3 4 5 6 7 8 9 10 11 | public class Test { public Test(bool testData1) { this.testData1 = testData1; } private bool testData1; public bool TestData1 { get { return testData1; } } public string TestData2 { get; set; } } |
需要在后台有字段。不是吗?
您不应该有公共字段,而是使用属性,这样您可以在以后更改内部实现(如果必要的话),所以2)获胜。3)只是在引擎盖下实现汽车属性的方式,因此相当于2)
第二个是等价的。只是说同一件事的语法不同而已。
第一种是不同的——它公开字段,而不是属性。在网络上,字段和属性之间的差异已经令人恶心地被掩盖了。
在生产代码中使用第一个应该是不可能的,因为拥有公共字段是封装使用不佳的一个肯定标志。
数字2和3是相似的,但有一个重要的区别:如果您计划序列化类,您应该更喜欢3,因为您对可以序列化的变量有更严格的控制。除此之外,2和3是相同的。我总是从2开始,只有在必要的时候才去3。
第一个例子在语义上与另外两个不同。
在第一个示例中,您使用的是字段而不是属性。
第二个例子相当于第三个;编译器将自己生成支持字段。所以,第二个例子更容易阅读,并且更清晰。
关于您编辑的问题:不一定。你完全可以做到:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class MyClass { MyClass( bool x ) { TestData1 = x; } public bool TestData1 { get; private set; } } |
第二个和第三个是相同的。首先是坏的,因为如果您更改了某些内容(名称、类型),那么您就破坏了类接口。