问题描述
编写一个非常简单的函数以在满足条件时有效地执行一个语句的最易读的方法是什么?
我觉得最易读的是:
function doSomething(myNumber){
if(myNumber !== null && myNumber > 5){
doTheThing();
}
}
然而,我的同事坚持使用guard子句使任何东西更具可读性,并且总是像这样编写这个函数:
function doSomething(myNumber){
if(myNumber === null || myNumber <= 5)
return;
doTheThing();
}
我知道保护子句在更大的函数中更具可读性,尤其是在需要检查多个条件和/或需要抛出异常的情况下。但是在这样的情况下,我总是需要做三遍才能理解在哪种情况下会执行 doTheThing(),对于这样一个简单的函数来说,这似乎很荒谬。
解决方法
这不是一个真正的技术问题,而是一种风格的选择。
您可以通过多种方式编写该函数,并且编译器会尽可能地对其进行优化。至于“可读性”,这完全取决于程序员的选择。只要遵循语言规则和标准,那么任何选择都可以。当然,如果你在团队中工作,最好就某种风格达成一致,这样每个人都可以处理代码而不会感到困惑。
就个人而言,如果我真的想让它可读,我会这样做:
function doSomething(myNumber)
{
if(myNumber != null && myNumber > 5)
{
doTheThing();
}
}
另一方面,如果我想要更少的代码行,我会选择这个:
function doSomething(myNumber) {
if(myNumber == null || myNumber <= 5) return;
doTheThing();
}
同样重要的是要考虑 if 语句应该如何。在这种情况下,您涵盖了所有可能性,但请记住这一点以避免意外错误。