国外大神总结的10个Java编程技巧!

域名2025-11-05 09:36:568

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

“任何可能出错的事情,***都会出错。大神”

这就是总结人们为什么喜欢进行“防错性程序设计”的原因。偏执的编程习惯有时很有意义,有时则不够清晰也不够聪明,技巧也许当你想到这样写的国外人的时候还会觉得有点怪异。下面是大神我列出的的个人感觉最有用而又偏执的 10 项 Java 编程技巧。请看:

1. 把字符串常量放在前面

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

这是编程毫无疑问的,把一种表达式转换成另一种更好的技巧表达式,并不会失去什么。国外只要我们的大神Options是真实存在的(Java 8中 Optional是WordPress模板对可以为空的对象进行的封装),不是总结吗?讨论一下…

2. 不要相信早期的JDK APIs

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

看起来很奇怪对吗?也许吧,但是看看这个Javadoc:

“如果抽象路径名表示的不是一个目录,那么这个方法返回null。否则返回一个字符串数组,其中每个字符串表示当前目录下的一个文件或目录。”

是的,***再加上判空检查,以确保正确:

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

3. 不要相信“-1”

我知道这很偏执,Javadoc中关于 String.indexOf() 的早期描述是香港云服务器这样的:

“字符在字符序列中***次出现的位置将作为结果[被返回],如果字符不存在则返回-1。”

所以,-1 就可以理所当然被拿来用,对吗?我说不对,看看这个:

谁知道呢。也许在某个特定场合下他们将会需要另一种 编码值,如果不区分大小写的话,otherString 就会被包含进去…此时或许可以返回 -2呢?谁知道呢。

毕竟,我们有非常多关于NULL——价值亿万美金的错误的讨论。为什么不开始讨论 -1呢,某种意义上来说 -1 是 null 在int类型下的另一种形式。

4. 避免意外的赋值

是的。即使***秀的程序员也可能犯这种错误(当然,不包括我。看#7)。

(假设这是JavaScript,我们暂且偏执地认为是这种语言)

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

5. 检查null和长度

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

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

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

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

是的,写成final。如果这样做对你来说没有意义,你也可以通过修改或重写字节码来改变类和方法,或者发送功能请求。作为Java技术栈公众号小编,我敢肯定的告诉你重写类/方法并不是一个好主意。

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

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

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

好吧,我承认,这一条我自己也不常用,虽然我应该用。我希望Java能像Scala语言一样,人们在所有地方都直接用 val 来表示变量,甚至都不考虑易变性,除非明确需要的时候他们才用 var 来声明变量,但是这样的机会特别少。

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

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

思考一下这个:

因为,你知道的…你的用户们,他们就像这样

相信我,我看过的多了,还有这样的

所以说偏执是有好处的。

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

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

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

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

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

在switch语句中,为所有的case都只定义了一个作用域。事实上,这些case不是真正意义上的语句,他们更像是标签,而switch就是指向这些标签的goto语句。事实上,你甚至可以把case语句和 惊人的FORTRAN77项声明 类比,对于FORTRAN,它的神秘已经超越了它的功能。

这意味着变量final int j 可以被任何case访问,不论我们是否有break。看起来并不是很直观。我们可以通过添加简单的花括号为每一个case创建一个新的嵌套的作用域,当然不要忘了在每个 case 的语句块***加 break。

结论

编程时的强迫症有时候看起来会很奇怪,会使得代码往往比必需的还要冗长。你可能会想,“啊,这种情况永远不会发生!”,但是正如我所说的,在经历了20年左右的编程生涯后,你不会想要再去修正那些只是因为编程语言的古老和固有缺陷而导致的愚蠢而不必要的bug了。因为你知道…..

现在,轮到你了!

原文链接: http://www.javacodegeeks.com/2015/08/top-10-useful-yet-paranoid-java-programming-techniques.html 

本文地址:http://www.bzve.cn/html/56e66399280.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

热门文章

全站热门

刚接触Ubuntu的朋友,有时候忘记自己设置登录密码了,不知道怎么重新设置,今天就教大家如何通过Recovery Mode来重新设置Ubuntu的帐户密码。1、我们在给电脑开机的时候,会进入开机引导的一个GRUB界面,GRUB loading, please wait,运行的这里需要按下ESC键来进入启动菜单。2、按下ESC键进入菜单后,就可以选择对Recovery Mode。3、当引导进入到Recovery Menu时,选root Drop to root shell prompt。4、这时自动以root用户登录,passwd命令重设密码,假如我的账号是xxxxxx,那么要重新设置的密码命令则是:$passwd xxxxx相关推荐:Ubuntu 下忘记用户名和登录密码的解决方法

台式电脑升级设计教程(轻松学会升级你的台式电脑,让它重焕新生)

大家都为在UBUNTU中使用聊天工具而烦燥吗?大家还为找QQ而在网上不停的找方案吗?什么lumaqq啊,EVAQQ啊!假如让你感觉 装LUMAQQ感觉不方便怎么办?假如用apt-get install eva成功安装上EVA却用不了怎么办,而且EVA又不怎么稳定怎么办?现在Gaim搞定,大家都知道GAIM中有很聊天工具可以一起使用集合。同时在一个界面上使用,方便吧!但是MSN是直接可以用的(系统装好后),而QQ需要装一个叫openq的插件,下载地址:http://textwiki.org/wiki/OpenQ。假如没有这个东西的话你怎么也上不了QQ,总会跳出来说明 你的QQ密码有误,所以这个东西是必需要要用的哦!本人下载的是一个文件。而不是DEB包,所以右键归档成OpenQ.tar.gz接着安装就OK安装方法:[root@localhost xxx]# tar zxvf openq.tar.gz[root@localhost xxx]# cd openq[beinan@localhost openq-0.3.2]#./configure --libdir=/usr/lib[beinan@localhost openq-0.3.2]# make[beinan@localhost openq-0.3.2]# make install安装好后OpenQ,我们查看一下 /usr/lib/gaim 目录中,会有两个libqq两个相关的文件;[root@localhost openq-0.3.2]# ls -lh /usr/lib/gaim/libqq*-rwxr-xr-x 1 root root 675 8月 31 11:08 /usr/lib/gaim/libqq.la-rwxr-xr-x 1 root root 8.7M 8月 31 11:08 /usr/lib/gaim/libqq.so到这儿就OK啦!

电脑时间日期设置错误的问题及解决方法(探索电脑时间日期设置错误的原因和解决方案)

系统错误5(探索电脑拒绝访问的根源和解决方案)

电脑密码错误锁定的解决方法(忘记密码或被盗的情况下,如何解除电脑锁定)

1. 安装JDK  ubuntu 11.04系统自带的Java环境是openjdk,最好使用sunjdk(具体原因不明,网上教程基本都是这样的),因此先去官方网站( http://www.oracle.com/technetwork/java/javase/downloads/index.html)下载“ Java SE 6 Update 26 ”的JDK安装包:Linux x86 - Self Extracting Installer (81.20 MB) jdk-6u26-linux-i586.bin1.1. 下载好后开始安装JDK,在终端里输入:复制代码代码如下:复制代码代码如下:复制代码代码如下:复制代码代码如下:复制代码代码如下:复制代码代码如下:复制代码代码如下:复制代码代码如下:复制代码代码如下:复制代码代码如下:复制代码代码如下:[Desktop Entry]Name=EclipseComment=Eclipse IDEExec=/opt/eclipse/eclipseIcon=/opt/eclipse/icon.xpmTerminal=falseType=ApplicationCategories=Application;Development;2.2 eclipse安装结束。

电脑时间错误的原因及解决方法(探究电脑时间错误的原因与解决方案)

热门文章

友情链接

滇ICP备2023006006号-39