如何降低 IL 嵌套深度?

How to lower IL nesting depth?

我现在正在试用 NDepend 两周。我仍然无法真正弄清楚如何降低 ILNestingDepth。我留下的标记为 "Methods too complex - critical" 的方法很少。作为一种修复方法,他们建议将方法分成更小的方法。但我无法那样解决它。教你一个方法:

第一版: ILNesting Depth of Appropriate = 7

public bool Appropriate ( CompanyQuota available, CompanyQuota used )
{
    /// - larger than available or 
    /// - less than already used area
    return !( DiskQuota > available.DiskQuota || DiskQuota < used.DiskUsage ||
        UploadQuota > available.UploadQuota || UploadQuota < used.UploadUsage ||
        DownloadQuota > available.DownloadQuota || DownloadQuota < used.DownloadUsage ||
        PersonnelQuota > available.PersonnelQuota || PersonnelQuota < used.PersonnelUsage );
}

第二版: ILNesting Depth of Appropriate = 7

public bool Appropriate ( CompanyQuota available, CompanyQuota used )
{
    /// - larger than available or 
    /// - less than already used area
    return AvailableFromTop(available) || AvailableFromBottom(used);
}

bool AvailableFromTop ( CompanyQuota available )
{
    return !( DiskQuota > available.DiskQuota ||
        UploadQuota > available.UploadQuota ||
        DownloadQuota > available.DownloadQuota ||
        PersonnelQuota > available.PersonnelQuota );
}

bool AvailableFromBottom ( CompanyQuota used )
{
    return !( DiskQuota < used.DiskUsage ||
            UploadQuota < used.UploadUsage ||
            DownloadQuota < used.DownloadUsage ||
        PersonnelQuota < used.PersonnelUsage );
}

它是如何工作的?

我到底该怎么做?

正如 NDepend 团队的@Patrick 在评论中所说,这是一份误报。因此这个问题不需要回答。

为了社区的利益,我将这个问题保留在这里,答案仅包含 Patrick 的评论,供 "too-lazy-to-read-comments" 人使用。