2012-07-27 53 views
-2

我有一个返回的东西(字符串,列表,布尔变量等)的扩展方法,我通常把它们写这样的:重要的,还是只是个人偏好?

public string Return(string firstName) 
{ 
    /* get first name 
    */ 
    string fname = result.FirstName; 

    return fname; 
} 

你会发现,我宣布一个新的变量“FNAME”,并返回它。

但最近我一直在做这样的:

public string Return(string firstName) 
{ 
    /* code to get first name 
    */ 
    firstName = result.FirstName; 
    return firstName; 
} 

这原来的工作方式相同。

而且在写这个问题,我想起我可以做这个:

public string Return(string firstName) 
{ 
    /* code to get first name 
    */ 
    return result.FirstName; 
} 

是否真的重要,你写哪条路,还是只是归结为个人喜好?

+1

只要一致。 – JonH 2012-07-27 17:56:42

+4

首先,为什么所有这些方法都带一个他们不用于任何东西的参数?其次,大多数理智的人认为分配方法论证是一个非常糟糕的做法。第三,这个问题将被视为“不具有建设性”。 – 2012-07-27 17:57:52

+0

你打算在这里做什么?鉴于这些信息,这些方法对我来说看起来毫无意义,除了糟糕的风格之外。 – Mithrandir 2012-07-27 18:00:53

回答

0

您所有的方法都会返回相同的结果。它归结你在你的方法中做的事情。任何时候你声明一个变量,你都会使用内存。我的个人偏好是修改和使用我传入的同一个变量。它使代码更易于管理,更易于阅读。

+0

谢谢@Jon Edwards。 – Jase 2012-07-27 18:13:03

+0

没问题,欢迎来到stackoverflow!这是学习和分享的好资源......如果你能克服那些更倾向于纠正你的努力中的任何和所有微小细节的僵化,而不是帮助你。 – Bazinga 2012-07-27 18:16:46

1

正如你已经说过的,所有这些方式都是平等的。如果您使用

firstname = result.FirstName; 

你实际上是创建一个名为姓新的字符串,所以它约等于与

String fname = result.FirstName; 

这两个要求将建造一个新的字符串。我的个人偏好是使用您的最后一个选项

return result.FirstName; 

这可以节省处理器不必创建对FirstName的新引用。虽然这不是一个显着的好处,但每一点点都很重要。

+0

'String fname = result.FirstName;'不会创建一个新的字符串。它创建一个新的字符串引用。 – 2012-07-27 18:04:56

+0

我非常有信心JIT最终会得到与所有3个版本完全相同的代码,因此它在性能方面没有任何区别。 – x4u 2012-07-27 18:06:42

+0

谢谢@Tim - 我会赞成你,但我只是新来的,没有足够的代表。 – Jase 2012-07-27 18:07:45