论坛首页 Java企业应用论坛

单命令行下,if 必须加"{}" 的问题

浏览 20820 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (16)
作者 正文
   发表时间:2011-06-01  
以前看过一程序员写的关于if加不加{}问题,他说:“新手刚学编程的时候,会按照规定都加上{},等干个两三年有点儿经验了,发现不加{}会显的自己很有水平,觉的自己很牛,这时候问题来了,程序中出现了问题,看着代码对自己说,代码没问题啊,怎么会有错呢,于是没日没夜的加班找bug,等到最后找到问题的所在了,哦!!!!,原来TMD是if后没加{},这时候才长了记性,以后每写完if都会加上{}。。。。
0 请登录后投票
   发表时间:2011-06-02  
还是加上{}吧
0 请登录后投票
   发表时间:2011-06-02  
当然是要加的啦。
0 请登录后投票
   发表时间:2011-06-02  
今天回顾了一下我的旧代码,发现没有加{}的绝大多数是在这种情况下:

foo(arg)
{
  if (arg == null) return;
  if (!check()) return;

  //do something;
}

也就是说,大部分情况是因为if后面就一句return,而且还是在函数的最开始。
0 请登录后投票
   发表时间:2011-06-03  
规范就是规范,是前人总结来的,如果没有掌握规范的要义,先要去学着适应规范,然后再去怀疑。当然不是说怀疑的精神不对。
0 请登录后投票
   发表时间:2011-06-03  
leiyanglei 写道
java技术交流群:95443740

0 请登录后投票
   发表时间:2011-06-03  
chunquedong 写道
如果语句足够的短,我觉得应该放到一行,且不用花括号。这样增加的可读性是显而易见的。

如果语句比较大,例如:
if ( a > 0 ) 
   if (b < 0 ) 
      a++;
   else if (a < b) 
      b++; 
else 
   a += b; 

这就看起来不太好了。

另外C语言中的宏可能导致微妙的问题:
#define MM if (b > a) b++;

if (a > 0)
  MM()
else
  a -= b;
//相当于
if (a > 0);
  if (b > a) b++;
  else
    a -= b;

这样代码的逻辑完全变了。

003 写道
谁能保证你这一行代码永远不会被改,以后维护的人多加一行呢,而他又忘了加{}呢

我经常不加括号,楼上说的如果维护的人多加一句的情况,至少在我的编程生涯中没有遇到过。

有道理
0 请登录后投票
   发表时间:2011-06-03  
个人习惯问题,反正我看着别扭,如果我是头我一定要求他们都加上。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics