課程筆記:重構(refactor)的上位互換——重寫(rewrite)

在 Udemy 課程 How to Build the Right Software (and Choose the Right Stack) 中得到一個有趣的洞見:

考慮重寫(rewrite),而不止步於重構(refactor)。

如果只能用一句話來解釋何謂重寫,那就是從使用者的角度出發,解決前一版軟體沒有處理掉的問題

重寫(rewrite)是什麼

重構(refactor)和重寫(rewrite)不同。前者(參考 wikirefactoring.guru)的定義是:

不影響產品功能的前提下,改善程式碼的設計、結構或實作方式。目的是提升程式碼的維護性與(功能)拓展性

而本課程提出的重寫則是想達成以下目的:

解決前一版軟體沒有解決的問題(讓產品更成功)。

所以重寫絕不是單純升級既有功能的實作方式,而是在徹底理解使用者目前的問題後,移除/融合/升級既有功能。

為何選擇重寫(而不是進行重構)

因為重構只有解決開發者(程式碼面向)的問題。產品在重構後,可能還是沒有解決使用者的問題。但一個產品的終極目標應該是解決使用者遇到的問題

另外課程中也指出,在重寫既有的產品時,開發者可能會發現多個功能其實都是在試圖解決一樣的問題(目的相同),這代表重寫時可以刪除目的相同的程式碼(日後要維護的程式碼變少)。所以重寫可以帶來雙贏的結果:

如何重寫

don’t replace the whole software at once