技術選型與開源套件評估指南穿透性分析 建立開源套件選擇標準與系統架構長期影響評估

me
林彥成
2023-09-23 | 4 min.
文章目錄
  1. 1. 如何明智地進行技術選型與套件評估?
  2. 2. 套件評估流程:從明確需求到 npm trends 分析
    1. 2.1. 軟裝潢與硬裝潢:套件對架構設計的影響
  3. 3. FAQ:技術選型常見問題
    1. 3.1. Q1:GitHub 星星數越高,就代表該套件越好嗎?
    2. 3.2. Q2:什麼是「再封裝 (Wrapping)」?為什麼它能降低技術風險?
    3. 3.3. Q3:引入一個大型套件 (如 Lodash) 只為了用一個方法,會有問題嗎?

如何明智地進行技術選型與套件評估?

技術選型與套件評估 (Tech Stack Selection & Package Evaluation) 是一項平衡開發速度、維護成本與架構靈活性的決策藝術。其核心原則在於區分「想要」與「需要」:透過 npm trends 觀測下載趨勢,並從 GitHub 活躍度、Issue 解決率與版本更新頻率評估可靠性。更關鍵的是分析套件的「穿透性」—— Redux 等「硬裝潢」套件會深植於系統結構,未來更換代價極高;而具備良好模組化設計的套件則像「軟裝潢」,易於替代與再封裝。明智的選擇能確保專案在快速交付的同時,不被特定的技術債鎖死,達成軟體架構的長期健康。


大家有沒有一個經驗,出外的學子或是北漂打工族有天要搬回老家的時候,才驚覺東西怎麼這麼多?等到要搬家前的那一刻才開始瘋狂出清堆放已久的雜物。這就如同在軟體開發中,若不定期進行 技術選型 的審視,專案也會累積大量冗餘的套件。

回顧一下前幾天的文章,先從 難以理解的程式碼 開始看起,就如同一團亂的人生一樣,需要好好的整理。重構的目的在於簡化,是在不改變行為和結果的情況下,讓自己更舒服的一種技巧。

接著我們從物件過多的角度切入,談到了物件變多之後所產生的 重複問題,接著延伸談到當同類型物件變多之後該怎麼進行 分類管理

但只是收爛攤子是不夠的,最終我們還是會回到物件過多的源頭,也就是回到 需求面來看,從根本問題看怎麼從來源就減少,或是評估自己擁有的物件到底是好或是不好?

在程式碼的撰寫上,最常聽到的就是「不要自己造輪子」,但在 開源套件選擇 的汪洋大海中,我們又該如何明智地抉擇?

套件評估 大致上會有幾個關鍵步驟:

  1. 明確需求: 確認自己要達成的目標,這能直接縮小 開源套件選擇 的範圍。
  2. 套件資料收集: 收集功能、文件、社群活躍度等資訊。
  3. 測試和評估: 實際加入專案中進行 POC。

在前端開發中,常用的 套件評估 工具是 npm trends,用於追蹤和比較不同 JavaScript 套件的下載量和使用趨勢。

開源的專案來說,小編還會進一步去看該專案的 GitHub 看看:

  • Commit 的次數是否頻繁、是否原子化。
  • GitHub 星星數量。
  • Issue 的開單跟解決數量。
  • 套件引用的依賴項是否有在更新。
  • 貢獻的人多不多。
  • 版號進版的狀況,是否有 Change Log 或 Release Note。
  • Quick Start 是不是真的 Quick。
  • 套件是否包山包海,有沒有更輕量化的選擇。
  • 是否有出付費版 (Enterprise Support)。

軟裝潢與硬裝潢:套件對架構設計的影響

如果從 架構設計 切入,以家具裝潢來說大概就是軟裝潢跟硬裝潢。軟裝潢(如家具)有較高的可動性;而硬裝潢(如建築結構)更動成本極高。

在進行 技術選型 時,小編會觀察套件的「穿透性」:

  • 穿透性: 套件是否穿透原本程式架構。例如 Redux 就屬於「硬裝潢」,一旦裝下去,未來更換的成本非常高。
  • 影響範圍: 套件是否容易被替代。
  • 再封裝: 套件是否具備良好的模組化設計,方便進行二次封裝。

不管是什麼樣的套件或是技術引入都是有成本的,所以在生活和工作中,區分「想要」和「需要」並做出明智的選擇是重要的。想要和需要可能不同,所以需要評估後確保行動符合長期目標和價值觀,目的在節省資源、減少浪費,並專注於重要的事情。

然而,也不應該忽視「想要」,因為把錢換成其他存在的樣子可以增添生活樂趣和滿足感。技術的話就快點去開一個小專案吧!以小編來說,雖然工作上大多是用熟悉的工具,但就會在小專案中嘗試使用較新潮的 Build Tool(也因此常見的幾個都玩過一輪),甚至是大膽改寫小專案成沒使用過的 Svelte 也是不錯的體會與經驗。

無論是在購物、工作還是生活中,好的選擇可以幫助我們保持平衡和滿足感,通過自我反省、目標設定和明確價值觀,我們可以更好地管理我們的想要和需求,從而建立更豐富、更有意義的生活。


FAQ:技術選型常見問題

Q1:GitHub 星星數越高,就代表該套件越好嗎?

A:不一定。 星星數反映的是「知名度」而非目前的「維護品質」。有些過氣的套件星星數很高但已停止更新。評估時應優先查看最近 3 個月的 Commit 頻率與 Open Issue 的回應速度,這才是衡量專案健康度的真實指標。

Q2:什麼是「再封裝 (Wrapping)」?為什麼它能降低技術風險?

A:再封裝 是指不在業務程式碼中直接調用第三方套件,而是建立一個自己的「殼」來代理它。例如,不直接在元件中使用 axios.get,而是寫一個 apiService.get。未來如果想換成 fetchky,您只需要修改 apiService 一個地方,而不需要搜尋取代全站程式碼。

Q3:引入一個大型套件 (如 Lodash) 只為了用一個方法,會有問題嗎?

A:在現代開發中,您可以透過 Tree-shaking 機制自動移除未使用的程式碼。但即便如此,良好的習慣是優先尋找更輕量、專一的替代方案,或直接撰寫幾行 Vanilla JS 程式碼,以保持專案的精簡與可控。


掌握了 技術選型 的智慧,您就能在套件的海量選擇中保持清醒。記住,最貴的成本往往不是授權費,而是未來更換它時所需付出的維護時間!


喜歡這篇文章,請幫忙拍拍手喔 🤣