使用类库

使用类库

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


相关推荐

  • C++ 序列化和反序列化

    C++ 序列化和反序列化序列化序列化1、背景2、定义3、序列化评价指标4、序列化实例参考序列化1、背景1、在TCP的连接上,它传输数据的基本形式就是二进制流,也就是一段一段的1和0。2、在一般编程语言或者网络框架提供的API中,传输数据的基本形式是字节,也就是Byte。一个字节就是8个二进制位,8个Bit。二进制流和字节流本质上是一样的。对于我们编写的程序来说,它需要通过网络传输的数据是结构化的数据,比如,一条命令、一段文本或者一条消息。对应代码中,这些结构化的数据都可以用一个类或者一个结构体来表示。序

    2022年6月17日
    22
  • wondows中的cmd中切换盘符和目录的命令「建议收藏」

    wondows中的cmd中切换盘符和目录的命令「建议收藏」一般介绍DOS命令,切换工作目录都是用CD命令,但是我在win7下的DOS中使用CDD:\却一直无法转到D盘。后来在网上查找,发现切换盘符直接输入盘符和冒号,如D: 回车便可进入D盘的根目录。切换工作盘之后,再使用CD命令切换工作目录。****************************************************************************

    2022年10月3日
    0
  • 垂直同步、三重缓冲、freesync

    垂直同步、三重缓冲、freesync一、垂直同步60Hz显示器,开启垂直同步后,就会锁60了;作用:1、解决画面撕裂现象,不会出现缓冲没画完被复写的情况;2、解决错帧现象;游戏更流畅;3、强制每帧间隔完全一样,这样因为帧生成时间不平滑导致的不流畅也会解决弊端:鼠标反馈,移动鼠标,电脑收到消息把移动鼠标输出给显卡,显卡收到后把鼠标移动画面输出给显示器,所有请求不会被延后,延迟只是电路延迟。但开启垂直同步,显卡绘制完后缓冲后,显示器还没有显示器完前缓冲,显卡等着,鼠标移动指令和显卡一起等着,直到显示…

    2022年6月9日
    41
  • Maven实战(四)——基于Maven的持续集成实践

    Maven实战(四)——基于Maven的持续集成实践

    2021年9月11日
    47
  • java 文本关键字查找功能原理和代码

    java 文本关键字查找功能原理和代码java 文本关键字查找功能原理和代码

    2022年4月23日
    37
  • Android系统签名生成[通俗易懂]

    Android系统签名生成[通俗易懂]Android系统应用添加系统签名在开发的过程中,如果需要设置当前的应用为系统应用,需要两步:在对应的AndroidManifest.xml文件中将“android:sharedUserId”设置为”android.uid.system”。如下所示:<?xmlversion=”1.0″encoding=”utf-8″?><manifestxmlns:android=”http://schemas.android.com/apk/res/android”pack

    2022年6月21日
    26

发表回复

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

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