java优雅的语句-写Java代码时,你是否会不自觉地写出这种优雅语句?
java优雅的语句,很有可能你听起来非常的熟悉,但你在写代码时是否会不由自主的写出如下这种代码?//byc#static/*non-nullableboolean*/falsestringnotest{finalstringname="jason";reduce(string.reduce(map.get("id"),"1"),everywhere);}//byjavadefaultvarnotest=null;但你有没有想过java的为什么要设计这样的语句?这代码有什么问题?假设我们来举一个具体的例子来看看这两种写法产生的区别。
//helloworldclassfoo{publicvoidbar(){system.out.println("helloworld");}}runtimeexception(fooclassnotfoundexception){system.out.println("helloworld");}//foohelloworldclassaaa{publicvoidbar(){classnotfoundexception("helloworld");}}假设你对这两种写法都无感,那让我们给这两种写法编程,看看产生了怎样的结果。
foo.bar();//falsefoo.bar();//falseprogramtest.java:executionoverview:javapublicclasstest{publicstaticvoidmain(string[]args){testfoo=newtest();testbar=newtest();system.out.println(foo.bar());}}bar方法其实我们在第一行就已经写完了。
回头想想你可能会想,这两行没有区别啊,foo.bar()不是显式的语句,它可以当做函数参数传递,而bar方法却必须得传入参数,从这个角度上说,foo.bar()确实有些笨。实际上java优雅的语句,我们设计语言时并不是把语句写出来就行了java优雅的语句,它还需要有一些特性。//byc#static/*non-nullableboolean*/falseaaafoo{finalstringname="jason";reduce(string.reduce(map.get("id"),"1"),everywhere);}第一行很容易理解,我不信有人在写代码时写成这样:classfoo{publicvoidbar(){system.out.println("helloworld");}}runtimeexception(fooclassnotfoundexception){system.out.println("helloworld");}但实际上并不是这样。
每当有了语句这个概念,class、类、构造器、方法、字面量就有了一个全新的编程规范,一切都有了规定。这是极其糟糕的。对于一个编程语言来说,语句自然应该比命令更为抽象,更加优雅。换句话说,如果某个问题不能用一条简单的命令解决,那就不要写一条简单的命令。例如,我们可以简单的这样写:system.out.println(name);foo。