论坛首页 编程语言技术论坛

switch 最后应加上break,由此想到的

浏览 5637 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-11-30  
如果switch中的每个case都加了break语句,最后一个case要不要加呢?

从逻缉上看是没有差别的,但今天遇到一个情况,我同事改我之前写的一段代码,直接在switch中又加了一个新的case,而原来的最后一个case没有加上break,这就导致了错误。

因此,在写switch时,最后加上一个对逻缉没有影响的break是有意义的。

就象我之前写了一个单粒的类,没有把构造设为私有,我同事直接new来用,导致了一个奇怪的错误,查了许久。

由此可以想到:java的访问控制和spring的依赖注入(分层注入),都起到了可见性限制的作用,用好这些内容,对软件开发能起到很大的作用。
   发表时间:2012-11-30  
最后一行应该是default吧~
0 请登录后投票
   发表时间:2012-12-01  
longfor5 写道
最后一行应该是default吧~

switch的default是可选的,用不用取决于业务逻缉。我文中的情况是不需要default的情况。
0 请登录后投票
   发表时间:2012-12-01  
je的水平真的让这种帖子拉低了。。。。。。。。。。。
0 请登录后投票
   发表时间:2012-12-01  
gdpglc 写道
longfor5 写道
最后一行应该是default吧~

switch的default是可选的,用不用取决于业务逻缉。我文中的情况是不需要default的情况。

只能说楼主在犯这个错误的同时也指出这个错误。这是代码规范的问题。
你同事犯的错就是没有按“每个case后面都要有break”的规范来。但是,最后就算不需要default,也要写上default:break;这也是规范问题。
只能说,你们共同犯下了这个错。
0 请登录后投票
   发表时间:2012-12-01   最后修改:2012-12-01
zhukewen_java 写道
gdpglc 写道
longfor5 写道
最后一行应该是default吧~

switch的default是可选的,用不用取决于业务逻缉。我文中的情况是不需要default的情况。

只能说楼主在犯这个错误的同时也指出这个错误。这是代码规范的问题。
你同事犯的错就是没有按“每个case后面都要有break”的规范来。但是,最后就算不需要default,也要写上default:break;这也是规范问题。
只能说,你们共同犯下了这个错。

多谢吧,之前的确不重视这个,网上找了一下还真有你说的,我今天加班,晚上有时间看看。

不过要多说一句,不要教条。java语法没这样规定,一定有它的原因。
0 请登录后投票
   发表时间:2012-12-01   最后修改:2012-12-01
kjj 写道
je的水平真的让这种帖子拉低了。。。。。。。。。。。

说这话,就是说你是水平高的呗...
不过,一句风凉话能说明你哪高呀?
最看不上的就是你这样的人,总想通过压低别人来抬高自已。

看到别人代码一定说烂,又说不出哪不好。
看到别人翻译的书,一定说翻的烂,又不能看原著。
说到什么都会,又做不了什么实际的东西。

这样人见多了。

0 请登录后投票
   发表时间:2012-12-01  
从逻缉上看是没有差别的,但今天遇到一个情况,我同事改我之前写的一段代码,直接在switch中又加了一个新的case,而原来的最后一个case没有加上break,这就导致了错误。

因此,在写switch时,最后加上一个对逻缉没有影响的break是有意义的。

就象我之前写了一个单粒的类,没有把构造设为私有,我同事直接new来用,导致了一个奇怪的错误,查了许久。
====
中肯的讲,第一件事中, 楼主的责任占70%,对方占30%。 在第二件事中,双方责任各50%,具体的讲如果文档中描述了单例模式,则对方80%责任,如果没有说明,楼主80%责任。
在修改代码时,必须要读而且读懂他人的代码,这是预防bug,提高代码质量,写出优美代码的前提。zhukewen_java 和longfor5 说的规范也是必要的,主要是为了防止那种快速修改代码而不仔细阅读的行为,但这种规范是帮助和防范新手的,对老鸟来说,不应该依赖他人遵守规范。
0 请登录后投票
   发表时间:2012-12-01  
建议不是要switch语句。改成if...else if ...语言。
0 请登录后投票
   发表时间:2012-12-01  
bambooman 写道
从逻缉上看是没有差别的,但今天遇到一个情况,我同事改我之前写的一段代码,直接在switch中又加了一个新的case,而原来的最后一个case没有加上break,这就导致了错误。

因此,在写switch时,最后加上一个对逻缉没有影响的break是有意义的。

就象我之前写了一个单粒的类,没有把构造设为私有,我同事直接new来用,导致了一个奇怪的错误,查了许久。
====
中肯的讲,第一件事中, 楼主的责任占70%,对方占30%。 在第二件事中,双方责任各50%,具体的讲如果文档中描述了单例模式,则对方80%责任,如果没有说明,楼主80%责任。
在修改代码时,必须要读而且读懂他人的代码,这是预防bug,提高代码质量,写出优美代码的前提。zhukewen_java 和longfor5 说的规范也是必要的,主要是为了防止那种快速修改代码而不仔细阅读的行为,但这种规范是帮助和防范新手的,对老鸟来说,不应该依赖他人遵守规范。


分析的不错。
0 请登录后投票
论坛首页 编程语言技术版

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