有太多嵌套的PHP if语句是不是一种糟糕的做法


Is it a bad practice to have too many nested PHP if-statements?

现在,我有这样的东西:

<?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)来消除一个嵌套。