使用类库

使用类库

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110000.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 带通滤波器作用和用途_什么是带通滤波器?工作原理及原理图详解

    带通滤波器作用和用途_什么是带通滤波器?工作原理及原理图详解带通滤波器(band-passfilter)是一个允许特定频段的波通过同时屏蔽其他频段的设备。比如RLC振荡回路就是一个模拟带通滤波器。带通滤波器是指能通过某一频率范围内的频率分量、但将其他范围的频率分量衰减到极低水平的滤波器,与带阻滤波器的概念相对。一个模拟带通滤波器的例子是电阻-电感-电容电路(RLCcircuit)。这些滤波器也可以用低通滤波器同高通滤波器组合来产生。一个理想的带通滤…

    2022年5月2日
    42
  • LNK2001:无法解析外部符号_sprintf

    LNK2001:无法解析外部符号_sprintfLNK2001:无法解析外部符号_sprintf与LNK1104:无法打开文件“kernel32.lib”_臻訾胃的博客-CSDN博客从网上下载一个VS的demo,编译之后老是报LNK2001:无法解析外部符号_sprintf的错误,找了好久,发现在项目属性->链接器->输入->附加目录依赖项添加legacy_stdio_definitions.lib即可解决问题。但不知道legacy_stdio_definitions.lib这玩意儿干啥的,有兴趣的自己百度吧..

    2022年6月28日
    54
  • 华为LLDP协议

    华为LLDP协议LLDP(LLDP,LinkLayerDiscoveryProtocol,链路层发现协议)是IEEE802.1AB中定义的第二层发现协议,可以使得不同厂商设备之间的企业或运营商通过该功能可以清楚的了解整个网络的拓扑结构[SW1]displaylldpneighborError:GlobalLLDPisnotenabled.//默认没有开启LLDP协议[R1]lldpenable//开启LLDP协议Info:GlobalLLDPisenabledsuccessfu

    2022年6月2日
    76
  • idea 2021.9最新激活码 mac[最新免费获取]

    (idea 2021.9最新激活码 mac)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1STL…

    2022年3月27日
    66
  • GOF23-创建型:简单工厂模式

    GOF23-创建型:简单工厂模式

    2021年7月12日
    78
  • 最全的数据查询网站「建议收藏」

    最全的数据查询网站「建议收藏」1、国家数据——主要用户:社会情况研究人员国家统计局开设网站,公布我国各个领域的宏观经济情况,权威度高2、中国裁判文书网——主要用户:法律从业/学习/爱好者中国最高人民法院开设,权威可信,可用于查询国内裁判文书,可作数据统计来源3、中国互联网数据平台——主要用户:互联网研究人员经国家主管部门批准组建的管理和服务机构,经常发布一些有价值的互联网信息报告4、中国信通院——主要用户:互…

    2022年6月17日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号