用卫语句(guard clauses)让if else更易阅读

photo of turned on laptop computer

最近在友人依Dâng师的指教下,学到了卫语句(guard clauses)。

卫语句可以使代码中的if else语句更容易理解和阅读。

if else条件在编码中颇常用。然而,过多地嵌套if语句,会使代码很难阅读和编辑。

if(true){
        if(true){
                if(true){
                        if(true){
                                if(true){
                                       if(true){
                                       }
                                }
                        }
                }
        }
 }

这时,可以考虑以卫语句代替之。

卫语句之目的,是验证条件,并在条件不满足时立即停止代码执行[1]

例如以下之代码:

for (int i = 1; i <= 100; i++) {
            if (i%3 == 0){
                if (i%4 == 0){
                    if (i%5 == 0){
                        System.out.println(i);
                    }
                }
            }
}

使用卫语句后:

for (int i = 1; i <= 100; i++) {
            if (i%3 != 0){
                continue;
            }
            if (i%4 != 0){
                continue;
            }
            if (i%5 != 0){
                continue;
            }
            System.out.println(i);
}

在修改前的代码中,有一个if语句,如果条件成立,就会执行接下来的一系列操作。而在修改后的代码中,这个if语句被改成了一个条件反向的if语句。如果条件不成立,那么就会执行continue,跳过当前循环迭代,进入下一个迭代。这样做的好处是,原本需要在if语句内部进行的操作现在可以在if语句外部进行,从而减少了代码的嵌套层次。

减少嵌套层次的好处:

  1. 提高代码可读性:减少嵌套可以让代码更加简洁,易于理解。
  2. 降低维护难度:简化的代码结构可以帮助开发人员更容易地找到和修复潜在的问题。
  3. 改善代码风格:遵循一种称为“提前返回”(early return)的编程范式,有助于编写更干净、更容易阅读的代码。

参考资料

Discover more from 山月

Subscribe now to keep reading and get access to the full archive.

Continue reading