菜单

函数

相关源文件

本文档概述了编写清晰、可维护的 JavaScript 函数的核心原则。函数是 JavaScript 应用程序的基本构建块,遵循这些指南将使您的代码更具可读性、可测试性和可维护性。有关特定与函数相关的主题的详细信息,请参阅 函数参数函数行为

函数原则概述

用于函数的干净代码方法强调了几个关键原则,这些原则共同作用以创建内聚、可维护的代码

来源:README.md232-1036

函数大小与职责

干净函数设计的基石是单一职责原则:函数应该只做一件事,并且做好。这使得它们更容易理解、测试、重构和重用。

单一职责

当函数试图做太多事情时,它们就变得难以维护和理解。请看这个比较

来源:README.md290-322

干净的实现方式将不同的操作分离到它们自己的函数中。如 README 第 300-321 行的示例所示,将活动客户端筛选逻辑提取到自己的函数(isActiveClient)中,使代码更具可读性和可维护性。

单一抽象级别

函数应在单一抽象级别上运行。这可以提高可读性,使代码更容易理解

来源:README.md354-421

函数参数

函数参数的数量和处理方式极大地影响了代码的可读性和可维护性。通常来说,函数应尽可能少地接受参数(最好是两个或更少)。

参数处理最佳实践

来源:README.md232-285 README.md565-591

有关函数参数的更深入讨论,请参阅 函数参数

命名函数

函数名应清楚地表明函数的作用。一个命名得当的函数可以使代码具有自我文档化,并且更容易理解。

函数命名指南

指南糟糕的示例良好的示例
保持描述性function add(date, month)function addMonthToDate(month, date)
使用动词短语function login()function authenticateUser()
匹配意图与实现function getUser() 同时修改数据function getUserAndLogAccess()
保持一致getUsers(), fetchProducts(), retrieveItems()getUsers(), getProducts(), getItems()

来源:README.md326-350

副作用

当函数修改其作用域之外的状态时,会发生副作用。这些可能导致意外的行为和错误。

副作用的类型

来源:README.md594-696

第 616-639 行的示例演示了修改全局变量如何产生副作用。改进后的版本返回一个新值,而不是修改现有值。

有关副作用管理的更深入介绍,请参阅 函数行为

函数式编程方法

JavaScript 同时支持命令式和函数式编程风格。干净的代码通常倾向于函数式方法,以提高清晰度和可测试性。

命令式 vs. 函数式

来源:README.md733-795

第 742-795 行的示例对比了使用 for 循环的命令式方法和使用 reduce 方法计算代码行总数的函数式方法。

函数中的条件逻辑

干净的函数通过抽象和多态性最大限度地减少了复杂的条件逻辑。

条件逻辑模式

来源:README.md799-906

函数代码质量清单

此表总结了确保高质量函数实现的关键实践

原则描述参考
避免类型检查使用一致的接口而不是检查类型README.md911-973
移除死代码消除未使用的函数和代码README.md1005-1035
避免过早优化首先关注清晰度README.md977-1001
正确设置默认值使用 Object.assign 或默认参数README.md512-563
消除重复提取公共功能README.md426-508

函数设计流程

设计函数时,遵循此流程将有助于您遵守干净代码原则

来源:README.md229-1036

干净的 JavaScript 函数的关键关系

下图说明了各种函数原则如何相互关联以及与更广泛的代码组织的关系

来源:README.md600-696 README.md290-322

结论

干净、设计良好的函数是可维护的 JavaScript 应用程序的基础。通过遵循本文档中概述的原则,您可以创建更易于理解、测试和维护的函数。有关更具体的指导,请参阅 函数参数函数行为