使用类库

提倡使用类库是我对于软件质量保证的一个重要论点。其实在开发的过程中,我们不可避免的需要使用类库,这一点和你使用什么样的编程语言无关。但是可能很多人无法意识到这一点,或者并不觉得类库和语言有什么不同。但是我们看看,具有丰富的类库支持基本上是现代通用编程语言的一个基本特点。一般来说,基本的类库一定回包含如下内容:文件操作,和操作系统交互,提供一些通用的数据结构,比如线性表,栈,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语句写出一个极其复杂的实现。但我不认为那样做会令你的面试加分。

复杂似乎能体现一个人的水平,其实这完全是一种错误的见解。恰恰相反,简单才能体现一个人的水平,比如爱因斯坦的质能方程,并不复杂。欧姆定律,非常简单。因此在开发的过程中不要事事都往复杂的方面去想。尽可能的利用类库,就是这么做的第一步。

转载于:https://my.oschina.net/clarkhill/blog/165486

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值