首页  >  文章  >  web前端  >  了解干净的代码:处理 ⚡

了解干净的代码:处理 ⚡

WBOY
WBOY原创
2024-08-22 18:56:22671浏览

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