提倡使用类库是我对于软件质量保证的一个重要论点。其实在开发的过程中,我们不可避免的需要使用类库,这一点和你使用什么样的编程语言无关。但是可能很多人无法意识到这一点,或者并不觉得类库和语言有什么不同。但是我们看看,具有丰富的类库支持基本上是现代通用编程语言的一个基本特点。一般来说,基本的类库一定回包含如下内容:文件操作,和操作系统交互,提供一些通用的数据结构,比如线性表,栈,hash表等,还有字符串的支持。
我们如果认真的回忆一下自己在编程中做的事情就会发现,与其说我们在用某种语言编程,不如说我们是在用某种语言提供的类库编程。使用java的开发者,在这一点上,体会应该更加的明显,因为如果没有良好的类库支持,java语言就其语言的特色来说,几乎就乏善可陈了。而且你常用的很多方法和对象,比如System.out.println(),还有常用的String,都是类库提供的支持。此外什么servlet啦,jdbc啦,这些统统是类库提供的支持。而且java语言第三方的类库也是极其丰富的,甚至andrios系统的开发也可以看做是java的某一种类库的使用。得益于这些类库的支持,现在的java开发,几乎是无所不能的,所以java是一种非常好的通用跨平台语言,这个优势几乎无法被其他的语言所替代。所以我们可以发现很多流行的语言都有java的移植版本,比如python有jython,ruby有jruby,而且基于jvm的语言也很多,比如时下很流行的scala,clojure,groovy等。
尽可能的使用类库,有很多好处。其一,bug少。因为类库发布的时候往往都会做好全面的测试,那么它的bug肯定比你自己实现的要少。其二,代码容易阅读,使用类库,大量的逻辑被组织成类库的api的形式表达,这样如果熟悉类库,很容易理解其操作,就算不熟悉类库,由于代码量的减少,理解的难度也会下降。第三,就是能够有效的减少代码量,众所周知,尽可能的减少代码量是提供代码质量的重要渠道。
如果这么语言本身有这样的类库支持,我们就应该尽可能的利用类库的功能,而不是自己通过一些算法来实现。举个例子:使用java语言如何反转一个字符串,比如“abc”,反转成“cba”?通常的思路是首先用for循环把字符串拆成一个字符串数组或者char数组。这个时候你可能想到了substring方法,当然这个方法其实就出自String类的实例方法。但是这个想法本身就已经错了,正确的反应应该是看看String类本身是不是有reverse方法。如果没有那么可以看看apache的commons类库里面是否有String的reverse支持。好吧,很不幸,你是在做面试题,而且没有互联网的支持,那么寻找第三方类库的方法其实是行不通的。那么你也不应该使用substring,因为其实java的StringBuilder类中有reverse方法。具体做法如下:
String in="abcdefg";
StringBuilder builder=new StringBuilder(in);
builder.reverse();
in=new String(builder);
由于StringBulider是一个builder模式的实现,所以它的每一个方法都会返回实例本身,因此可以简写成一条语句:
String in
=
“abcdefg”
;
in
=
new
String
(
new
StringBuilder
(
in
).
reverse
());
当然你完全可以用for循环+if语句写出一个极其复杂的实现。但我不认为那样做会令你的面试加分。
复杂似乎能体现一个人的水平,其实这完全是一种错误的见解。恰恰相反,简单才能体现一个人的水平,比如爱因斯坦的质能方程,并不复杂。欧姆定律,非常简单。因此在开发的过程中不要事事都往复杂的方面去想。尽可能的利用类库,就是这么做的第一步。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/110000.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...