是不是真的值得吗?

时间:2017-10-11 04:11:49

标签: c#

我正在开发一个由另一位开发人员制作的项目,我已经被分配了这项工作来添加额外的功能,尽管这个问题并不是关于一个应用程序,它是'关于一种语言。

在C#中,我发现自己每天大约运行50次,我需要从方法中获取值并将其存储到变量中,或者我需要存储变量,或者即使我只需要硬编码变量的东西。

我的头脑还是心脏?我的头说将它存储在一个变量中我需要在将来多次使用它,但后来我心里说让我们懒得把它添加到if检查,而不是调用变量,让我给你一个例子......

示例1:

var name = SomeClass.GetName();    
if (name.Contains("something"))
{
    // do something 
}

示例2:

if (SomeClass.GetName().Contains("something"))
{
    // do something 
}

我想我要问的是,它有什么优势吗?或者它真的不重要吗?

我通过存储这些来使用内存吗?特别是如果我在所有不同类型的方法中存储数百个解决方案?

是否值得在if中直接使用它,或者我是否应该只是为了以防万一?有人可以解释这个区别吗?如果有的话。

我在谈论如果我只使用过一次这个变量,所以不要担心“不得不在多个位置进行更改”#34;"问题,虽然如果有人确实想进入那个,我会很感激。

2 个答案:

答案 0 :(得分:4)

我认为在表现明智和记忆方面不会有任何明显的优势。但是当我们研究以下场景时,存储返回值有一些优点。

  • 调用方法(本例中为SomeClass.GetName())可能会返回null

考虑到SomeClass.GetName()可能会在某些条件下返回null,然后null.Contains()肯定会抛出NullReferenceException [这两个例子都是相同的列出]在这种情况下,您可以执行以下操作:

var name = SomeClass.GetName();    
if (name!= null && name.Contains("something"))
{
    // do something 
}
  • 需要多次使用返回值:

这里你只使用返回值来检查.Contains("something"),考虑到你想在稍后的调用方法中使用返回值,那么最好将值存储在局部变量中而不是调用这个方法反复。 如果仅用于检查contains,则将返回类型更改为布尔值并在方法中完成作业

答案 1 :(得分:1)

问自己关于这行代码的问题:

var name = SomeClass.GetName();

GetName()方法有多贵?它是通过互联网从某个地方下载文件,下载文件需要几秒钟到几分钟?或者它正在进行一些需要几秒钟到几分钟的疯狂计算。或者是从数据库获取数据?这些答案将帮助您确定是否应将其存储在变量中,然后重用该变量。

接下来的问题,即使上面的答案是“Na!它很快,也没什么特别的”,就是问问自己:“你现在这个电话中有多少个地方?1?10?100?如果你的老板有一天来,说:“你知道那种方法GetName(),我们就不会再使用它了。我们将使用另一个名为GetName2()的方法。它需要多长时间?想象一下,如果你需要在100个不同的地方进行更改。

所以我的观点很简单: 一切都取决于