绝对是后者。前者现在看起来还不错,但是当您获得更复杂的代码时,我无法想象有人会这样认为:
public int SomeFunction(bool cond1, string name, int value, AuthInfo perms)
{
    int retval = SUCCESS;
    if (someCondition)
    {
        if (name != null && name != "")
        {
            if (value != 0)
            {
                if (perms.allow(name)
                {
                    // Do Something
                }
                else
                {
                    reval = PERM_DENY;
                }
            }
            else
            {
                retval = BAD_VALUE;
            }
        }
        else
        {
            retval = BAD_NAME;
        }
    }
    else
    {
        retval = BAD_COND;
    }
    return retval;
}
比
public int SomeFunction(bool cond1, string name, int value, AuthInfo perms)
{
    if (!someCondition)
        return BAD_COND;
    if (name == null || name == "")
        return BAD_NAME;
    if (value == 0)
        return BAD_VALUE;
    if (!perms.allow(name))
        return PERM_DENY;
    // Do something
    return SUCCESS;
}
我完全承认,我从未理解过单个出口点的优势。