我可以怎麼優化我的程式碼
- function 越簡單(簡短)越好
回顧一下自己一年多前寫的程式碼,發現自己真是年輕不懂事,很貪心的想要在一隻 function 裡面寫完一大堆邏輯,當需要修改需求時再回來看這一段簡直是迷宮,必須從頭開始閱讀到最後才能找到要改的地方在哪裡,所以歸納出一個重點”函式應該只要做一件事就好,越單純越簡單越好,一來好維護二來也讓你的同事不會在你的程式碼裡面迷路”。
- 變數的命名重要(function 也是)
剛碰程式的時候很常隨便命名,aaa、bbb、xyz
諸如此類的,自己寫扣完全不覺得變數命名有什麼重要的,直到開始工作的時候,看到x1、x2
這種變數,對,完全不知道這些名字代表什麼意義,要邊看 code 順流程跑一遍,才知道這個變數是幹嘛用的,沒錯!我真的看過一些奇耙的單字(Ex.fxxk…)
出現在裡面,想必是想到什麼就命名什麼,隨心所欲,但這樣第一時間根本沒辦法知道他的用意是什麼,因此,明確的命名可以讓同事或是日後失憶的你,快速抓到這些變數的重點是什麼。
1 | //bad |
- 重複的 code
當下開發並不會意識到這一點,當你真的寫完之後,仔細一看,會發現有些重複的邏輯,一樣的東西一直重複讓程式碼變得很冗長,盡可能的將重複的代碼,寫成一隻 function,再各自 call 這支 function。 - 參數越少越好
理想的函式不需要任何一個參數,偶而出現一兩個還可以接受,三個以上就不太理想了,我這輩子看過最多的參數是 9 個,每個都是必填,number、string、boolean、string…
,真的是會傳參數傳到懷疑人生,而且一恍神還會傳錯,所以盡可能的參數越少越理想。 - 不要留下被註解的程式碼
有時候對程式碼有種神秘的情感,像是有時候在嘗試 a 、b 哪種作法比較適合時,先把 a 作法註解掉,然後保留 b,心想某天可能 a 會用到,然後 a 就這樣被遺忘了,總而言之,用不到的 code 在 commit 的時候直接刪除吧。 - 減少程式碼的耦合度(Coupling)
耦合就是函式之間的相依性,理想的狀況當然是低耦合,如果今天修改了某個函式連帶會影響到其他函式,那就會很難維護,像是改了 a 函式,結果 b、c 函式也要一併修改,也會變得不好除錯。
另外 ,分享幾個優化程式碼的例子
1.當有數個條件的時候,使用 Array.includes
1 | if (page == "A" || page == "B" || page == "C" || page == "D") { |
2.使用 map
或 object
取代 switch
1 | switch (type) { |
3.用解構取代 && 條件
1 | function test(obj) { |
4.較複雜的條件判斷
1 | if ( |
當然,程式碼可以優化的方式一定還有很多種,推薦大家閱讀 clean code 無瑕的程式碼這本書 ,裡面蠻多觀念都挺不錯的。