2017-03-05 89 views
-1

我在我的应用程序中使用了很多Azure服务,并且很多次都必须先读取一些数据,然后对其进行处理,然后更新数据库。看到下面的简单例子:使用相同的变量更新值

// Read students list 
var students = await _myRepository.GetStudents(); 

// Manipulate the data 
students.Add(student); 

// Then update the database which returns an updated list of students 
// See the two options below 

我有时使用相同的变量来获取更新的值,它工作正常。问题是,我应该总是将更新的值分配给新的变量吗?

// Option 1: Use the same variable for updated values 
students = await _myRepository.UpdateStudents(students); 

// Option 2: Use a new one 
var updatedStudents = await _myRepository.UpdateStudents(students); 

当我给你更新值新变量,很多次,我结束了这么多的该代码类型的复杂化。

+0

代码更容易理解。一般来说。重复使用变量用于不同目的是不好的做法,但取决于上下文。 –

+0

我对重用变量有同样的感觉,所以每当我这样做的时候,它都感觉不对,但如果我不重用它们,那么我会得到很多变量,这使得代码看起来比实际更复杂。 – Sam

+1

这通常是需要将代码分解成类的一个症状:单个责任.... –

回答

0

以我个人的经验,我有一个我通常遵循的规则:如果稍后可能需要使用变量进行日志记录,附加操作等,则使用新变量,但如果变量现在保持无效状态,例如在更新之前的变量,然后我重用该变量。

我发现这通常会产生最好的代码,因为你不会得到一堆无效的状态变量。这些无效变量可能会变得混乱,因为您可能不得不经常回头确定哪些变量具有有效的当前状态。

尽管如此,如果你有一个复杂的过程有多个步骤变量可能是有益的,但最终取决于任务的复杂性和步骤变量的需要。

+0

最大,我喜欢你的规则。把它作为“变量保持无效状态”是一个很好的看待它的方法,并澄清决策过程。 – Sam