API的非向后兼容性无论如何通常代表着一种比较差的设计
不管一個類庫或者工具方法實現多么的好,如果無法做到向后兼容性,通常會給用戶帶來很大的升級成本,很多對此的依賴如果希望在后續的升級和維護期間使用該類庫的其他新增特性或者好處,將不得不推遲升級亦或是被迫接受改變。
無論這個類庫實現的多么完美或者流行,如果版本升級意味著大量API或者包名的變更,我認為很大程度上是因為設計者意識到從維護的角度來說,這個類庫的實現非常的糟糕,以至于已經非常的難以維護下去了。
在開源的社區,做這種變更或者說犯這種錯幾乎不需要付出任何成本,所以很多的類庫甚至非常流行的類庫都有發生大版本間API的完全重構,如果是商業類庫,除非有適配API,恐怕用戶都跑光了。常見的類庫有如下:
jackson:
1.x:org.codehaus.jackson
2.x:com.fasterxml.jackson
由此帶來的是大量類路勁的變化,spring?HttpMessageConverter針對1.x和2.x的分別實現;到了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:
不過主流的容器和應用服務器以及數據庫則做的好的多,比如tomcat/nginx/mysql/postgresql/rabbitmq。
轉載于:https://www.cnblogs.com/zhjh256/p/5977319.html
總結
以上是生活随笔為你收集整理的API的非向后兼容性无论如何通常代表着一种比较差的设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦梦到打死一条蛇是什么意思
- 下一篇: 梦到亲戚怀孕流产怎么回事