错失三元运算符的机会¶
ID: cs/missed-ternary-operator
Kind: problem
Security severity:
Severity: recommendation
Precision: high
Tags:
- maintainability
- language-features
Query suites:
- csharp-security-and-quality.qls
如果 if
语句的两个分支都只是返回值或写入变量,则该语句可能难以阅读。它会占用很多行代码,并且在赋值的情况下,需要在与两个赋值不同的行上声明变量。它也不能充分表达程序员根据条件赋值或返回值的意图。
建议¶
可以使用三元运算符(?
)更好地表达此模式。这可以通过使代码更短、更易于阅读并更好地表达程序员的意图来解决上述所有问题。
示例¶
在此示例中,if
语句仅控制方法返回的内容。
class MissedTernaryOpportunity
{
static int MyAbs(int x)
{
if (x >= 0)
return x;
else
return -x;
}
}
可以使用三元运算符更简单地表达它。
class MissedTernaryOpportunityFix
{
static int MyAbs(int x)
{
return x >= 0 ? x : -x;
}
}