
222
|
第七章
程式庫與框架有什麼差異?
如果你能夠在你專案裡帶入一個獨立的部分,你就知道你在使用一個程式庫,不需要
帶入其他的部分。差異在於,程式庫將程式碼
拆解
成小型的、可重複使用的零件。如
果目標是要建構一個簡單的程式碼,那所有的零件應該只做一件事;一個零件要是做
太多事那就應該要拆解成更小的單元。這種拆解方式叫做關注點分離(Separation Of
Concerns),而有效率的 XP 程式設計師知道這對簡化程式碼的重要性。
另一方面,框架則是將許多小型又可重複使用的零件
組合
到一個大的系統裡。舉例而
言,學習 C# 通常代表要學習如何使用 .NET 框架與 C# 語言的語法。這包括讀取檔案、
計算數學、連線到網路,還有很多很多東西(沒錯,包括按鍵)的程式庫。當你開始用
C# 跟 .NET 來建構你的程式時,你會「免費」得到這些東西,因為它們是 .NET 框架的
一部分。一般來說是沒有辦法能把它們分開的。而且在不是用 .NET 寫的程式裡使用一
部分的 .NET 框架也不符合邏輯。跟大多數的框架一樣,許多零件都可以用來組合成一
個巨大的系統。
框架比程式庫複雜,當程式庫較為合適時,團隊試圖建構框架常常會變得過於複雜。常
見的錯誤是程式設計師看到其他框架可以節省他們很多時間,然後也想要他們的程式碼
做一樣的事:「我沒有需要在我的 .NET 程式中加入任何程式庫來做這個按鍵,我是『免
費』拿到的。如果我為整個系統建構一個框架,那我也可以『免費』把這些東西給其他
程式設計師!」
這種解決問題的壞處是,如果你要免費得到這些東西 ...