避免在复杂的if / else语句中复制代码

mpdc

我一直遇到这个问题:您有一系列if/else语句,预期结果可能来自两个完全不同的分支,并且最终您在两个分支之间都重复了代码。这是一个例子:

if (condition1) {
    return error
} else {
    if (condition2) {
        return intendedResult
    } else {
        if (condition3) {
            return error
        } else {
            return intendedResult
        }
    }
}

目前,我的PHP脚本中存在此问题,预期结果约为200行PHP查询,HTML和其他if/else语句。这是何时应该使用函数的主要示例吗?return在一个连接字符串,所有的代码?

编辑:

感谢您的回复。我可以看到我的逻辑需要整理。如果我举了一个真实的例子,您能帮我重组我的逻辑吗?我认为这比我的伪代码要复杂一些。

从数据库中提取两个日期,$lift_deadline$show_guide_close根据今天日期与这些日期的关系,执行以下操作:

if ($lift_deadline > $today) {
    echo "No access until " . $lift_deadline;
} else {
    if ($lift_deadline !== "0000-00-00") {
        if ($today > $show_guide_close) {
            $use_date = $show_guide_close;
        } else {
            $use_date = $lift_deadline;
        }
        echo "HTML Table"; // Intended result goes here, using $use_date
    } else {
        if ($show_guide_close > $today) {
            echo "No access until " . $show_guide_close;
        } else {
            $use_date = $show_guide_close;
            echo "HTML Table"; // Intended result also goes here
        }
    }
}
史蒂夫

解决方案的一部分当然是将intendedResult代码变成一个单独的方法,但是仅重新定义条件可以有所帮助:

if ($condition1) {
    return 'error';
}
if (!$condition2 && $condition3) {
    return 'error';
}
return $this->intendedResult();

这可以进一步简化为:

return ($condition1 || $condition3) ? 'error' : $this->intendedResult();

但这可能不那么可读,也并不能真正说明我的观点,这就是汤姆提到的使控制结构扁平化的观点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

VBA - 如何避免在 select-case 语句中复制粘贴代码?

来自分类Dev

提高圈复杂代码if-else语句

来自分类Dev

减少代码的复杂度if-else语句

来自分类Dev

if then ... else 语句中的重复代码

来自分类Dev

在tsql中使用布尔代数以避免CASE语句或处理复杂的WHERE条件

来自分类Dev

避免代码复制

来自分类Dev

避免使用JetBrains Exposed在插入和更新语句中重复代码

来自分类Dev

webpack反应:在导入语句中避免使用“ ..”

来自分类Dev

避免在C ++中的if语句中增加

来自分类Dev

避免在select语句中显示重复的值

来自分类Dev

避免在以下语句中分支

来自分类Dev

catch语句中的else语句是否可以有逻辑代码?

来自分类Dev

NetLogo:如果在else语句中复制标题

来自分类Dev

简单if else语句的时间复杂度

来自分类Dev

如何避免for循环中的else语句?

来自分类Dev

我想避免很多if-else语句

来自分类Dev

如何在xHtml的IF-Else语句中插入HTML代码?

来自分类Dev

我可以在角度“ else”语句中制作CSS代码吗?

来自分类Dev

if语句中来自else的数百行垃圾代码

来自分类Dev

尝试在else语句中警告无效代码-catch

来自分类Dev

有没有办法避免在 Oracle 中使用子查询计算复杂表达式的部分值,而代码仍然易于维护?

来自分类Dev

我编写的代码在“if”语句中运行良好,但在“else”语句中不起作用

来自分类Dev

在复杂的Select语句中将列显示为行-SQL

来自分类Dev

避免复制很多按钮的代码

来自分类Dev

避免在函数内部复制代码(仅限 Javascript)

来自分类Dev

if else语句中的错误

来自分类Dev

If / Else:在If语句中添加“或”

来自分类Dev

在else语句中返回

来自分类Dev

重构代码以避免goto语句

Related 相关文章

热门标签

归档