本文以創用 CC 姓名標示-非商業性-相同方式分享 4.0 國際授權釋出
讀者您好
Austin 某天想要嘗試一個實驗:不借助網路資源,能否獨自開發一個簡單的網路應用程式?結果他發現這是一項不小的挑戰。
Austin 認為,這是一個有趣的題目,可以用來衡量開發者對技術的了解程度。您是否能在不使用網路搜尋的情況下,獨立完成一個網路應用程式的開發呢?不妨試試看,挑戰一下自己。
🔹Lapce
Lapce 是以 Rust 開發的開源程式碼編輯器,致力於提供快速、流暢且高度客製化的編輯體驗。其功能包括智慧程式碼完成、多視窗支援、強大的尋找和替換功能,以及對多種套件的支援。
🔹Delta
Delta 是一個為 git 而設計的外掛,當使用者在 git 當中使用到比對或是搜尋時都能夠使用。它提供了語法著色和行號顯示功能,還能夠以雙邊對照方式來檢視程式碼,讓開發者在文字模式下更容易追尋修改的足跡。
🔹Zoxide
Zoxide 是一個智慧型切換目錄的指令,可以在主流的 Shell 中使用。它會記住使用者最常使用的目錄,當需要切換目錄時,使用者能夠以較少的按鍵切換到目的地。
🔸不做事的正確姿勢
在當今的軟體環境中,應用程式和服務常面臨相容性挑戰。為了解決這些問題,Raymond Chen 提出了一種稱為 "無行為"(inert)的策略,使得 API 能夠在不支援的平台上以一致的方式運行,但不產生任何實際的效果。
以 Windows 和 Xbox 為例,Windows 有完善的列印基礎設施,但 Xbox 沒有。當應用程式在 Xbox 上嘗試列印時,列印功能會報告沒有安裝印表機,而不是拋出不支援的異常。這樣,應用程式會顯示一個空的印表機列表,讓使用者自行取消列印。
此外,"無行為" 的設計也適用於將 API 除役。當要除役具有多種功能的 API 時,可以讓 API 的行為與規範一致,但不執行任何有用操作。這種做法需要仔細設計 API 的行為,以確保與現有程式碼相容。透過這種策略,開發者能夠在不同平台上有效應對相容性挑戰,同時保持應用程式的穩定性。
🔸Shell 指令中的模組化設計
在撰寫 Shell 指令時,常見的做法包括使用 cat、grep 和 head 等命令。這些命令有時被認為是多餘的,但從模組化程式設計的觀點來看,它們仍有其價值。模組化程式設計強調程式碼的獨立性,目的是在新增功能時,僅需添加程式碼而不需修改現有程式碼。
理想的設計是能夠在添加或移除程式碼時,仍保持原有的設計風格。許多程式由一連串的元件組成,每個元件處理前一個元件傳遞過來的資訊。如果需要移除鏈中的某個元件,可能會遇到困難,因為前一個元件的輸出可能不符合下一個元件的輸入要求。
使用 cat 等命令可以建立一個獨立的處理步驟,將檔案名稱轉換為檔案內容。這樣做可以在不影響其他元件的情況下,移除任何中間處理步驟,同時保留一個完整的處理管線。這種做法增加了靈活性和解耦,即使在簡單的 Shell 指令中,也是一種值得採用的模組化方式。
以上就是本期的內容,喜歡的話請給❤️,分享或轉寄本電子報給有興趣的朋友。如果您有想要介紹的開源專案,也請來信與我們分享,或是在 X (前 Twitter) 留言給我們,感謝!