C# 我应该将 bool 初始化为 false 还是应该在 else 语句中将其设为 false?最佳实践?
C# Should I initialize a bool as false or should I make it false in an else statement? Best practice?
我有以下两段代码,在一段代码中,我将 isSpclChar
布尔值初始化为 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;
}
在这种情况下,哪些是最佳实践或更不容易出错?
一点都不重要吗?
根本不需要 else
:
bool isSpecialChar = _letter == '!' || _letter == '@';
其实你的整个方法可以简化为:
static bool CheckSpecialChar(char letter) => letter == '!' || letter == '@';
为了更好的可读性,我将“Spcl”扩展为“Special”,并从参数名称中删除了前导前缀以跟在 .NET conventions 之后。您可能还想考虑使用 Is
而不是 Check
.
最后,您可能还想避免在方法名称中使用“特殊”一词。当我听到“特殊字符”这个词时,我往往会畏缩,因为如果没有更具体的上下文,它就毫无意义。 !
和 @
在这种情况下是什么意思?您是否可以提供更有用的描述,例如 IsEscapePrefix
或类似的描述?
当我们需要使用那个值时,我们应该使用变量,否则你只需要写你的方法如下。如果这有意义,请告诉我?
static bool CheckSpclChar(char _letter)
{
if(_letter == '!' || _letter == '@')
{
return true;
}
return false;
}
我有以下两段代码,在一段代码中,我将 isSpclChar
布尔值初始化为 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;
}
在这种情况下,哪些是最佳实践或更不容易出错? 一点都不重要吗?
根本不需要 else
:
bool isSpecialChar = _letter == '!' || _letter == '@';
其实你的整个方法可以简化为:
static bool CheckSpecialChar(char letter) => letter == '!' || letter == '@';
为了更好的可读性,我将“Spcl”扩展为“Special”,并从参数名称中删除了前导前缀以跟在 .NET conventions 之后。您可能还想考虑使用 Is
而不是 Check
.
最后,您可能还想避免在方法名称中使用“特殊”一词。当我听到“特殊字符”这个词时,我往往会畏缩,因为如果没有更具体的上下文,它就毫无意义。 !
和 @
在这种情况下是什么意思?您是否可以提供更有用的描述,例如 IsEscapePrefix
或类似的描述?
当我们需要使用那个值时,我们应该使用变量,否则你只需要写你的方法如下。如果这有意义,请告诉我?
static bool CheckSpclChar(char _letter)
{
if(_letter == '!' || _letter == '@')
{
return true;
}
return false;
}