现在,我有这样的东西:
<?php if ( ! is_front_page() ) : ?>
<?php if ( $count >= 1 ) : ?>
<?php if ( $count == 1 ) : ?>
<h2 class="dark-title"><?php _e( 'Top Reply (Latest)' ); ?></h2>
<?php else : ?>
<h2 class="dark-title"><?php _e( 'Top Replies (Latest)' ); ?></h2>
<?php endif; ?>
<?php endif; ?>
<?php endif; ?>
有3个嵌套的if语句,我想知道这是否是一种糟糕的做法。如果是,我该如何清理此代码?
如果条件非常简单,并且没有其他情况。
此外,绝对不鼓励打开无用的<?php
处理指令并使用不常见的endif
形式代替大括号。相反,写:
<?php
if (!is_front_page() && ($count >= 1)) {
echo '<h2 class="dark-title">';
echo _e(($count==1) ? 'Top Reply (Latest)' : 'Top Replies (Latest)');
echo '</h2>';
}
?>
如果你需要超过3级压痕,你就完蛋了。。。-Linus Torvalds
你所做的一切都很好。一般来说,你最关心的应该是你的代码是否可读,而不是你使用了多少级别的嵌套。
重复标记肯定是个坏主意。如果你想改变一些东西,比如添加一个类,你必须在两个地方完成。
在某些情况下,当您只想根据条件分配值时,可以使用三元运算符(condition ? iftrue : iffalse
),只是永远不要嵌套它。
<?php if ( ! is_front_page() && $count >= 1 ) : ?>
<h2 class="dark-title">
<?php _e( $count == 1 ? 'Top Reply (Latest)' : 'Top Replies (Latest)' ); ?>
</h2>
<?php endif; ?>
这很常见。如果你想清理代码,可以将它们重构成单独的函数/方法。在您的特定情况下,您还可以通过执行if($count==1)和elseif($count>1)来消除一个嵌套。