# 程式碼六大技巧 > [觀看影片](https://youtu.be/cfeKek8p9us) 1. 有意義的命名 ```javascript let e = "emaill"; // X let emaill = "emaill"; // O ``` 2. 限制傳入的參數 很重要!!以往我都習慣為了讓 code 整體比較簡短,所以會將一大堆的參數塞進一個 function 中,這會造成閱讀和維護困難 **建議一個方法只放三個** - 可以使用物件包裝方式來傳入 - hash ```javascript function getMember(name, number, sex, address, id, username) { ... } // 呼叫: getMember("nnn", 12, "M", "火星", "X44E5S", "nnnUser"); // 極度攏長 // 可以改為 let member_params = { name: "Frank", number: 080055412, sex: "M", address: "台中", id: "xsssff84", username: "judc8003" } getMember(member_params) // 當然 方法要再去解析 ``` 3. 簡化判斷式 當有需要判斷的條件時,若條件上並不複雜,可以將條件式當作回傳值,減少 code 的產生 例如: 今天要判斷台灣人能否騎車? ```javascript function can_person_ride_motobike(person) { if (person.age >= 18 && person.has_ride_license) { return true; } else return false; } // 可改為 function can_person_ride_motobike(person) { return person.age >= 18 && person.has_ride_license; } ``` 4. 變數定義範圍 在過去 js 中的 var 命名,會讓人難以維護,或是在 typeScript 中都把變數、方法設定為`public static`,盡量避免這種行為,變數皆以作用域範圍為主。避免變數汙染 5. 一個方法只做一件事情 function 必須和定義方式的命名一致的行為,不要多做額外的行為 比如今天有個計算總價的方法: ```javascript function calculate_total_amount(orders) { // 明明就是計算卻寄了email? EmailService.end("計算總價完畢"); return orders.sum(price); } // 如果真的必須要在這方法當中寄信,那就用比較中性的命名方式 function calculate_service ``` 6. early return 避免過多的 if 判斷式,當 if else 出現兩次以上,就要好好想想是否過多邏輯堆疊在同一處。 使用 early return 讓程式結束在該結束的位置上。 如:今天要判斷一個阻塞,要用兩個參數做成另一個參數,其中需要判斷這兩個參數必須驗證的狀況下,才能做出另一個參數 ```javascript function return_stuff(argument_1, argument_2) { if (argument_1.is_valid) { if (argument_2.is_valid) { let other_value = get_some_stuff(argument_1, argument_2); if (other_value.is_valid) { return "Okay is Stuff"; } else throw new Error(); } else { throw error; } } else { throw error; } return; } // 可改為: 設計模式: fail fast、guard clause function return_stuff(argument_1, argument_2) { // 提早拋出錯誤 if (!argument_1.is_valid) throw error; if (!argument_2.is_valid) throw error; let other_value = get_some_stuff(argument_1, argument_2); if (!other_value.is_valid) { throw new Error(); } else return "Okay is Stuff"; } ```