当前位置: 首页 > 科技观察

国外高手总结的10个Java编程技巧!

时间:2023-03-19 21:19:50 科技观察

这是一位拥有20多年经验的外国大师总结出来的……“凡是能出错的,就一定会出错。”这就是人们喜欢进行“防错编程”的原因。偏执狂的习惯有时是有道理的,有时它不够清晰或不够明亮,当你想到以这种方式写它的人时,可能有点奇怪。下面是我个人认为最有用和偏执的10个Java编程技巧列表。参见:1.把字符串常量放在前面把字符串常量放在比较函数equals()的左边,这样可以防止意外的NullPointerExceptions,就像这样:毫无疑问,转换不会丢失任何东西一种表达方式变成另一种更好的表达方式。只要我们的Options是真实的(Java8中的Optional是对可以为空的对象的封装),不是吗?讨论...2.不要相信早期的JDKAPIJava刚出现的时候,编程一定是一件痛苦的事情。当时API还不成熟,你可能遇到过一段看起来很奇怪的代码吧?也许吧,但看看这个Javadoc:“如果抽象路径名表示目录以外的其他内容,则此方法返回null。否则它返回一个字符串数组,其中每个字符串表示当前目录下的一个文件或目录。”是的,***加上空检查以确保它是正确的:哎呀!前者违反了Java编码中10个微妙的最佳实践的规则#5和#6。所以一定要记住空检查!3.不要相信“-1”我知道这是偏执,Javadoc中String.indexOf()的早期描述是这样的:“字符序列中第一个出现的字符的位置将被[返回]结果,如果该字符不存在,则返回-1。”那么,-1可以理所当然地使用,对吧?我说不,看看这个:谁知道呢。也许在特定情况下,他们将需要另一个编码值,如果不区分大小写,则将包含otherString...在这种情况下可能会返回-2吗?谁知道。毕竟,我们有很多关于NULL的讨论——价值数十亿的漏洞。为什么不开始说-1呢,从某种意义上说-1是int类型中null的另一种形式。4.避免意外赋值是的。即使是最好的程序员也会犯这个错误(当然不包括我。参见#7)。(假设这是JavaScript,让我们暂时对这种语言保持偏执)再说一遍。如果你的表达式中有一个常数,把它放在等式的左边。这使得当您尝试添加另一个=时更不容易出错。5.检查空值和长度每当你有一个集合、数组或其他任何东西时,确保它存在并且不为空。你不知道这些数组是从哪里来的,也许是早期的JDKAPI?6.所有的方法都声明为final你可以告诉我你想要的任何开闭原则,但那都是废话。我不相信你(正确地继承我的班级),也不相信我自己(不意外地继承我的班级)。因此,除了接口(特别是用于继承)之外的所有内容都应该是严格最终的。是的,写成最终的。如果这样做对您没有意义,您还可以通过修改或重写字节码来更改类和方法,或者发送功能请求。作为一个Java技术栈的公众号小编,我可以肯定的告诉你,重写类/方法并不是一个好主意。7.所有变量和参数都像我说的那样声明为final。我不相信我没有不小心覆盖了一个值。话虽这么说,我真的一点都不相信自己。因为:这就是为什么所有变量和参数都用final声明的原因。好吧,我承认,我自己不使用这个,尽管我应该使用。我希望Java像Scala一样,人们到处都使用val作为变量,甚至不考虑可变性,并且除非明确需要,否则他们使用var声明变量,这是非常罕见的。8.重载时不要相信泛型是的,它发生了。您认为您已经编写了一个很棒的AP??I,它非常酷且直观;然后有一群用户只是将所有类型都死记硬背到Object中,直到该死的编译器停止工作,然后他们突然链接错了,认为这都是你的错(总是这样)。想一想:因为,你知道……你的用户,他们这样信任我,我见过很多,所以偏执是有代价的。9.总是在switch语句中加上defaultSwitch...作为最好笑的表达方式之一,我不知道是敬畏还是默默流泪。不管怎样,既然我们不能去掉这个开关,那么我们可以在必要的时候正确使用它,例如:因为当软件中引入value=3时,默认值就会发挥作用并使其正常工作!不要向我提及枚举类型,因为这同样适用于枚举。10.用花括号把switch的各个case块分开其实switch是最笨的语句,喝醉了或者打赌输了的人都可以在某种语言中使用它。看看下面的例子:在switch语句中,只为所有情况定义了一个作用域。其实这些case并不是真正的语句,它们更像是标签,而switch就是指向这些标签的goto语句。事实上,您甚至可以将case语句与令人惊叹的FORTRAN77语句进行比较。对于FORTRAN,它的神秘已经超越了它的功能。这意味着无论是否有break,变量finalintj都可以被任何case访问。看起来不是很直观。我们可以通过添加简单的大括号为每个case创建一个新的嵌套作用域,当然不要忘记在每个case的语句块中添加一个break。结论编程时的强迫症有时看起来很奇怪,使代码往往比必要的更冗长。您可能会想,“啊,这永远不会发生!”,但正如我所说,经过20年左右的编程,您不想仅仅因为编程语言而修复问题。由于古老的和固有的缺陷导致的愚蠢和不必要的错误。因为你知道……现在,轮到你了!原文链接:http://www.javacodegeeks.com/2015/08/top-10-useful-yet-paranoid-java-programming-techniques.html