我需要帮助改进我的验证码

时间:2015-11-06 03:35:01

标签: c# complexity-theory

评估时,我的代码的圈复杂度得分为10.什么是圈复杂度,任何人都可以提供有关降低以下代码复杂性的建议:

public override bool Validate(Control control, object value)
{
    if (value == null && !_IsAllowNull)
    {
        ErrorText = "Please provided valid number without a decimal point.";
        return false;
    }
    else
    {
        if (value.ToString().Contains("."))
        {
            ErrorText = "Decimal value is not allowed";
            return false;
        }
        else
        {
            if (!value.IsNumber())
            {
                ErrorText = "Please provided valid number without a decimal point.";
                return false;
            }
            else
            {
                if (value.ToInt() < _minValue || value.ToInt() > _maxValue)
                {
                    ErrorText = "Value should not be greater than " + _maxValue + " or less than " + _minValue;
                    return false;
                }
            }
        }
    }

    return true;
}

谢谢。

3 个答案:

答案 0 :(得分:2)

由于您的验证检查返回false,因此您不需要else部分,因此代码可以继续进行下一次检查:

public override bool Validate(Control control, object value)
{
    if (value == null && !_IsAllowNull)
    {
        ErrorText = "Please provided valid number without a decimal point.";
        return false;
    }

    if (value.ToString().Contains("."))
    {
        ErrorText = "Decimal value is not allowed";
        return false;
    }

    if (!value.IsNumber())
    {
        ErrorText = "Please provided valid number without a decimal point.";         
        return false;
    }

    if (value.ToInt() < _minValue || value.ToInt() > _maxValue)
    {
        ErrorText = "Value should not be greater than " + _maxValue + " or less than " + _minValue;
        return false;
    }  

    return true;
}

答案 1 :(得分:1)

[[

答案 2 :(得分:1)

这样你的方法复杂性得分就达到了2

NULL