符號隱藏與依賴管理是軟件工程中關(guān)乎效率的關(guān)鍵能力缨恒。它的核心是“每個軟件模塊如何在隱藏好自己的同時臣嚣,還能低成本的精準(zhǔn)獲取依賴”
颅停。做好了這件事惫搏,每個軟件模塊的變化傳播范圍可以控制到最小,又能恰如其分的和外部依賴進(jìn)行協(xié)同蚕涤。這樣軟件模塊不僅容易做到獨立的開發(fā)筐赔、構(gòu)建、測試與發(fā)布揖铜,最后又能協(xié)同起來完成整體的業(yè)務(wù)目標(biāo)茴丰。
正如前一篇中所說,做好符號隱藏和依賴管理天吓,需要基于軟件團(tuán)隊的設(shè)計規(guī)劃能力贿肩、工程工具能力以及團(tuán)隊紀(jì)律。雖然這幾點在文章中都有涉及龄寞,但是這次還是更多的側(cè)重于工程工具方面汰规。而設(shè)計方面希望未來可以通過別的文章再來展開。
在撰寫這些文章的過程中物邑,一直想用一些做得好的優(yōu)秀代碼庫作為示例溜哮,所以又翻看了很多優(yōu)秀的C和C++開源庫。
其中C語言的有:
- cJSON: https://github.com/DaveGamble/cJSON
- jemalloc: https://github.com/jemalloc/jemalloc
- libuv: https://github.com/libuv/libuv
- redis: https://github.com/antirez/redis
- sqlite: https://repo.or.cz/sqlite.git
C++的有:
- CAF: https://github.com/actor-framework/actor-framework
- cpp-react: https://github.com/schlangster/cpp.react
- folly: https://github.com/facebook/folly
- muduo: https://github.com/chenshuo/muduo
上述這些都是非常值得學(xué)習(xí)的經(jīng)典代碼庫色解。最后這篇文章本來想挑選其中對符號隱藏和依賴管理做得好的庫給大家剖析下的茬射,但是在寫這系列文章的過程中,不幸通風(fēng)引起腳踝發(fā)炎冒签,痛苦不堪,所以文章就先縮水了钟病。
其中推薦大家有精力的話可以看看著名的libuv萧恕。libuv是一個跨平臺的異步IO庫,被用在著名的nodejs里作為事件驅(qū)動的引擎肠阱。它綜合使用了我們前面說到的各種實踐:從目錄布局票唆,到庫的API符號隱藏,到構(gòu)建設(shè)計屹徘,當(dāng)然它的源碼設(shè)計也是很不錯的走趋。
最后,祝大家2020年一切順利噪伊!