API的非向后兼容性无论如何通常代表着一种比较差的设计
不管一個(gè)類庫或者工具方法實(shí)現(xiàn)多么的好,如果無法做到向后兼容性,通常會(huì)給用戶帶來很大的升級(jí)成本,很多對(duì)此的依賴如果希望在后續(xù)的升級(jí)和維護(hù)期間使用該類庫的其他新增特性或者好處,將不得不推遲升級(jí)亦或是被迫接受改變。
無論這個(gè)類庫實(shí)現(xiàn)的多么完美或者流行,如果版本升級(jí)意味著大量API或者包名的變更,我認(rèn)為很大程度上是因?yàn)樵O(shè)計(jì)者意識(shí)到從維護(hù)的角度來說,這個(gè)類庫的實(shí)現(xiàn)非常的糟糕,以至于已經(jīng)非常的難以維護(hù)下去了。
在開源的社區(qū),做這種變更或者說犯這種錯(cuò)幾乎不需要付出任何成本,所以很多的類庫甚至非常流行的類庫都有發(fā)生大版本間API的完全重構(gòu),如果是商業(yè)類庫,除非有適配API,恐怕用戶都跑光了。常見的類庫有如下:
jackson:
1.x:org.codehaus.jackson
2.x:com.fasterxml.jackson
由此帶來的是大量類路勁的變化,spring?HttpMessageConverter針對(duì)1.x和2.x的分別實(shí)現(xiàn);到了spring 4.x,MappingJacksonHttpMessageConverter又被spring給刪除了。
dbcp:
1.x:
2.x:
apache.common.lang:
2.x:
3.x:
log4j :
1.x:
2.x:
common.pool
1.x:
2.x:
netty:
4.x:
3.x:
不過主流的容器和應(yīng)用服務(wù)器以及數(shù)據(jù)庫則做的好的多,比如tomcat/nginx/mysql/postgresql/rabbitmq。
轉(zhuǎn)載于:https://www.cnblogs.com/zhjh256/p/5977319.html
總結(jié)
以上是生活随笔為你收集整理的API的非向后兼容性无论如何通常代表着一种比较差的设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦梦到打死一条蛇是什么意思
- 下一篇: DPlist