声明变量只是为了使代码易于阅读,编程最佳实践 C#

Declare variables just to make code human readable, programming best practices C#

我想知道声明变量是否只是为了使代码(例如 if 语句中的长条件)更易于阅读,或者这是否浪费资源并且使用详细注释更好?

这是一个简单的例子。

//declare variables for if statement only
int price = getProductionCost() + getTax() + getPurchaseMethod() + etc + etc;
int shipping = getLocation() + getShippingType() + etc;

if (price + shipping > 1000)
{
    // Is this better practice using variables?
}

// if price + shipping > 1000
if (getProductionCost() + getTax() + getPurchaseMethod() + etc + etc + getLocation() + getShippingType() + etc > 1000)
{
    // or is this option better practice with commenting and no variables?
}

我也知道在同一方法中存在变量被修改的风险,这是一个缺点。我试图寻找这方面的最佳实践,但找不到任何东西,也不确定要搜索什么。谢谢。

一般来说,如果您添加注释,您也可以简单地让您的代码自夸,这样它就不需要注释了。话虽如此,您应该始终考虑制作一个变量,以增强对代码的理解。

然而,保持一个长而复杂的表情可能会非常糟糕。因此,为了可维护性,您还应该考虑将代码拆分为更小、更易于阅读的部分。

我会选择变量以使 if 语句看起来更干净。

阅读代码的次数多于编写代码的次数,但是没有什么能阻止您也写注释。只是不要过度!

if 条件总是出现在方法块中,创建局部作用域变量就可以了。 关于您提到的风险:我认为这不是风险,因为根据 "best practices" 我们不会创建很长的方法,简而言之,我们不会误认为哪些变量不需要修改。另外你可以在变量上写一个注释,这样其他打算修改代码的开发人员就会知道what/why他在做什么。 PS: 加评论总是好的,把它们放在你认为可以评论的地方。

使用注释的危险在于它们可能会过时。考虑将阈值更改为 1100,但忘记更改注释的情况:

// if price + shipping > 1000
if (getProductionCost() + getTax() + getPurchaseMethod() + etc + etc + getLocation() + getShippingType() + etc > 1100)
{
    //
}

现在看代码的人不知道错误是在注释中,还是代码中。

出于这个原因,最好选择易于阅读的代码而不是难以阅读的带有注释的代码。

您可以通过将计算拆分成各自的方法来进一步增强代码,而不是使用局部变量并使用 1000 的常量:

public void SomeMethod()
{
    if (CalculatePrice() + CalculateShipping() > CostThreshold)
    {
        // do something
    }
}

...

private static int CalculatePrice() => getProductionCost() + getTax() + getPurchaseMethod() + etc + etc;
private static int CalculateShipping() => getLocation() + getShippingType() + etc;

我觉得这样更好:

if (price + shipping > 1000)
{
    // Is this better practice using variables?
}

但是你应该用大写第一个符号来写你的方法名称:

// Like this
GetProductionCost()

// Not like this
getProductionCost()