我正在寻找有关使用自动实施属性的最佳做法的建议。
如果我不需要引用课堂内的财产,我总是使用它们。但是,如果我确实需要访问类中的属性,我习惯手动添加私有属性。
例如,如果我有一个名为Person的类,其中包含firstName和lastName属性,而且我从不必在类中操作该数据,我只会这样做:
public class Person
{
public string firstName { get; set; }
public string lastName { get; set; }
}
但是,如果我需要对这些属性做一些事情,我会这样做:
public class Person
{
private string _firstName;
public string firstName
{
get { return _firstName; }
set { _firstName = value; }
}
private string _lastName;
public string lastName
{
get { return _lastName; }
set { _lastName = value; }
}
public void testMethod()
{
Debug.Print(_firstName + " " + _lastName);
}
}
我的问题:这是好的做法吗?
答案 0 :(得分:1)
不,这毫无意义。当您需要做的不仅仅是设置/获取支持字段时,您应该转移到完全实现的属性。
事实证明:
Debug.Print(FirstName + " " + LastName); //convention says use UpperCamel for props
绝对没问题,引入后备字段只会给代码带来不必要的噪音。
相反,如果您想要进行一些验证:
public string LastName
{
get { return _lastName; }
set {
if(value.Contains("!")){
throw new Exception("names can't contain '!'");
}
_lastName = value; }
}
现在你有理由放弃自动实施的属性。
如果您只是想避免第二次查找的开销,请不要担心。这可能永远不会导致性能问题,如果确实如此,您将通过测量代码时序找到答案。试图以牺牲清晰度为代价编写最佳效率的代码是一个糟糕的目标,并导致狡猾的代码。每次都支持清晰度,当程序运行缓慢时,您可以返回并找出导致它的原因。研究已经证明,它很有可能不会成为你所期望的,所以尝试猜测并不是一种经济上的追求。