我见过这样的代码:
if(statement) do this; else do this;
我不喜欢这样,我认为这更清洁,更具可读性
if(statement){ do this; }else{ do this; }
这只是一个偏好问题,还是会推荐一种方式?
第一个版本的问题是,如果你返回并在if或else子句中添加第二个语句而不记得添加花括号,那么你的代码将会以意想不到的方式破解.
可维护性,使用第二种形式总是更聪明.
编辑:Ned在评论中指出了这一点,但我认为值得链接到这里.这不仅仅是一些象牙塔假设的废话:https://www.imperialviolet.org/2014/02/22/applebug.html
遗漏语句块的一个问题是其他模糊性.这是C语言的语言忽略缩进,所以没有办法分离这个:
if(one) if(two) foo(); else bar();
由此:
if(one) if(two) foo(); else bar();
我的一般模式是,如果它适合一行,我会这样做:
if(true) do_something();
如果有一个else子句,或者我想要执行的代码true
是非常长的,那么就一直支持:
if(true) { do_something_and_pass_arguments_to_it(argument1, argument2, argument3); } if(false) { do_something(); } else { do_something_else(); }
归根结底,它归结为风格和可读性的主观问题.然而,一般的编程世界几乎分为两个派对(对于使用大括号的语言):要么一直使用它们而没有例外,要么一直使用它们,例外.我是后一组的一员.
我正在使用我使用的IDE的代码格式化程序.这可能会有所不同,但可以在"首选项/选项"中进行设置.
我喜欢这一个:
if (statement) { // comment to denote in words the case do this; // keep this block simple, if more than 10-15 lines needed, I add a function for it } else { do this; }
从第一刻开始正确使用大括号应该有助于防止您不得不调试它:
if (statement) do this; else do this; do that;
我遵循的"规则"是这样的:
如果"if"语句正在测试以执行某些操作(IE调用函数,配置变量等),请使用大括号.
if($test) { doSomething(); }
这是因为我觉得你需要明确在什么条件下调用哪些函数以及程序流程在哪里.让程序员准确理解调用哪些函数以及在这种情况下设置哪些变量对于帮助他们准确理解程序正在执行的操作非常重要.
如果"if"语句正在测试以便停止执行某些操作(循环或函数中的IE流控制),请使用单行.
if($test) continue; if($test) break; if($test) return;
在这种情况下,对程序员来说重要的是快速发现不希望代码运行的异常情况,这些都是在$ test中,而不是在执行块中.
对于所有if语句,甚至是简单的语句,都使用大括号。或者,重写一个简单的if语句以使用三元运算符:
if (someFlag) { someVar= 'someVal1'; } else { someVar= 'someVal2'; }
看起来像这样更好:
someVar= someFlag ? 'someVal1' : 'someVal2';
但是,如果您绝对确定if / else块中没有其他需要,请仅使用三元运算符!