返回值风格问题

时间:2010-08-31 07:32:03

标签: c# coding-style

假设我有以下代码

public static string GetXMLValue()
{
    XDocument settingsFile = XDocument.Load("Settings.xml");
    return settingsFile.Element("Settings").Element("GenericValue").Value;
}

它只读取XML设置文件并返回GenericValue值。它不能比那更简单。现在我的问题是,它是否会提供任何好处(可读性,性能,语法,维护等),首先将返回值放在字符串变量中然后返回?或者它最好离开它的方式?

4 个答案:

答案 0 :(得分:7)

说实话,方法的简单性使其即使在“一行”中也可读:

public static string GetXMLValue() 
{ 
    return XDocument
             .Load("Settings.xml") 
             .Element("Settings")
             .Element("GenericValue")
             .Value; 
} 

答案 1 :(得分:4)

在某些情况下,我看到了创建辅助变量的价值:

  • 我想断言它是一个前提条件(例如,不是空字符串;最小/最大长度;等等)
  • 我遇到了麻烦,我想更轻松地调试值。

即使没有这些,对于这样一个非常重要的表达式,我会创建一个局部变量,以使该函数更具可读性。

答案 2 :(得分:2)

  

它能提供任何好处吗?   首先将返回值放在a中   字符串变量然后返回?或者是它   最好离开了它的方式?

功能如此简单,无所谓,所以不要为此失眠。一旦功能变得更加复杂,您可以随时重新考虑这一点。

例如,如果您稍后需要在返回值之前对值进行检查,或者出于审计原因而想要记录该值,则单独的变量将有意义。在那之前,保持原样。

暂且不说:

我发现更令人质疑的是您正在使用getter方法读取外部资源(文件)。在getter中调用可能有副作用(例如读取文件)的操作是不好的样式恕我直言。这样一来,例如getter的每个调用者都必须通过读取文件来处理IOExceptions。

考虑改变这种情况,例如通过构造函数传递信息(从构造函数中读取文件,或者传入一个负责提供信息的对象)。这将解耦您的设计,并简化例如重用和单元测试。

答案 3 :(得分:1)

从可读性的角度来看,将值分配给变量并返回它肯定会有所帮助。