国外大神们总结的10个Java编程技巧与经验

这是一个国外大神20多年的经验总结出来的……

“任何可能出错的事情,最后都会出错。”这就是人们为什么喜欢进行“防错性程序设计”的原因。

下面是列出的有用而又偏执的 10 项 Java 编程技巧:

1. 把字符串常量放在前面通过把字符串常量放在比较函数equals()比较项的左侧来防止偶然的 NullPointerException 从来都不是一个坏主意,就像这样:


2. 不要相信早期的JDK APIs

Java刚出现的时候,编程一定是件很痛苦的事。那时的API仍然不够成熟,你可能曾经遇到过这样一段代码:

看起来很奇怪对吗?也许吧,但是看看这个Javadoc: “如果抽象路径名表示的不是一个目录,那么这个方法返回null。否则返回一个字符串数组,其中每个字符串表示当前目录下的一个文件或目录。” 是的,最好再加上判空检查,以确保正确:

糟糕!前者违反了 Java 编码中 10 个微妙的最佳实践的规则#5和#6。因此一定要记得判 null检查!

3. 不要相信“-1”

Javadoc中关于 String.indexOf() 的早期描述是这样的:“字符在字符序列中第一次出现的位置将作为结果[被返回],如果字符不存在则返回-1。”所以,-1 就可以理所当然被拿来用,对吗?我说不对,看看这个:

这篇文章看到这里小编要告诉大家应该JAVA千人(qun):1044099541,咱们不看技术怎么样,小编都欢迎,不定期分享干货,包括我自己整理的一份2020最新JAVA资料。

谁知道呢。也许在某个特定场合下他们将会需要另一种 编码值,如果不区分大小写的话,otherString 就会被包含进去…此时或许可以返回 -2呢?谁知道呢。 毕竟,我们有非常多关于NULL——价值亿万美金的错误的讨论。为什么不开始讨论 -1呢,某种意义上来说 -1 是 null 在int类型下的另一种形式。

4. 避免意外的赋值

是的。即使最优秀的程序员也可能犯这种错误(当然,不包括我。看#7)。 (假设这是JavaScript,我们暂且偏执地认为是这种语言)

再说一遍。如果你的表达式中有常量,将它放在等式左边。这样当你打算再添加一个 = 时,不容易出错。

5. 检查null和长度

不管什么时候你有一个集合、数组或者其他的,确保它存在并且不为空。

你不知道这些数组来自哪儿,也许是早期的JDK API呢?

6. 所有的方法都用 final 声明

你可以告诉我任何你想要的开闭原则,不过那都是胡说八道。我不相信你(可以正确继承我的类),也不相信我自己(不会意外地继承我的类)。因此除了接口(专门用于继承)都应该是严格的 final。

7. 所有的变量和参数都用 final 声明

就像我说的。我不相信自己不会无意间重写了某个值。这么说来,我的确一点都不相信自己。因为:

这也是为什么所有的变量和参数都用final声明的原因。


8. 重载的时候不要相信泛型

是的,这是会发生的。你觉得你写了一个超好的API,它真的是既酷炫又直观;接着就出现了一群用户,他们只是把一切类型生搬硬套进 Object 中 直到那该死的编译器停止工作,然后他们突然链接到了错误的方法,认为这一切都是你的错(事情总是这样)。 思考一下这个:

9. 总是在switch语句里加上default

Switch…作为最滑稽的表达式之一,我不知道是该心存敬畏还是默默哭泣。不管怎样,我们既然无法摆脱 switch ,在必要的时候我们最好能够正确使用它,例如:

因为在当 value=3 被引入到软件中的时候,default 就能发挥作用,使其正常运行!别和我提 enum 类型,因为这对 enums 也一样适用。


10. 用大括号隔开 switch 的每一个 case 块

事实上,switch是最坑爹的语句,任何喝醉了或是赌输了的人都可以在某种语言中使用它。看看下面这个例子:

相关文章

七年Java开发的一路辛酸史:分享面试京东、阿里、美团后的心得

前言我觉得有一个能够找一份大厂的 offer的想法,这是很正常的,这并不是我们的饭后谈资而是每个技术人的追求。像阿里、腾讯、美团、字节跳动、京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司...

3年Java经验找不到工作?别慌!教你用‘破项目’逆袭大厂offer

3年Java经验找不到工作?别慌!教你用‘破项目’逆袭大厂offer家人们谁懂啊!上个月有个老哥带着分布式电商项目来找我,开口就说'兄弟我这项目用了Redis集群+Kafka削峰,技术够顶吧?...

来自Java后端工作3年多程序员的工作经验和技术总结

1.引言毕业已经一年有余,这一年里特别感谢技术管理人员的器重,以及同事的帮忙,学到了不少东西。这一年里走过一些弯路,也碰到一些难题,也受到过做为一名开发却经常为系统维护和发布当救火队员的苦恼。遂决定梳...

Java程序员找工作总卡项目经验?(一年工作经验的java程序员工资)

Java程序员找工作总卡项目经验?说点实在的,3招让你简历有料面试不慌老铁们,最近好多Java小伙伴跟我吐槽啊——投了简历没回音,一问原因,十有八九是项目经验被质疑。要么是没做过大项目,要么是简历写得...

Java程序员找工作总被拒?教你用'渣男思维'包装项目经验

Java程序员找工作总被拒?教你用'渣男思维'包装项目经验刚又刷到个帖子:三年经验投了100家没人要,项目写得跟流水账似的……兄弟啊!你以为面试官看项目是看小说呢?人家要的是能快速上手...