if-statement - 如何整理过多的 if 语句以提高可读性

标签 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);
}

如您所见,这很快就会变得非常困惑!在这种情况下,我应该遵循任何模式或做法吗?

最佳答案

通过使用 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/

相关文章:

javascript - 如何摆脱 if 条件并进入除 if 条件之外的 else 条件?

excel - 如何创建 "if x ≥ then multiply by y"等的公式?

java - 编写简洁优雅的Java的技巧

asp.net - JavaScript : Why if(false)?

java - Java to Kotlin构造函数方法

if-statement - 电源自动化桌面中包含多种条件

ios - 使用 if 函数设置 NSString 的值

c++ - else if作为逻辑语句怎么写?

c++ - ( var > x) 和 ( x < var) 之间有什么区别吗?

java - Java类中常量的使用