庫好於框架 - brandonsmith
程式碼通常可以採用兩種粗俗的形式:庫或框架。
庫是一組構建塊,它們可以共享一個共同的主題或可以很好地協同工作,但是在很大程度上是獨立的。
框架是包含編寫程式碼的上下文。可以是採取控制反轉,特定於領域的語言的形式,也可以只是一種很自以為是且內部耦合的庫。
兩者之間沒有界限。判斷是否為框架或庫的一種方法是問自己:“我可以將其與其他類似框架結合使用嗎?或者它是否建立了與其他方式可以互斥的方式?”
框架的主要特徵是它們對程式設計師施加了限制。他們沒有提供程式設計師可以做的一系列新事情,而是在程式設計師可以做的事情上建立了界限。為了換取靈活性,他們通常消除樣板,為在其之上構建新庫建立試金石,並允許程式設計師的技能成為更具可移植性的專案。實際上,有時限制本身是可取的!畢竟,型別系統不過是對程式碼施加限制的一種方式。侷限性並不是本質上的壞處。
然而。當您編寫一個期望其他人用來構建真實專案的框架(即,它不僅僅是一個玩具)時,您承擔的責任要比庫更大。
通常,框架必須提前預測其使用者可能需要在其內部進行的各種操作。它必須承擔起相應的責任。它需要提供一個正常完成各種操作的方式,否則,為什麼要使用它?
這也轉化為開發人員的經驗。您的框架是否引入了超出基本語言的基於約定的行為?您最好徹底記錄下來,否則使用者將無可救藥地迷路。您是否引入特定領域的語言?您現在負責構建鏈的一部分,並負責編輯器整合。
現在,如果有一個主要組織來支援該框架,那麼計算就可能成功了。Google可以支援Angular,Pivotal可以支援Spring,Epic可以支援Unreal Engine。在這些情況下,可以採用框架方法,因為存在著資源和意願,可以真正覆蓋所有需要覆蓋的基礎。
因此,我的觀點:框架並不總是壞的,但是與庫相比,對於建立者和使用者而言,框架帶來的風險要大得多。如果您的框架可以是一個庫而又不會損失很多,那就作為庫。如果您不在大型科技公司工作,那麼您可能沒有時間或精力來提供框架所需的全部精力。庫不是萬能的,但它們應該是首選。
相關文章
- 基於代理的資料庫分庫分表框架 Mycat實踐資料庫框架
- 前端框架真的好嗎?前端框架
- Python好庫Python
- 基於Rust的資料框架庫Polars會取代Pandas嗎?Rust框架
- 1.2.2. 多租戶對於資料庫整合的好處資料庫
- 框架庫(.NET 指南)框架
- 關於MNN工程框架編譯出來的靜態庫和動態庫的使用框架編譯
- Android精通之OrmLite資料庫框架,Picasso框架,Okio框架,OKHttp框架AndroidORM資料庫框架HTTP
- 關於開發框架的秘密:前後端分離的好處是什麼?框架後端
- 大家好,有對基於Onethink框架設計一個網上商城瞭解的嗎框架
- Vue-Donut——專用於構建Vue的UI元件庫的開發框架VueUI元件框架
- 到底是倉庫模式好,還是MVC模式好?模式MVC
- 關於什麼是框架框架
- 好程式設計師Java教程分享javaweb框架程式設計師JavaWeb框架
- 框架用的好,下班走的早!值得收藏框架
- 資料庫框架Sugar的使用資料庫框架
- flask框架資料庫部分(四)Flask框架資料庫
- 【譯】框架與庫的差異框架
- Java資料庫框架設計Java資料庫框架
- 好未來:多雲環境下基於 JuiceFS 建設低運維模型倉庫UI運維模型
- 好程式設計師java分享spring框架精講程式設計師JavaSpring框架
- 遊戲設計分析:框架設定的好處遊戲設計框架
- 框架雖好,但不要丟了其背後的原理框架
- 基於netty手寫RPC框架NettyRPC框架
- 基於react + redux的Bone框架ReactRedux框架
- 基於Cucumber框架的學習框架
- 基於 GitHub Discussions 的 Blog 框架Github框架
- 碼教授對於基於框架的專家系統框架
- Java教程分享:使用Spring框架能帶來哪些好處?JavaSpring框架
- 關於 PHP 框架的簡單思考PHP框架
- 如何應用於Web框架的搭建Web框架
- abp框架Excel匯出——基於vue框架ExcelVue
- 基於CPU版本的Caffe推理框架框架
- Flutter 基於Bloc框架的封裝FlutterBloC框架封裝
- C++訊息框架-基於sigslotC++框架
- 基於 iframe 的微前端框架 —— 擎天前端框架
- 基於 Vite 搭建開發體驗超級絲滑的 Vue3 元件庫開發框架ViteVue元件框架
- 資料庫框架Sugar的使用詳解資料庫框架