當前位置:
首頁 > 知識 > 程序員:框架 OR 庫,這是一個值得思考的問題!

程序員:框架 OR 庫,這是一個值得思考的問題!

程序員在解決實際問題的時候,通常會採用三種辦法,一是使用框架,二是挑選庫,三是創建自己的解決方案。

這三種方法中從頭開始創建自己的解決方案有時並不是一個聰明的選擇,尤其是某些知名的問題,如果這個問題已經流傳了好多年,並且已經存在成熟的工具,創建自定義解決方案就是一項昂貴且耗時的任務;如果這個問題是獨一無二的,那麼創建自定義解決方式是值得投資的。

在本文中,我們將重點關注框架和庫,看看它們有哪些優缺點,哪些場景是一定要使用的。在正式開始之前,我們先來正一正框架和庫的含義。

程序員:框架 OR 庫,這是一個值得思考的問題!

框架

框架是一種將用戶編寫代碼保存在一起的編程抽象。軟體框架是一個通用的,可重複使用的軟體環境,它提供特定的功能作為更大的軟體平台的一部分。這有助於開發軟體應用程序、產品和解決方案。軟體框架包括支持程序,編譯器,代碼庫,工具集和應用程序編程介面(API),彙集了不同的組件以實現項目或系統的開發。框架與庫非常相似,但也有一些區別於普通庫的特色。

  • 控制反轉:在一個框架中,整個程序的控制流程由框架決定而不是調用者。這與庫的工作方式相反,庫的控制流程由調用者決定。

  • 可擴展性:用戶可以擴展框架,通常是選擇性覆蓋; 或者程序員可以添加專門的用戶代碼來提供特定的功能。

  • 不可修改的框架代碼:框架代碼不應該被修改,但它可以接受用戶實現的擴展。換句話說,用戶可以擴展框架,但是不能修改其代碼。

框架本身提供了一定的控制流程,使用者要做的是提供應用程序業務邏輯的實現,框架會調用它們以減輕對資料庫連接,事務,數據傳輸協議等的考慮。對於上述這些,框架提供了配置端點,使用者不用實例化類,傳遞配置,分配/釋放資源等。

單元測試:每個項目都應該有測試,測試過程包括執行測試,收集結果,呈現結果,比較測試運行之間的結果等,開發人員不應該浪費時間來實現這些功能。而單元測試框架提供空白點,開發人員可以插入測試,框架將負責其它的測試。

單元測試框架只是框架的一個簡單示例。通常一個框架將會涉及到很多,舉個例子,強大的Spring框架包含一個龐大的工具集,用於構建具有事務管理,安全性,批處理操作等的大型應用程序。一個框架可以給一個項目飛的開始 ,通常程序員只需提供幾個配置文件(例如DB配置),就可以直接開始實施業務代碼。

在現實生活中,圖書館是免費獲取信息的地方。但就編程而言,庫是一組對象,函數和方法(取決於語言),可以在多個應用程序之間重用和共享。庫執行特定的,明確定義的操作。

通常在編程中遇到特定域的問題時可以創建庫。例如沒有內置到語言中的操作和數據結構,反向擴展、高級集合等。

基本上,一個庫提供了代碼將調用的API。這也意味著你的代碼可以控制調用庫的功能。這就是框架和庫之間的關鍵區別。使用庫時,代碼調用庫,使用框架時,框架調用代碼。

如何選擇?

在使用框架或庫解決棘手的編程問題時,我們需要考慮以下因素:

  • 團隊專長:一個框架通常會給專業知識較低的團隊帶來好處,為他們提供豐富的功能和發展方式,減少犯錯空間,獲得更結構化和可讀的代碼,另一方面,框架比庫的學習曲線更陡峭。這意味著即使是一群經驗豐富的專業人士,採用陌生的框架來加快開發速度也可能會感到困難。在這種情況下,庫可能是一個更好的選擇。

  • 團隊規模:框架適用於較小的團隊和較緊湊的期限,因為它提供了很多開箱即用的功能。如果所有程序員需要一些資料庫的配置文件,那麼一個基礎框架就可以滿足。公開一個文檔的REST介面只是幾行代碼的問題,這使得團隊幾乎從一開始就可以創造商業價值。

  • 項目規模:框架傾向於小型項目,對大型項目有所約束,因為在框架的直接控制下難以修改應用程序的流程,但隨著項目的增長,他們往往會需要越來越多的具體功能,這些功能有可能不被支持。所以對於小項目而言,框架是非常有益的,但是對於大型項目來說,這些優勢就消失了。

  • 安全性:一個很好的經驗是在選擇外部工具時,要檢查它有多少安全補丁以及嚴重程度, 尤其是短期的安全補丁。如果一個工具最近有很多安全補丁,那麼就意味著安全性不夠穩定。

  • 社區/商業支持:框架/庫周圍是否有一個活躍的社區或良好的商業支持,可以幫助您快速解決問題?如果是的話,那麼這可能是一個不錯的選擇。

  • 許可:每個外部工具都附帶許可證,必須根據公司政策考慮。有些公司對於使用開源軟體有限制,因為它們通常在沒有任何保證和責任的情況下提供。

  • 炒作因素:這也是一個非常重要的考慮。管理者往往傾向於穩定和成熟的工具,因為它們在現實世界中已經成熟和被證明。但這同時也意味著它們是舊的,程序員不喜歡。如果你無法找到任何人來使用它,那麼選擇一種舊技術就沒有任何意義。

  • 組織政策:也許你的團隊想為新項目使用一個新的框架?可是很遺憾,企業已經決定所有的前端代碼都只寫在React中。

  • 技術鎖定:有些公司會提供與其他框架或庫緊密耦合的框架。這種生態系統往往更加穩定,並可以得到更好的支持。但是這些生態系統往往對新的技術和方法支持很慢。在我看來,技術鎖定永遠不會起作用,但可靠性肯定有吸引力。

框架和庫之間並不是嚴格的非此即彼的選擇,一個項目通常會是框架、庫和自定義解決方案的組合。軟體工程本身就是一個不同路徑達到最終目標的權衡。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT168企業級 的精彩文章:

搜狐黨磊:深度學習在短文本分類中的應用
人工智慧興起,讓英特爾的「芯」在滴血
從2.25億到11.9億美元 短短2年SD-WAN經歷了怎樣的爆炸性增長
IBM研究重大突破 一盒磁帶存儲330TB數據
還有用Eclipse的嗎?這有一個圖形編輯框架,據說很厲害!

TAG:IT168企業級 |

您可能感興趣

SB還是BB這是個值得思考的問題!
老旗艦還是新中端?這是一個值得思考的問題
HR問「你的優點是什麼」,你首先要思考這四個問題!
要不要聯繫外星人?這確實是一個值得思考的問題
關於喝水,這是個值得慎重思考的問題
五千元買保時捷還是邁凱輪還是iPhone,這是個值得思考的問題
《一步之遙》,這是一個值得思考的電影
單攝像頭or多攝像頭?這是一個值得思考的問題,滿足使用就好
開啟一個設計項目你要思考這些問題
兩道經典的奧數題目,第一題較難,突破你的常規思維來思考吧!
睡前思考一段話,句句經典,值得你細細品讀!
小程序上線後,還應該思考這幾個問題
「裸辭旅行」是否值得借鑒?先思考這「三個問題」,再做決定
不一樣的換位思考,你需要這樣做
或許是你從小就一直在思考的兩個算術問題
如果你在老婆的眼裡,是一個「無能」的男人,請先思考2個問題
一個值得思考的問題:練習瑜伽到底為了什麼?其意義究竟在哪兒?
值得思考一段話
搞笑gif:我一直在思考一個問題,為什麼我沒女朋友,是因為我太帥的緣故嗎?
面試必問:讀寫一致性,你需要思考的問題