程式庫隨想

2021-04-02 11:48:32 字數 878 閱讀 7479

我們總是希望有這樣乙個庫:它能夠讓我們方便的完成某個任務,如果a庫使用起來比b庫簡單那麼一點點,我們就更願意使用a。因此,我們也經常幹這樣的事情:把乙個現有的庫做乙個薄封裝,從而使用起來更適合當前的程式設計環境。

一般而言,簡單的庫總是更好的,然而這並不是一定的。我總是能聽到一些程式設計師抱怨:為什麼xx庫的yy功能不能預先提供乙個最簡單的使用方式,非要程式設計師再手工做一些工作。我想,這有兩個解釋:1是這種期望的最簡形式是非一般性的,是特例,作為庫,無法為沒有預見到的使用做萬全的準備。2.程式庫故意這麼做,迫使程式設計師必須要額外做一些事情。

對於第一種情況,程式設計師可做的就是自己稍加封裝。第二種情況,則值得思考。

在乙個複雜軟體中,當我們引入乙個庫時,必須小心,要防止庫破壞現有的**。另外,鑑於程式設計師對庫的認識總是會存在侷限性,誤用就是乙個很嚴重的問題了。一方面,這和程式設計師素質有關,另一方面,就需要程式庫來幫助防禦誤用和減少隱藏的錯誤。

我這裡不是在詆毀ace而捧boost,這是兩者的基礎知識域的差異導致的。事實上,ace庫使用中遇到的錯誤也是很容易糾正的。然而反觀我們常用的其他一些庫,特別是mfc,固然提供了一些封裝,但是這些封裝卻常常誤導程式設計師,把我們引入歧途。mfc倒還不是最惡劣的,最惡劣是某些公司內部的庫,過分的追求使用簡單,卻到處都是危險的陷阱:主線程正常,多執行緒錯誤;不可重入;成對操作缺少明顯的說明;必須的執行環境不作為約束出現,而是將乙個最普遍的環境作為預設;本應該是純虛函式的,卻提供乙個預設實現。如此種種,不一而足。

那麼,這些內部的庫就沒有價值嗎?當然不是,價值還是有的,有時候甚至非他不可。但是這些庫就像乙個過度溺愛孩子的媽媽,用的時候還挺爽,然而爽過之後,大錯築成,往往有種想殺人的衝動!而乙個好的庫,就像是諍友,他總是在你需要的時候給予恰當的幫助,卻又能夠阻止你犯下錯誤。提供程式庫的時候,如何阻止使用者程式設計師的錯誤,也是乙個需要考慮的問題。

什麼叫程式庫

所謂程式庫,一般是軟體作者為了發布方便 替換方便或二次開發目的,而發布的一組可以單獨與應用程式進行compile time或runtime鏈結的二進位制可重定位目標碼檔案。通俗一點說,所謂乙個庫,就是乙個檔案,這個檔案可以在編譯時由編譯器直接鏈結到可執行程式中,也可以在執行時由作業系統的runtim...

什麼叫程式庫?

什麼叫程式庫 所謂程式庫,一般是軟體作者為了發布方便 替換方便或二次開發目的,而發布的一組可以單獨與應用程式進行compile time 或runtime 鏈結的二進位制可重定位目標碼檔案。通俗一點說,所謂乙個庫,就是乙個檔案,這個檔案可以在編譯時由編譯器直接鏈結到可執行程式中,也可以在執行時由作業...

重用其他程式庫

重用其他程式庫也會帶來一些不足 需要使用者得到可重用的 需要充分考慮重用後的效率,還要關注由重用其他程式所帶來的潛在名字空間衝突,以及要考慮與可重用程式庫保持版本同步問題。c 撰寫可用的程式庫已屬不易,撰寫可重用的程式庫更是專家級任務。效率並不是最終目標,而擴充套件性 靈活性等其他特性將會比效率更加...