為什麼需要重構
在我們的生活中,有許多重要的事情需要我們時常檢討和改進,這個過程被稱為斷捨離,不僅適用於程式碼,也適用於我們的人生。
在寫許多行程式碼來實現不同的功能,有時候這些程式碼變得非常複雜難以理解,就像一個亂掉的房間一樣,這時候該斷捨離的像是
- 寫作文一樣的註解
- 需要超級多參數才可以執行的函式
- 過度複雜的條件判斷
- 寫死的 Magic Number 或是設定檔
- 覺得以後有機會用到但現在沒作用的程式碼
- 過多的中間產物,更不該把中間產物當結果
- 東貼西貼複製貼上的程式碼
- 做到一半且短期不會完成的功能
1 | if (a > 10 && (b === "foo" || c < 5) && (d !== "bar" || e > 20)) { |
重構是什麼
程式的斷捨離會是一個重構的過程,重構讓程式碼變得更加簡潔、容易閱讀和維護,就像整理混亂的房間,第一步就是將不必要的部分丟棄,重新組織與排放,使一切井然有序。
不僅程式碼需要斷捨離,我們的生活也需要,被填滿了的時間表有時候會造成過度壓力,無法應對生活中的挑戰,這也需要人生的斷捨離的時候。
斷捨離是一個檢討和簡化我們生活的過程,藉由檢討目標和價值觀,看看哪些是真正重要的,哪些是可以放下的。
以剛剛最後一個例子來說,有看出問題在哪邊嗎?
1 | function addNumbers(num1, num2) { |
該減少的是過多的型別檢查,名稱就是 addNumbers
還傳其他參數進去是天兵? JavaScript 會轉型並不會產生程式錯誤回傳錯誤值跟 請輸入有效的數字
有個 87% 像,else 的 block 是一定會被執行的也不需要多包一層。
1 | function addNumbers(num1, num2) { |
不管在什麼層面,要避免過度和極端,過度的追求會導致不平衡和不和諧,過多的欲望可能導致內心的不穩定和不滿足,當減少欲望,更可以獲得內在的平靜和滿足感。
其中有個水的比喻很好,水能夠適應不同的形狀,不爭鬥也不過於強硬,即使不強硬但卻也可以鑿穿石頭。
YAGNI (You aren’t gonna need it!)
YAGNI(You Aren’t Gonna Need It)是一個在軟體開發中的設計原則,它強調在開發過程中不要添加不必要的功能或程式碼。
對於人生來說,我們在同個時間只需要一條牙膏跟一隻牙刷,如果依照每層樓去擺放一樣的物品一個家裡面就會擁有好幾組,但我們其實只需要一組不是嗎?
整理東西的時候,我們就要先把同一類的東西先集中,就像我就有好多無線耳機跟喇叭,學校宿舍、工作租屋、辦公室、浴室、運動,但搬回家之後就多了許多沒用到的。
從《道德經》的觀點來看,YAGNI 可以被解釋為一個實踐節制和簡單的原則,符合道教哲學中強調的中庸之道和適度的概念。
YAGNI 提醒我們不要過於追求完美或添加過多的物品,而應該保持簡單和精簡,並且適時去反省只關注當下需求好好解決即可,不需要為了未來的可能增加多餘的東西。
喜歡這篇文章,請幫忙拍拍手喔 🤣