当前位置:  开发笔记 > 编程语言 > 正文

Java交换机案例:有或没有大括号?

如何解决《Java交换机案例:有或没有大括号?》经验,为你挑选了6个好方法。

考虑以下两个带括号的片段:

switch (var) {
  case FOO: {
    x = x + 1;
    break;
  }

  case BAR: {
    y = y + 1;
    break;
  }
}

没有括号:

switch (var) {
  case FOO:
    x = x + 1;
    break;

  case BAR:
    y = y + 1;
    break;
}

我知道,在带括号的代码段中,通过将每个案例括在大括号中来创建一个新的范围.但是,如果每个案例都不需要新范围(即没有重用变量名称),那么在案例中使用大括号是否存在任何性能损失?



1> MrValdez..:

在案例中使用大括号是否有任何性能损失?

没有.

花括号可以帮助编译器找出变量,条件,函数声明等的范围.一旦将代码编译成可执行文件,它就不会影响运行时性能.



2> TofuBeer..:

从执行的角度来看,没有性能损失.

从编译的角度来看,轻微的性能损失,因为有更多要解析,但如果有人真正关心它,他们将不得不在一行编写他们的代码:-)

现在,对于我们帖子的意见部分...我总是加入{和}因为可维护性会受到惩罚,因为你可能不得不把它们放在以后的日期,这可能是一种痛苦在以后...但这是103%的个人喜好.



3> Real Red...:

我们知道开关盒的支架不是必需的.使用大括号案例可能会导致对案例范围的混淆.

开括号通常与有意义的东西相关联,如函数的开始或循环的开始或类声明的开始或数组初始化的开始等...我们知道,当遇到中断时,一个案例突破了switch块声明.因此,使用花括号似乎意味着对于无知读者的案例的不同范围的想法.因此,为了更好地编程可读性,最好避免使用花括号.

即当我有类似的东西,

switch(i)
{
  case 1 :
  {
     //do something
  }
  System.out.println("Hello from 1");

  case 2: 
  ....
}

"Hello from 1"被打印出来.但是大括号的使用可能暗示一个无知的读者,案件以'}'结尾,已经知道在循环,方法等情况下花括号通常表示什么.

就像我们在'C'中有跳转到标签的语句一样,控制只是转移到大小写并继续它的执行.因此,有了这种理解,在为switch编写case时使用花括号只是一种不好的做法.

从技术上讲,当使用有效语法时,您可以使用额外的一对花括号来包围代码的任何块.在开关中使用大括号看起来至少对我来说很糟糕,因为它似乎给出了与我上面说过的不同的感觉.

我的建议:避免使用周围的支架来处理开关盒.


不同意这一点。是的,使用大括号并在大括号之外编写代码是非常糟糕的形式,是的,但这并没有损害大括号本身的使用。

4> jklp..:

有牙套.

切换语句有很多东西可以出错我尽量避免使用它们,即

    忘记休息,从而让案件陷入困境

    忘记默认情况,从而没有捕获无条件的条件

    意外地在case语句之间重用变量,或者更糟糕的是,影响在case语句之间共享变量的变量.

使用大括号是防止在case语句之间有意和无意地共享变量的一种方法


包括第1点和第2点对这个问题有误导性(对我而言); 你的结束线应该明确地说,大括号只能解决3 - 我认为你的意思是大括号排除了需要休息,然后尝试了.

5> Andy White..:

这个问题可能会被关闭为"争论性"(BRACE WAR!),但是到底是什么.我实际上喜欢案件之后的大括号.对我而言,丑陋的切换语法看起来更像是其他语言结构.(在这种"案例"中使用大括号不会受到惩罚)


whitespace ==标签和空格的混合==糟糕(只是想我会把标签与空间评论混合在一起)

6> Miserable Va..:

您说可以省略大括号,因为没有重用变量名称.通过重用变量名,我假设你的意思是声明一个相同类型的新变量.

大括号实际上是最有用的,以确保您不会case错误地在不同的s中重用相同的变量.它们今天没有声明任何变量,但有人会在明天添加它们而没有大括号,代码容易出错.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有