Which of the following technique is better?
假设我有三个条件:条件1、条件2、条件3。如果满足所有条件,则方法/函数返回true,否则返回false。
技术一:
1 2 3 4 5 6 | function check(){ if(Condition1 is true AND Condition2 is true AND Condition3 is true){ return true; } return false; } |
技术二:
1 2 3 4 5 6 7 8 9 10 11 12 13 | function check(){ if(Condition1 is false){ return false; } if(Condition2 is false){ return false; } if(Condition3 is false){ return false; } return true; } |
哪种技术更好?
"更好"是主观的。
1 | return (Condition1 && Condition2 && Condition3); //"Better" yet? |
取决于非人工代码中可读性和可维护性更高的内容。
就我个人而言,我是一个尽可能早返回的粉丝,当这样做是有意义的,并且它增加了可读性。
我会使用技巧3:
1 2 3 | function check() { return Condition1 && Condition2 && Condition3; } |
不需要与true进行比较,甚至不需要使用
1 2 3 | function check(){ return (Condition1 && Condition2 && Condition3); } |
我认为在一个方法中最好有一个唯一的返回语句。
上面的那个比较好,反正会短路。这意味着如果Condition1为false,它将不会检查Condition2或Condition3,因此不使用第二个方法保存任何内容。
另外,跳过"是真的"位,您只需执行以下操作:
1 | return (Condition1 && Condition2 && Condition3) |
我更喜欢第一种技巧,因为:少一行代码少2的回报。
但每个人对这样的问题都有不同的看法。
两者都不。最好的选择是直接返回表达式的值。没有必要再赘述了。另外,javascript没有
1 2 3 | function check() { return Condition1 && Condition2 && Condition3; } |
我通常认为代码和重复越少越好。我可能会去
1 2 3 4 | function check() { return Condition1 AND Condition2 AND Condition3 ; } |
1 2 3 | function check() { return condition1 && condition2 && condition3; } |
最简单的解决方案是找到布尔值,然后表达式并返回它。
最理想的解决方案是:
1 2 3 4 5 6 7 | function check() { var usefulConditionName = /* long condition */; var secondUsefulConditionName = /* long condition */; return (usefulConditionName && secondUsefulConditionName); } |