大括号/没有大括号?

当我开始开发时,我遵循总是用{} (花括号)括起来的教程。 但是,当我开始查看其他人的代码时(例如GitHub上的类,或者更多的代码,而不是基本教程会显示的代码),但是我也看到了块语句,而没有被封装在{} ;

if($var < 15)
     $string = 'Hello, Jimmy!';
elseif($var >= 15)
     $string = 'Hello, Anne!';

是相同的

if($var < 15) { 
    $string = 'Hello, Jimmy!';
} elseif($var >= 15) {
    $string = 'Hello, Anne!';
}

我从来没有使用未包含在{}块,但是我今天使用了它们,并且我开始看到这样做的效率(它看起来更加干净,因为我经常发现我的函数充斥着{}循环,条件等。

我问的是,

a)是否有没有花括号的块的限制(;我注意到我的IDE从缩进后退回,因为我输入一行后返回if()条件?

b)在不使用{}时是否有最佳做法?

任何答案,特别是那些公司。 背景/文件关于花括号使用大括号和不使用它们的大会将不胜感激,因为我真的想了解大括号的用法:)!


您可以省略单行的{}

if(something)
  do something else

但是你不能忽略它,并继续如此:

if(something)
   do one thing
   do another
   do some more

上面的例子只有1个条件元素('做一件事')。 其余的只是无条件地运行。

是的,我以前见过的马虎方法没有{}我自己喜欢用{}的逻辑中分离出来,它更易于阅读。

所以坚持在你的代码中使用{}


最佳做法是始终使用它们。 对于其他开发人员来说,添加一行代码或删除一行代码并完全打破条件非常容易。


它主要取决于你习惯的风格。 http://en.wikipedia.org/wiki/Indent_style

if (some_error)
    something(); //Will be executed only when some_error==true
somethingelse(); //Will always be executed.

如果你不使用大括号,只有下一行是if语句的一部分。

if (some_error)  err1 = "bad1"; errorno=3;

当然,在上面的例子中,无论some_error是否为真,errno总是3。

这与for循环相同

for (i = 0; i < 10; i++)
    doSomething (i);

所以大括号标记了它开始和结束的地方。 不使用它们意味着只有下一行将受到if,for,while,...语句的影响。

此外,大括号可用于标记代码块。 当我用C ++编写代码时,我总是用花括号标记GL调用的开始和结束。

glBegin(GL_TRIANGLES); // Drawing Using Triangles
{
    glVertex3f( 0.0f, 1.0f, 0.0f); // Top
    glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left
    glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right
}
glEnd();

这样就更容易阅读和发现丢失的glEnd调用。

链接地址: http://www.djcxy.com/p/1865.html

上一篇: curly braces/no curly braces?

下一篇: Can I use hash sign (#) for commenting in PHP?