首页 > web前端 > js教程 > 正文

了解干净的代码:函数 ⚡

WBOY
发布: 2024-08-16 06:11:36
原创
588 人浏览过

Understanding Clean Code: Functions ⚡

在软件开发中,函数是任何应用程序的构建块。它们是我们构建逻辑、封装行为以及将复杂任务划分为可管理部分的主要方式。

然而,并非所有函数都是一样的。在《整洁代码》的第 3 章中,重点是编写小任务、重点突出并做好一件事。

在本文中,我们将深入研究这些原则并探索如何在 JavaScript 中应用它们。


?1.小功能:少即是多

干净代码的一个核心原则是函数应该很小。

但是在这种情况下“小”意味着什么?作者主张函数通常只有几行长。

这个想法是小函数更容易理解、测试和维护。

让我们看一个 JavaScript 示例:

// Bad Example: A large, unfocused function
function processOrder(order) {
    applyDiscount(order);
    calculateShipping(order);
    calculateTax(order);
    generateInvoice(order);
    sendConfirmationEmail(order);
    updateInventory(order);
}
登录后复制

这个函数虽然看似简单,但作用太多。这些任务中的每一个都可以而且应该分解为自己的功能。

// Good Example: Small, focused functions
function processOrder(order) {
    applyDiscount(order);
    calculateShipping(order);
    calculateTax(order);
    generateInvoice(order);
    sendConfirmationEmail(order);
    updateInventory(order);
}

function applyDiscount(order) {
    // Discount logic
}

function calculateShipping(order) {
    // Shipping calculation logic
}

function calculateTax(order) {
    // Tax calculation logic
}

function generateInvoice(order) {
    // Invoice generation logic
}

function sendConfirmationEmail(order) {
    // Email sending logic
}

function updateInventory(order) {
    // Inventory update logic
}
登录后复制

在修改后的示例中,每个函数只做一件事情,使代码更易于阅读和维护。

processOrder 函数现在充当高级协调器,而更小、更集中的函数则处理细节。


?2.做一件事

一个函数应该做一件事并且把它做好。如果您发现自己正在编写一个执行多个任务的函数,则表明您应该将其重构为更小的函数。

这是一个例子:

// Bad Example: A function doing multiple things
function formatAndSendEmail(email, subject, message) {
    const formattedMessage = `<html><body>${message}</body></html>`;
    sendEmail(email, subject, formattedMessage);
}
登录后复制

虽然这个函数看起来很简洁,但它做了两件事:格式化消息和发送电子邮件。相反,将其分解:

// Good Example: Functions doing one thing
function formatMessage(message) {
    return `<html><body>${message}</body></html>`;
}

function sendFormattedEmail(email, subject, message) {
    const formattedMessage = formatMessage(message);
    sendEmail(email, subject, formattedMessage);
}
登录后复制

现在,每个函数都有一个职责,这使得代码更易于测试和重用。

formatMessage 函数可以独立于电子邮件发送逻辑进行测试。


?3.避免副作用

函数应该最大限度地减少副作用,这意味着它们不应该以意想不到的方式改变系统的状态。有副作用的函数可能更难调试和推理。

这是一个例子:

// Bad Example: A function with a side effect
let globalCounter = 0;

function incrementCounter() {
    globalCounter++;
}
登录后复制

incrementCounter 函数会更改全局状态,如果不仔细管理,可能会导致错误。

更好的方法是返回一个新值并让调用者决定如何处理它:

// Good Example: Avoiding side effects
function incrementCounter(counter) {
    return counter + 1;
}

globalCounter = incrementCounter(globalCounter);
登录后复制

通过避免副作用,您可以使您的函数更加可预测且更易于使用。


?4.单一抽象级别

函数应该在单一抽象级别上运行。在同一函数中混合不同级别的细节可能会使其更难以理解。

例如:

// Bad Example: Mixed levels of abstraction
function getUserData(userId) {
    const user = database.fetchUserById(userId); // Low-level
    return `${user.firstName} ${user.lastName} (${user.email})`; // High-level
}
登录后复制

这里,该函数将低级数据库获取与用户数据的高级格式化混合在一起。

最好将这些问题分开:

// Good Example: Single level of abstraction
function getUser(userId) {
    return database.fetchUserById(userId);
}

function formatUserData(user) {
    return `${user.firstName} ${user.lastName} (${user.email})`;
}

const user = getUser(userId);
const formattedUserData = formatUserData(user);
登录后复制

现在,每个函数都在单一抽象级别上运行,使代码更清晰且更易于维护。


结论⚡

编写干净的函数是编写可维护代码的基石。

通过保持函数较小、确保它们只做一件事、避免副作用以及维护单一抽象级别,您可以创建更易于阅读、理解和维护的代码。

当您继续磨练 JavaScript 技能时,请牢记干净代码中的这些原则,以编写真正体现简单性和清晰性艺术的函数。

以上是了解干净的代码:函数 ⚡的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!