首頁 >web前端 >js教程 >了解乾淨的程式碼:處理 ⚡

了解乾淨的程式碼:處理 ⚡

WBOY
WBOY原創
2024-08-22 18:56:22693瀏覽

Understanding Clean Code: Handling ⚡

錯誤處理是編寫健全可靠的軟體的重要方面。然而,不小心可能會導致程式碼混亂,難以閱讀和維護。

《簡潔程式碼》第 7 章深入探討了處理錯誤的技術,這些技術不會使程式碼變得混亂,強調清晰性和簡單性。

在本文中,我們將探討本章中的關鍵概念以及如何在 JavaScript 中應用它們以保持程式碼庫的整潔和可維護性。


? 1. 使用異常而不是錯誤代碼

乾淨程式碼的關鍵原則之一是優先選擇異常而不是錯誤代碼。

異常可讓您將錯誤處理邏輯與主邏輯分開,使您的程式碼更具可讀性。

範例:避免錯誤代碼

function getUser(id) {
    const user = database.findUserById(id);
    if (user === null) {
        return -1;  // Error code for user not found
    }
    return user;
}

const result = getUser(123);
if (result === -1) {
    console.error('User not found');
} else {
    console.log(result);
}

在這個例子中,錯誤處理與主邏輯交織在一起,使其更難以理解。

範例:使用異常

function getUser(id) {
    const user = database.findUserById(id);
    if (user === null) {
        throw new Error('User not found');
    }
    return user;
}

try {
    const user = getUser(123);
    console.log(user);
} catch (error) {
    console.error(error.message);
}

透過使用異常,我們將錯誤處理邏輯與主邏輯分開,使程式碼更乾淨、更容易理解。


? 2. 提供有意義的訊息

拋出異常時,提供有意義的錯誤訊息來提供有關錯誤的上下文非常重要。

這有助於快速診斷問題,而無需深入研究程式碼。

範例:在錯誤訊息中提供上下文

function getUser(id) {
    const user = database.findUserById(id);
    if (user === null) {
        throw new Error(`User with ID ${id} not found`);
    }
    return user;
}

try {
    const user = getUser(123);
    console.log(user);
} catch (error) {
    console.error(error.message);  // Outputs: User with ID 123 not found
}

描述性錯誤訊息提供了立即理解問題所需的上下文。


? 3. 不要回傳 Null

傳回 null 可能會導致難以追蹤的 null 參考錯誤。

不要回傳 null,而是考慮拋出異常或使用提供預設行為的特殊情況模式。

範例:避免回傳 Null

function getUser(id) {
    const user = database.findUserById(id);
    if (user === null) {
        return null;  // This can lead to null reference errors
    }
    return user;
}

const user = getUser(123);
if (user !== null) {
    console.log(user.name);
}

返回 null 需要額外的檢查,並且可能會使您的程式碼變得混亂。

例如:引發異常或使用特殊情況

function getUser(id) {
    const user = database.findUserById(id);
    if (user === null) {
        throw new Error(`User with ID ${id} not found`);
    }
    return user;
}

// OR

class NullUser {
    get name() {
        return 'Guest';
    }
}

function getUser(id) {
    const user = database.findUserById(id);
    return user || new NullUser();
}

引發異常或使用特殊情況物件(如 NullUser)有助於避免空引用錯誤並保持程式碼乾淨。


? 4. 謹慎使用 Try-Catch-Finally

雖然 try-catch-finally 區塊對於處理異常至關重要,但過度使用它們會使您的程式碼變得混亂。

僅在必要時使用它們,並避免深層嵌套的區塊。

例如:避免過多的 Try-Catch

try {
    const data = JSON.parse(input);
    try {
        const user = getUser(data.id);
        try {
            sendEmail(user.email);
        } catch (error) {
            console.error('Failed to send email:', error.message);
        }
    } catch (error) {
        console.error('User retrieval failed:', error.message);
    }
} catch (error) {
    console.error('Invalid JSON:', error.message);
}

由於多個巢狀的 try-catch 區塊,此程式碼很難理解。

範例:重建以減少混亂

function parseInput(input) {
    try {
        return JSON.parse(input);
    } catch (error) {
        throw new Error('Invalid JSON');
    }
}

function retrieveUser(data) {
    return getUser(data.id);
}

function notifyUser(user) {
    sendEmail(user.email);
}

try {
    const data = parseInput(input);
    const user = retrieveUser(data);
    notifyUser(user);
} catch (error) {
    console.error(error.message);
}

透過將邏輯分解為單獨的函數,我們減少了巢狀並提高了可讀性。


? 5. 不要忽略捕獲的異常

如果捕獲異常,請確保正確處理。

默默地忽略異常可能會導致意外行為並使偵錯變得困難。

範例:不要忽略異常

try {
    const user = getUser(123);
} catch (error) {
    // Ignoring the exception
}

忽略異常可以掩蓋程式碼中的潛在問題。

範例:處理或記錄異常

try {
    const user = getUser(123);
} catch (error) {
    console.error('An error occurred:', error.message);
}

處理或記錄異常可確保您了解任何問題並可以相應地解決它們。


⚡ 結論

有效的錯誤處理對於編寫乾淨、可維護的 JavaScript 程式碼至關重要。

透過遵循《乾淨程式碼》中的原則——例如使用異常而不是錯誤代碼、在錯誤訊息中提供上下文、避免null 返回、謹慎使用try-catch 以及不忽略捕獲的異常——您可以確保錯誤處理邏輯既堅固又不引人注目。

快樂編碼!

以上是了解乾淨的程式碼:處理 ⚡的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn