1700452400
相同的工具只选择一个或一种,不要让多种相同或相似职能的工具共存。例如集合工具可以使用Apache Commons的collections包,当然也可以使用Google Guava的Collections工具包,但是在项目开发前就应该确认下来,不能让两者共存。
1700452401
1700452402
“大树纳凉”原则
1700452403
1700452404
在没有空调、电风扇的年代,最好的纳凉方式就是找一棵大树,躲在树荫下享受着习习凉风,惬意自在。我们在选择工具包时也应如此,得寻找比较有名的开源组织,比如Apache、Spring、opensymphony(虽然已经关闭,但它曾经是那么耀眼、辉煌)、Google等,这些开源组织一则具有固定的开发和运作风格,二则具有广阔的使用人群(很多情况下,我们不会是第一个发现Bug的人),在这样的大树下,我们才有时间和精力纳凉,而不会把大好的时间消耗在排查Bug上。
1700452405
1700452406
精而专原则
1700452407
1700452408
在武术上,对一个顶级高手的描述是“精通十八般武器”,但对工具包来说这就不适合了,我们选择的工具包应该是精而专的,而不是广而多的,比如虽然Spring框架提供了Utils工具包,但在一般情况下不要使用它,因为它不专,Utils工具包只是Spring框架中的一个附加功能而已,要用就用Apache Commons的BeanUtils、Lang等工具包。
1700452409
1700452410
高热度原则
1700452411
1700452412
一个开源项目的热度越高,更新得就越频繁,使用的人群就越广,Bug的曝光率就越快,修复效率也就越高,这对我们项目的稳定性来说是非常重要的。有很多开源项目可能已经很长时间没有更新了,或者是已经非常成熟了,或者是濒于关闭了,这我们不能要求太高,毕竟开源项目已经共享出了他人的精力和智力,我们在享受他人提供的成果的同时,也应该珍惜他人的劳动,最低的标准是不要诋毁开源项目。
1700452413
1700452414
对于开源工具,我们应该大胆采用,仔细筛选,如果确实所有的开源工具都无法满足我们的需求,那就自己开发一个开源项目,为千千万万的Java人服务,也为Java的生态系统贡献自己的力量。
1700452415
1700452416
1700452417
1700452418
1700452420
编写高质量代码:改善Java程序的151个建议 建议140:推荐使用Guava扩展工具包
1700452421
1700452422
说起Guava(石榴),可能知道它的读者并不多,要是说起Google-collections,相信大部分读者都有所耳闻。2008年Google发布了Google-collections扩展工具包,主要是对JDK的Collection包进行了扩展,2010年Google发布了Guava项目,其中包含了collections、caching、primitives support、concurrency libraries、common annotations、I/O等,这些都是项目编码中的基本工具包,我们大致浏览一下它的主要功能。
1700452423
1700452424
(1)Collections
1700452425
1700452426
com. google.common.collect包中主要包括四部分:不可变集合(Immutable Collections)、多值Map、Table表和集合工具类。
1700452427
1700452428
不可变集合
1700452429
1700452430
不可变集合包括ImmutableList、ImmutableMap、ImmutableSet、ImmutableSortedMap、ImmutableSortedSet等,它比不可修改集合(Unmodifiable Collections)更容易使用,效率更高,而且占用的内存更少。示例代码如下:
1700452431
1700452432
//不可变列表
1700452433
1700452434
ImmutableList<String>list=ImmutableList.of(“A”,“B”,“C”);
1700452435
1700452436
//不可变Map
1700452437
1700452438
ImmutableMap<Integer, String>map=ImmutableMap.of(1,“壹”,2,“贰”,3,“叁”);
1700452439
1700452440
其中的of方法有多个重载,其目的就是为了便于在初始化的时候直接生成一个不可变集合。
1700452441
1700452442
多值Map
1700452443
1700452444
多值Map比较简单,在JDK中,Map中的一个键对应一个值,在put一个键值对时,如果键重复了,则会覆盖原有的值,在大多数情况下这比较符合实际应用,但有的时候确实会存在一个键对应多个值的情况,比如我们的通讯录,一个人可能会对应两个或三个号码,此时使用JDK的Map就有点麻烦了。在这种情况下,使用Guava的Multimap可以很好地解决问题,代码如下:
1700452445
1700452446
//多值Map
1700452447
1700452448
Multimap<String, String>phoneBook=ArrayListMultimap.create();
1700452449
[
上一页 ]
[ :1.7004524e+09 ]
[
下一页 ]