我试图用嵌套的if代码重构某些嵌套循环,然后隔离其中一个嵌套的if并创建了自己的方法。
任何重构这种类型代码的技巧都将受到赞赏。
注意:这些仅是示例,原始代码具有很多嵌套循环和if嵌套。
先前的代码:
function bar()
{
$is_baz = 'BAZ';
$is_bas = 'BAS';
while (TRUE) {
echo 'Im';
if ($is_baz == 'BAZ') {
if ($is_bas == 'BAS') {
echo 'here';
break;
} else {
echo 'not here';
}
}
echo '!!!';
break;
}
echo 'too';
}
重构代码:
function foo($is_bas)
{
if ($is_bas == 'BAS') {
echo 'here';
break;
} else {
echo 'not here';
}
}
function bar()
{
$is_baz = 'BAZ';
$is_bas = 'BAS';
while (TRUE) {
echo 'Im';
if ($is_baz == 'BAZ') {
foo($is_bas);
}
echo '!!!';
break;
}
echo 'too';
}
预期结果: Imheretoo
答案 0 :(得分:1)
您不能直接从函数内部中断外循环,但可以返回一个值来告知外循环中断:
function foo($is_bas)
{
if ($is_bas == 'BAS') {
echo 'here';
return true;
}
return false;
}
function bar()
{
$is_baz = 'BAZ';
$is_bas = 'BAS';
while (TRUE) {
echo 'Im';
if ($is_baz == 'BAZ') {
if (foo($is_bas)) break;
}
echo '!!!';
break;
}
echo 'too';
}
bar();
输出:
Imheretoo
答案 1 :(得分:0)
function foo($is_bas)
{
if ($is_bas == 'BAS') {
echo 'here';
return true;
}
echo 'not here';
return false;
}
function bar()
{
$is_baz = 'BAZ';
$is_bas = 'BAS';
while (TRUE) {
echo 'Im';
if ($is_baz == 'BAZ' && foo($is_bas)) {
break;
}
echo '!!!';
break;
}
echo 'too';
}
bar();