你在用程序库吗?
- kylexlau - 梦想风暴早上的Code Diff,项目组的所有人坐在一起过一遍上一个工作日写的代码. ”我质疑了一段有文件读写的测试. 文本内容相关的测试可以用字符串. Code Diff结束,我们坐在一起. 他给我介绍了一下这段代码的作用:把文件的内容按行读成一组字符串. 看着那段充满着各种异常处理的文件读写的Java代码.
早上的Code Diff,项目组的所有人坐在一起过一遍上一个工作日写的代码。
“这个测试为什么这么写?”我质疑了一段有文件读写的测试。
“因为我要测文件读写。”这段代码的作者回答道。
“你真的需要吗?文本内容相关的测试可以用字符串。”
“真的需要,我真要测文本读写。”
“好,下来一起看看。”
Code Diff结束,我们坐在一起。他给我介绍了一下这段代码的作用:把文件的内容按行读成一组字符串。
看着那段充满着各种异常处理的文件读写的Java代码。
“嗯,确实是需要文件读写,这点我同意。”我说。
我看到一丝放松从他脸上闪过。
“不过,为什么要自己实现这个功能呢?”
“啊?”他惊讶了一下。
“为什么不用Guava库?”
“Guava还支持这个?”
我无奈的笑了一下,“是啊,Guava很强大的。”我给他找了Guava实现这个功能的API,展示了一小段代码。
“哦,好吧,我回去改一下。”
现代软件开发已然不同于那个纯手工打造的年代,写程序时,我们通常会使用一些程序库,但是,很多人对于程序库的使用仅限于别人已经在程序里面用到的用法,并不越雷池半步,所以,常常会有不少人累死累活写出来不稳定的代码去实现程序库里的现成功能。
这已经不是我第一次在项目里面提到这个问题。前不久,有人辛辛苦苦用正则表达式实现出一段非常华丽的匹配,从URL中提取参数。直觉告诉我这么做是不对的,我们在用Spring MVC,既然Spring可以很好的提取这些参数,为什么我们要自己写。
在直觉的驱动下,我研究了Spring MVC的部分实现,于是,PathMatcher浮出水面。采用PathMatcher之后,那些复杂到不是一下子能看懂的正则表达式烟消云散了。
既然我们用到了程序库,那就真的用一下这个程序库吧!