If statement 使用没有大括号的if语句是一种不好的做法吗?
我见过这样的代码:If statement 使用没有大括号的if语句是一种不好的做法吗?,if-statement,coding-style,curly-braces,If Statement,Coding Style,Curly Braces,我见过这样的代码: if(statement) do this; else do this; someVar= someFlag ? 'someVal1' : 'someVal2'; if( statement ) { // let's do this } else { // well that sucks } 然而,我认为这更具可读性: if(statement){ do this; }else{ do this; } 既然这两种
if(statement)
do this;
else
do this;
someVar= someFlag ? 'someVal1' : 'someVal2';
if( statement ) {
// let's do this
} else {
// well that sucks
}
然而,我认为这更具可读性:
if(statement){
do this;
}else{
do this;
}
既然这两种方法都有效,那么这仅仅是一个使用哪种方法的偏好问题,还是一种方法比另一种方法更值得推荐?我一直试图使我的代码标准化,并且看起来尽可能接近相同的代码。这使得其他人在负责更新时更容易阅读。如果你做了第一个例子,并在中间添加一行,它就会失败。 不起作用: 如果(声明) 这样做; 而这个,; 其他的
这样做 第一个版本的问题是,如果返回并在if或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(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();
}
最终,它归结为风格和可读性的主观问题。然而,一般的编程世界几乎分成两部分(对于使用大括号的语言):要么无一例外地一直使用大括号,要么无一例外地一直使用大括号。我是后一组的一员。从一开始就正确使用大括号应该有助于避免您不得不调试以下内容:
if (statement)
do this;
else
do this;
do that;
这是一个偏好的问题。我个人使用这两种风格,如果我有理由相信我不需要再添加更多的语句,我会使用第一种风格,但如果可能的话,我会使用第二种。由于您无法在第一种样式中添加更多语句,因此我听到一些人建议不要使用它。但是,第二种方法会产生额外的代码行,如果您(或您的项目)使用这种编码样式,那么对于简单的if语句,第一种方法是非常首选的:
if(statement)
{
do this;
}
else
{
do this;
}
但是,我认为解决这个问题的最佳方法是使用Python。使用基于空格的块结构,创建if语句没有两种不同的方法:只有一种方法:
if statement:
do this
else:
do this
虽然这确实有一个“问题”,即您根本不能使用大括号,但您确实获得了这样的好处:第一种样式不再使用更多的行,它有能力添加更多语句。我同意大多数答案,即最好在代码中显式使用大括号。就我个人而言,我会采用一套编码标准,并确保团队中的每个人都知道并遵守这些标准。在我工作的地方,我们使用.NET项目发布的编码标准。对所有if语句使用大括号,即使是简单的语句。或者,重写一个简单的if语句以使用三元运算符:
if (someFlag) {
someVar= 'someVal1';
} else {
someVar= 'someVal2';
}
这样看起来好多了:
if(statement)
do this;
else
do this;
someVar= someFlag ? 'someVal1' : 'someVal2';
if( statement ) {
// let's do this
} else {
// well that sucks
}
但是,只有在绝对确定if/else块中没有其他需要的内容时,才使用三元运算符 就我个人而言,我使用第一种样式只是过早地从方法中抛出异常或返回。就像函数开始时的参数检查一样,因为在这种情况下,我很少有一件事情要做,而且从来没有其他事情要做 例如:
if (argument == null)
throw new ArgumentNullException("argument");
if (argument < 0)
return false;
if(参数==null)
抛出新ArgumentNullException(“参数”);
if(参数<0)
返回false;
否则,我使用第二种样式。我更喜欢使用大括号。添加大括号使其更易于阅读和修改 以下是一些使用大括号的链接:
- 省略语句块的一个问题是else歧义。也就是说,受C语言启发的语言忽略了缩进,因此无法将其分开:
if(one)
if(two)
foo();
else
bar();
由此:
if(one)
if(two)
foo();
else
bar();
根据我的经验,第一种形式唯一(非常)微小的优点是代码可读性,第二种形式增加了“噪音” 但对于现代IDE和代码自动生成(或自动完成),我强烈建议使用第二种形式,这样您就不会花费额外的时间键入大括号,并且可以避免一些最常见的错误 有足够的能源消耗的错误,人们只是不应该打开大门大浪费时间 编写代码时要记住的最重要的规则之一是一致性。无论是谁编写的,每一行代码都应该以相同的方式编写。严格防止bug“发生”;) 这与清晰明确地命名变量、方法、文件或正确缩进它们是一样的
当我的学生接受这一事实时,他们不再反对自己的源代码,他们开始将编码视为一种真正有趣、刺激和创造性的活动。他们挑战他们的思想,而不是他们的神经 我个人的偏好是混合使用空格和括号,如下所示:
if(statement)
do this;
else
do this;
someVar= someFlag ? 'someVal1' : 'someVal2';
if( statement ) {
// let's do this
} else {
// well that sucks
}
我认为这看起来很干净,使我的代码很容易阅读,最重要的是-调试。我更喜欢放一个大括号。但有时,三元运算符有帮助 代替:
int x = 0;
if (condition) {
x = 30;
} else {
x = 10;
}
我们应该简单地做:intx=condition?30 : 20;代码>
再想象一个例子:
if (condition)
x = 30;
else if (condition1)
x = 10;
else if (condition2)
x = 20;
如果你把大括号放进去会更好。我遵循的“规则”是:
如果“If”语句正在测试以便执行某些操作(即调用函数、配置变量等),请使用大括号
if($test)
{
doSomething();
}
这是因为我觉得你需要弄清楚调用了什么函数,程序的流程在什么条件下进行。让程序员准确地理解在这种情况下调用的函数和设置的变量是imp