如何为可读性整理过多的if语句

Nic*_*GPS 6 if-statement coding-style

我有一些代码的例子,我经常在网站上看到我希望改进并希望得到一些帮助.我经常在page_load方法中看到5-10个嵌套的if语句,旨在消除无效的用户输入,但这看起来很难看,难以阅读和维护.

您如何建议清理以下代码示例?我试图消除的主要是嵌套的if语句.

string userid = Request.QueryString["userid"];

if (userid != ""){
    user = new user(userid);

    if (user != null){
        if (user.hasAccess){
            //etc.
        }
        else{
            denyAccess(INVALID_ACCESS);
        }
    }
    else{
        denyAccess(INVALID_USER);
    }
}
else{
    denyAccess(INVALID_PARAMETER);
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,这很快就会变得非常混乱!在这种情况下,我应该遵循任何模式或做法吗?

lem*_*mon 20

通过使用Guard Clauses先生

string userid = Reuest.QueryString["userid"];

if(userid==null)
 return denyAccess(INVALID_PARAMETER);

user = new user(userid);
if(user==null)
 return denyAccess(INVALID_USER);

if (!user.hasAccess)
 return denyAccess(INVALID_ACCESS);

//do stuff
Run Code Online (Sandbox Code Playgroud)

PS.使用return或抛出错误