CodeQL 文档

错失三元运算符的机会

ID: cs/missed-ternary-operator
Kind: problem
Security severity: 
Severity: recommendation
Precision: high
Tags:
   - maintainability
   - language-features
Query suites:
   - csharp-security-and-quality.qls

点击以在 CodeQL 代码库中查看查询

如果 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;
    }
}
  • ©GitHub, Inc.
  • 条款
  • 隐私