举个例子,我看过很多C#代码,比如下面这样:
XmlNode n = GetXmlNode();
String[] attributes = new String[n.Attributes.Count];
for (int x = 0; x < n.Attributes.Count; x++)
{
//do something
}
现在,如果这是 java,我们可以编写类似于以下的代码,但是我们会调用 getAttributes()
方法两次,如果我没记错的话,有一条规则也就是说,与其多次调用同一个方法,不如声明一个变量来保存对方法调用返回的对象的引用,然后根据需要多次使用该变量。
Node n = GetXmlNode();
String[] attributes = new String[n.getAttributes().getLength()];
for (int x = 0; x < n.getAttributes().getLength(); x++)
{
//do something
}
但既然C#属性只是封装在一个类型成员中的getter方法和setter方法,是否遵循同样的规则?
或者该规则不适用于这种情况,因为假设调用标准库中的 C# 属性和 Java get 方法只是返回对字段的引用而不是执行繁重的工作是“安全的”?
最佳答案
永远不要存储你可以计算的东西。当计算值发生变化但您仍在使用存储的值时,存储您可以计算的内容会导致细微的错误。只有当你的程序很慢时才违反这条规则,这是它慢的最大原因(提示:它可能不是)
关于c# - 两次调用同一个 C# 属性是不是不好的编程习惯?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14740606/