我有一个我经常在网站上看到的代码示例,我想改进这些代码并希望得到一些帮助。我经常在 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);
}
如您所见,这很快就会变得非常困惑!在这种情况下,我应该遵循任何模式或做法吗?
最佳答案
通过使用 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
附注。使用返回或抛出错误
关于if-statement - 如何整理过多的 if 语句以提高可读性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1649248/