JavaScript/Node 最佳实践
我的其他列表
我通常会遵循Airbnb 的 JavaScript 样式指南,但我打算保留这份列表作为参考。如果你在项目中集成了 ESLint,其中大多数规则将自动强制执行。
- 如果你仍在使用 es5,请始终使用 'use strict'
- 不要使用全局变量
- 始终优先使用 const,而不是 let。抛弃 var
- 更喜欢编写纯函数,而不是改变数据或产生副作用的状态函数
- 学习并使用函数式组合
- 函数式编程优于命令式编程
- 使用方法链
- 优先选择组合而不是继承
- 使用 linters 来确保你的代码是一致的。
- 使用 Airbnb JavaScript 样式指南 ( https://github.com/airbnb/javascript )
- 避免在生产环境中使用客户端控制台日志
- 优先使用‘===’而不是‘==’
- 使用默认参数而不是短路或条件
- 函数参数(理想情况下为 2 个或更少)
- 如果可能的话,将条件语句封装在单独的函数中
- 避免否定条件
- 学习并实践 SOLID 模式的实施
- 使用 Promises,而不是回调
- Async/Await 比 Promises 更简洁,多用
- 将 try/catch 与 async/await 结合使用
- 使用 Async-Await 或 Promise 进行异步错误处理
- 不要忽略被拒绝的承诺,将其记录到外部日志服务
- 永远不要使用 eval
- 按组件构建解决方案
- 将常用实用程序包装为 npm 包
- 分离 Express 的“应用程序”和“服务器”
- 使用环境感知、安全和分层配置
- 区分操作错误和程序员错误
- 仅使用内置 Error 对象
- 集中处理错误,而不是在中间件中
- 当发生未知的致命错误时正常退出进程
- 使用成熟的记录器来提高错误可见性
- 使用 APM 产品 (sentry.io) 发现错误和停机时间
- 捕获未处理的承诺拒绝
- 快速失败,使用专用库验证参数
- 使用 ESLint
- 正确分隔语句
- 优先使用命名函数,而非匿名函数。所有函数,包括闭包和回调函数,都要命名。避免使用匿名函数,因为它有助于分析。
- 通过文件夹来引用模块,而不是直接引用文件
- 要求在每个文件的开头、任何函数之前和外部都放置模块
- 使用 linter 检测代码问题
- 使用静态分析工具定期重构
- 避免使用 Node.js 加密库来处理密码,请使用 Bcrypt
- 防止恶意的 RegEx 导致单线程执行过载
- 不要阻塞事件循环
- 使用“node”命令引导,避免使用 npm start(在容器环境中)
注意:如果您想更新此列表,请发表评论,我会采纳您的更改。
参考:https:
//github.com/goldbergyoni/javascript-testing-best-practices
https://github.com/ryanmcdermott/clean-code-javascript
https://github.com/goldbergyoni/nodebestpractices
https://github.com/RisingStack/node-style-guide
https://github.com/DrkSephy/es6-cheatsheet