[改善Java代码]break万万不可忘
2016-04-21 16:37
507 查看
建议15:break万万不可忘
此类问题发生得非常频繁,但也很容易发现,只要做一下单元测试(Unit Test),问题立刻就会被发现并解决掉,但如果是在一堆的case语句中,其中某一条漏掉了break关键字,特别是在单元测试覆盖率不够高的时候(为什么不够高?在大点的项目中蹲过坑、打过仗的兄弟们可能都知道,项目质量是与项目工期息息相关的,而项目工期往往不是由项目人员决定的,所以如果一个项目 的单元测试覆盖率能够达到60%,你就可以笑了),也就是说分支条件可能覆盖不到的时候,那就会在生产中出现大事故了。
记住在case语 句后面随手写上break,养成良好的习惯。
对于此类问题,还有一个最简单的解决办法:修改IDE的警告级别,例如在Eclipse中,可以依次点击 Performaces→Java→Compiler→Errors/Warnings→Potential Programming problems,然后修改‘switch’case fall-through为Errors级别,如果你胆敢不在case语句中加入break,那Eclipse直接就报个红叉给你看,这样就可以完全避免 该问题的发生了。
public class Client { public static void main(String[] args) { System.out.println("2 = "+toChineseNumberCase(2)); } //把阿拉伯数字翻译成中文大写数字 public static String toChineseNumberCase(int n) { String chineseNumber = ""; switch (n) { case 0:chineseNumber = "零"; break; case 1:chineseNumber = "壹"; case 2:chineseNumber = "贰"; case 3:chineseNumber = "叁"; case 4:chineseNumber = "肆"; case 5:chineseNumber = "伍"; case 6:chineseNumber = "陆"; case 7:chineseNumber = "柒"; case 8:chineseNumber = "捌"; case 9:chineseNumber = "玖"; } return chineseNumber; } }
此类问题发生得非常频繁,但也很容易发现,只要做一下单元测试(Unit Test),问题立刻就会被发现并解决掉,但如果是在一堆的case语句中,其中某一条漏掉了break关键字,特别是在单元测试覆盖率不够高的时候(为什么不够高?在大点的项目中蹲过坑、打过仗的兄弟们可能都知道,项目质量是与项目工期息息相关的,而项目工期往往不是由项目人员决定的,所以如果一个项目 的单元测试覆盖率能够达到60%,你就可以笑了),也就是说分支条件可能覆盖不到的时候,那就会在生产中出现大事故了。
记住在case语 句后面随手写上break,养成良好的习惯。
对于此类问题,还有一个最简单的解决办法:修改IDE的警告级别,例如在Eclipse中,可以依次点击 Performaces→Java→Compiler→Errors/Warnings→Potential Programming problems,然后修改‘switch’case fall-through为Errors级别,如果你胆敢不在case语句中加入break,那Eclipse直接就报个红叉给你看,这样就可以完全避免 该问题的发生了。
相关文章推荐
- Eclipse中引用了lint工具,打包时报错
- java要注意的问题2
- Java实验3 类的多态性和接口
- xml与javaBean的互相转化
- 接上一篇 word2vec调用demo
- weblogic服务器部署web代理修复weblogic的JAVA反序列化漏洞
- JAVA--浅谈线程
- [改善Java代码]易变业务使用脚本语言编写
- java IO 一 (读写字符串)
- JAVA守护线程
- spring整合消息队列rabbitmq
- JavaMail类
- Java类代码块执行顺序
- java要注意的问题1
- Java反射机制Class类的用法详解
- SpringMvc、Maven整合FreeMarker--访问不到js、css
- JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分
- 启动报错: org.springframework.web.context.ContextLoaderListener
- Spring容器启动后注入service到Servlet并自动执行
- Java 泛型的限定