【问题标题】:C# Should I initialize a bool as false or should I make it false in an else statement? Best practice?C# 我应该将 bool 初始化为 false 还是应该在 else 语句中将其设为 false?最佳实践?
【发布时间】:2020-10-16 15:46:39
【问题描述】:

我有以下两段代码,其中一段我将isSpclChar bool 初始化为false,另一段我稍后在 else 语句中捕获错误状态:

static bool CheckSpclChar(char _letter)
{
    bool isSpclChar = false;

    if(_letter == '!' || _letter == '@')
    {
        isSpclChar = true;
    }

    return isSpclChar;
}

还有:

static bool CheckSpclChar(char _letter)
{
    bool isSpclChar;

    if(_letter == '!' || _letter == '@')
    {
        isSpclChar = true;
    }
    else
    {
    isSpclChar = false;
    }

    return isSpclChar;
}

在这种情况下,哪一个是最佳做法或不太容易出错? 一点都不重要吗?

【问题讨论】:

  • 方法中只需要一行:return _letter == '!' || _letter == '@';

标签: c# boolean


【解决方案1】:

根本不需要else

bool isSpecialChar = _letter == '!' || _letter == '@';

其实你的整个方法可以简化为:

static bool CheckSpecialChar(char letter) => letter == '!' || letter == '@';

为了更好的可读性,我将“Spcl”扩展为“Special”,并从参数名称中删除了前导前缀以跟随.NET conventions。您可能还想考虑使用Is 而不是Check

最后,您可能还希望避免在方法名称中使用“特殊”一词。当我听到“特殊字符”这个词时,我往往会畏缩,因为没有更具体的上下文,它是没有意义的。 !@ 在这种情况下是什么意思?有没有更有用的描述,比如IsEscapePrefix 或类似的东西?

【讨论】:

  • 天哪!那里有很多有用的建议...谢谢你,你可能会说,我才刚刚开始,这样的建议对我来说没有价值。
【解决方案2】:

当我们需要使用这些值时,我们应该使用变量,否则你只需要编写你的方法如下。让我知道,如果这有意义?

static bool CheckSpclChar(char _letter)
 {
     if(_letter == '!' || _letter == '@')
     {
       return true;
     }

     return false;
}

【讨论】:

  • 有道理,完全不需要在这个方法上创建布尔变量,谢谢!
  • 你很好!
猜你喜欢
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
  • 2011-07-26
  • 1970-01-01
  • 1970-01-01
  • 2018-03-09
  • 2011-08-08
  • 2017-01-30
相关资源
最近更新 更多