== Why is this an issue?

https://www.sonarsource.com/docs/CognitiveComplexity.pdf[Cognitive Complexity] Complexity is a measure of how hard the control flow of a method is to understand.

Methods with high Cognitive Complexity will be difficult to maintain.

[source,csharp,diff-id=1,diff-type=noncompliant]
----
int Abs(int n) // Noncompliant: cognitive complexity = 5
{
    if (n >= 0)   // +1
    {
        return n; 
    }
    else          // +2, due to nesting
    { 
        if (n == int.MinValue)  // +1 
        { 
            throw new ArgumentException("The absolute value of int.MinValue is outside of int boundaries");
        }
        else                    // +1
        {
            return -n;
        }
    }             
}
----

They should be refactored to have lower complexity:

[source,csharp,diff-id=1,diff-type=compliant]
----
int Abs(int n) // Compliant: cognitive complexity = 3
{
    if (n == int.MinValue)  // +1 
    { 
        throw new ArgumentException("The absolute value of int.MinValue is outside of int boundaries");
    } 
    else if (n >= 0)        // +1
    {
        return n; 
    }
    else                    // +1
    { 
        return -n;
    }             
}
----

include::../resources.adoc[]
include::../rspecator-dotnet.adoc[]