了解這八個(gè) JavaScript 代碼重構(gòu)技巧,成為團(tuán)隊(duì)核心開(kāi)發(fā)者!
寫(xiě)出功能正確的代碼只是第一步,寫(xiě)出易于維護(hù)和擴(kuò)展的高質(zhì)量代碼,則是每位開(kāi)發(fā)者都應(yīng)追求的目標(biāo)。分享 8 個(gè)實(shí)用的 JavaScript 代碼重構(gòu)技巧,幫助你提升代碼質(zhì)量。
1. 提取重復(fù)代碼為可復(fù)用函數(shù)
重復(fù)的代碼不僅增加了代碼量,還會(huì)導(dǎo)致維護(hù)困難。當(dāng)你發(fā)現(xiàn)相似的代碼塊時(shí),應(yīng)該將其提取為獨(dú)立的函數(shù)。
// 重構(gòu)前
if (user.role === 'admin') {
const adminData = {
name: user.name,
email: user.email,
permissions: user.permissions,
lastLogin: user.lastLogin
};
saveToDatabase(adminData);
}
if (user.role === 'manager') {
const managerData = {
name: user.name,
email: user.email,
permissions: user.permissions,
lastLogin: user.lastLogin
};
saveToDatabase(managerData);
}
// 重構(gòu)后
function extractUserData(user) {
return {
name: user.name,
email: user.email,
permissions: user.permissions,
lastLogin: user.lastLogin
};
}
if (user.role === 'admin' || user.role === 'manager') {
const userData = extractUserData(user);
saveToDatabase(userData);
}
2. 使用對(duì)象解構(gòu)簡(jiǎn)化參數(shù)處理
當(dāng)函數(shù)參數(shù)較多時(shí),使用對(duì)象解構(gòu)可以提高代碼的可讀性和可維護(hù)性。
// 重構(gòu)前
function createUser(firstName, lastName, age, email, address, phone) {
// ...
}
// 重構(gòu)后
function createUser({ firstName, lastName, age, email, address, phone }) {
// ...
}
3. 運(yùn)用早期返回原則
避免復(fù)雜的嵌套條件語(yǔ)句,使用早期返回可以使代碼更清晰。
4. 使用枚舉對(duì)象替代魔術(shù)字符串
將常用的字符串常量定義為枚舉對(duì)象,可以避免拼寫(xiě)錯(cuò)誤并提供更好的代碼提示。
5. 實(shí)現(xiàn)職責(zé)單一原則
每個(gè)函數(shù)應(yīng)該只做一件事,這樣可以提高代碼的可測(cè)試性和可維護(hù)性。
6. 使用函數(shù)組合替代長(zhǎng)方法
當(dāng)一個(gè)函數(shù)變得過(guò)于復(fù)雜時(shí),可以將其拆分為多個(gè)小函數(shù),然后通過(guò)組合來(lái)實(shí)現(xiàn)完整功能。
7. 使用可選鏈和空值合并簡(jiǎn)化空值處理
ES2020 引入的可選鏈和空值合并操作符可以大大簡(jiǎn)化空值處理邏輯。
8. 使用純函數(shù)提高代碼可測(cè)試性
純函數(shù)不依賴外部狀態(tài),且不產(chǎn)生副作用,這樣的函數(shù)更容易測(cè)試和維護(hù)。
// 重構(gòu)前
let total = 0;
function addToTotal(value) {
total += value;
return total;
}
// 重構(gòu)后
function calculateTotal(previousTotal, value) {
return previousTotal + value;
}