论坛首页 Java企业应用论坛

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

浏览 20821 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (16)
作者 正文
   发表时间:2011-05-30   最后修改:2011-05-31
很无聊的话题。
for语句也就算了,if语句为什么也必须加呢?(我说的是各个公司的要求)。
规范,不过是为了避免修改程序后运行出错吧?我倒觉得既然程序员修改了程序,那肯定也会去测试程序,那这样,还有必要必须后跟"{"的要求么?加了"{"会同时引起麻烦和美观的问题,视觉上就是累赘的感觉,像我这类程序员就很想去删除。
哦,出来混还没满一年,求教不加“{}”后有什么潜在的问题?
欢迎拍砖,不是铁块就行。

------------------------------------------
没想到这个简单的话题还是有很多热心人的回复,感动中。

总结了下各位的回复,加{}的理由有二:一是多编辑器如VI的问题,如果是web开发的一般不会有这方面的问题吧?二是,哦,纯粹的“规定”问题,并没有解决潜在问题的问题。关于第二点,首先要说的是,加不加{},其实并不像回复中所说的“乱套了”,就那么一点的符号,怎么可能乱了呢?就算有上万行的又经过N多人修改的代码也不会出现混乱的视觉问题,也就说,没这个规范需要。其次,如果加{}并没解决什么潜在的问题的话,那么,这个规定,就真的很蛋疼了。就好比女子的审美标准,在唐朝,以“胖”为美,而其它朝,以“瘦”为美。难道,最初提出这个规范的,是个唐朝的人?

   发表时间:2011-05-30  
我支持你,JDK源码有些都是IF不加花括号
0 请登录后投票
   发表时间:2011-05-30  
谁能保证你这一行代码永远不会被改,以后维护的人多加一行呢,而他又忘了加{}呢

至于美观方面,看代码风格了,如果是{}独占一行,那加{}肯定好看,如果{}跟在代码后面,那不加{}好看一点,如果代码谈不上风格,乱成一锅粥,那怎么都难看,哈哈
0 请登录后投票
   发表时间:2011-05-30  
如果语句足够的短,我觉得应该放到一行,且不用花括号。这样增加的可读性是显而易见的。

如果语句比较大,例如:
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 写道
谁能保证你这一行代码永远不会被改,以后维护的人多加一行呢,而他又忘了加{}呢

我经常不加括号,楼上说的如果维护的人多加一句的情况,至少在我的编程生涯中没有遇到过。
1 请登录后投票
   发表时间:2011-05-30  
chunquedong 写道


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

这就看起来不太好了。


嗯,语句比较大的,需要加if,就如for语句,就算只有一行命令也该添加,因为视觉上会更清晰。我发贴的意图,并不是为了省了那几行代码,纯粹是为了视觉阅读上的雅观。
0 请登录后投票
   发表时间:2011-05-30  
对于tab键与四个空格在不同文本编辑器中显示不同....有必要使用大扩号进行人眼对齐

PS:你可以用ssh跳到unix黑窗下用vi试试看看
0 请登录后投票
   发表时间:2011-05-30  
一段累眼睛的for循环。
echo -e "for i in `seq 7|xargs` \\ndo \\necho \$i \\ndone"|sh

程序的可读性很重要。
0 请登录后投票
   发表时间:2011-05-30  
哦!ls的二位,VI编辑器是很蛋疼!
当然对于for我说过需要加{}的,if我不知道是怎样的效果,估计也难看吧。

除了对linux的支持外,还有其它的潜在问题吗,比如WEB开发上的?
0 请登录后投票
   发表时间:2011-05-30  
这个主要是规范问题
0 请登录后投票
   发表时间:2011-05-30  
国内公司都有这些规定。
我看许多开源框架,以及JDK到处都有省略括号的地方。而且我觉得有些地方省略了括号,代码反而更好看,当然这只限于部分开源代码。
0 请登录后投票
论坛首页 Java企业应用版

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