偏执却有用的Java编程技术

上传人:宝路 文档编号:17397283 上传时间:2017-11-11 格式:DOC 页数:8 大小:36.97KB
返回 下载 相关 举报
偏执却有用的Java编程技术_第1页
第1页 / 共8页
偏执却有用的Java编程技术_第2页
第2页 / 共8页
偏执却有用的Java编程技术_第3页
第3页 / 共8页
偏执却有用的Java编程技术_第4页
第4页 / 共8页
偏执却有用的Java编程技术_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《偏执却有用的Java编程技术》由会员分享,可在线阅读,更多相关《偏执却有用的Java编程技术(8页珍藏版)》请在金锄头文库上搜索。

1、偏执却有用的 Java 编程技术动力节点 java在沉浸于编码一段时间以后,你就会渐渐明白任何事情有可能出错,这就是为什么我们要采用“防御性编程”,即一些偏执习惯的原因。下面是动力节点的 Java 老师为大家整理的大牛眼中的10 个最有用但偏执的 Java 编程技术。一起来看一看吧:1、将 String 字符串放在最前面为了防止偶发性的 NullPointerException 异常,我们通常将 String 放置在 equals()函数的左边来实现字符串比较,如下代码:/ Badif (variable.equals(literal) . / Goodif (literal.equals(v

2、ariable) . 这是随便用脑子想想就可以做的事,从 Bad 版本的代码改写表达式到 Good 版本的代码,这中间并不会丢失任何东西。欢迎不同的观点2、不要相信早期的 JDK API在 Java 早期,编程是一件非常痛苦的事情。那些 API 仍然很不成熟,也许你已经碰到过下面的代码块:String files = file.list();/ Watch outif (files != null) for (int i = 0; i = 0) . 谁知道呢。也许到时候他们改变了编码方式,对字符串并不区分大小写,也许更好的方式是返回-2?谁知道呢。4、避免意外赋值是的。这种事情也许经常会发生。

3、/ Ooopsif (variable = 5) . / Better (because causes an error)if (5 = variable) . / Intent (remember. Paranoid JavaScript: =)if (5 = variable) . 所以你可以将比较常量放置在左侧,这样就不会发生意外赋值的错误了。5、检查 Null 和 Length无论如何,只要你有一个集合、数组等,请确保它存在,并且不为空。/ Badif (array.length 0) . / Goodif (array != null & array.length 0) . 你并不知

4、道这些数组从哪里来,也许是来自早期版本的 JDK API,谁知道呢。6、所有的方法都是 final 的你也许会告诉我你的开/闭原则,但这都是胡说八道。我不相信你(正确继承我这个父类的所有子类),我也不相信我自己(不小心继承我这个父类的所有子类)。所以对于那些意义明确的方法要严格用 final 标识。/ Badpublic void boom() . / Good. Dont touch.public final void dontTouch() . 7、所有变量和参数都是 final/ Badvoid input(String importantMessage) String answer =

5、 .;answer = importantMessage = LOL accident;/ Goodfinal void input(final String importantMessage) final String answer = .;8、重载时不要相信泛型是,它可以发生。你相信你写的超级好看的 API,它很直观,随之而来的,一些用户谁只是将原始类型转换成 Object 类型,直到那该死的编译器停止发牢骚,并且突然他们会链接错误的方法,以为这是你的错误。看下面的代码:/ Badvoid bad(T value) bad(Collections.singletonList(value);

6、void bad(List values) ./ Goodfinal void good(final T value) if (value instanceof List)good(List) value);elsegood(Collections.singletonList(value);final void good(final List values) .因为,你知道你的用户,他们就像/ This library sucksSuppressWarnings(all)Object t = (Object) (List) Arrays.asList(abc);bad(t);相信我。这一切我都

7、看到过。包括下面的这种偏执还是不错的。9、总是在 Switch 语句的 Default 中抛出异常Switch 语句它们其中一个可笑的语句我不知道该对它敬畏还是哭泣,但无论如何,既然我们坚持用 switch,那我们不妨将它用得完美,看下面的代码:/ Badswitch (value) case 1: foo(); break;case 2: bar(); break;/ Goodswitch (value) case 1: foo(); break;case 2: bar(); break;default:throw new ThreadDeath(Thatll teach them);当 v

8、alue = 3 时,将会出现无法找到的提示,而不会让人不知所谓。10、Switch 语句带花括号事实上,switch 是最邪恶的语句,像是一些喝醉了或者赌输了的人在写代码一样,看下面的例子:/ Bad, doesnt compileswitch (value) case 1: int j = 1; break;case 2: int j = 2; break;/ Goodswitch (value) case 1: final int j = 1;break;case 2: final int j = 2;break;/ Remember:default:throw new ThreadDeath(Thatll teach them);在 switch 语句中,每一个 case 语句的范围只有一行语句,事实上,这些 case 语句甚至不是真正的语句,他们就像 goto 语句中的跳转标记一样。结论偏执编程看起来似乎不可思议,有时,因为代码经常被证明是更详细一点,但并不是需求需要。你可能会想,“哦,这是绝不会发生的”,但正如动力节点 Java 老师所说。经过 20 年左右的时间编程,你不希望只修复这些愚蠢的 bug。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号