📘 Node.js 重构·规范
30 章
🎒 风格 · 明快清爽
01
重构入门
· 本质与抉择
什么是重构?为什么需要重构?重构与重写的区别
02
代码坏味道 (上)
· 重复·过长
重复代码、过长函数、过大的类、过长参数列表
03
代码坏味道 (下)
· 耦合·泥团
发散式变化、霰弹式修改、依恋情结、数据泥团
04
重构原则
· 时机与节奏
何时重构、何时不该重构、重构的节奏与流程
05
测试先行
· TDD 初体验
单元测试基础、Jest框架入门、测试驱动开发
06
提炼函数
· 小函数之美
从长函数中提取小函数,提升可读性
07
内联函数 & 提炼变量
· 简化间接
简化间接层,消除临时变量
08
引入参数对象
· 告别长参数
告别过长参数列表
09
拆分循环 & 管道取代循环
· 清晰循环
让循环更清晰
10
移动语句 & 分解条件
· 理顺逻辑
理顺逻辑顺序
11
以多态取代条件
· 消除switch
消除switch与if-else泥潭
12
引入 Null 对象
· 告别空指针
告别空指针检查
13
封装变量 & 封装集合
· 保护数据
保护数据不被意外修改
14
项目结构规范
· 分层架构
Controller-Service-Repository
15
命名规范
· 变量/函数/类/文件
变量、函数、类、文件、目录的命名约定
16
代码风格
· ESLint + Prettier
ESLint + Prettier 配置实战
17
异步规范
· Async/Await
Async/Await最佳实践、错误处理模式
18
模块规范
· ESM vs CJS
ES Module vs CommonJS,何时用哪个?
19
配置管理
· 环境变量/中心
环境变量、配置文件、配置中心
20
日志规范
· Winston/Pino
Winston/Pino使用、日志分级、日志切割
21
错误处理规范
· 全局中间件
自定义错误类、全局错误中间件
22
安全规范
· Helmet/防注入
输入验证、SQL注入防范、XSS防范、Helmet
23
测试规范
· 单元/集成/E2E
单元测试、集成测试、E2E测试分层策略
24
API设计规范
· RESTful/版本
RESTful风格、版本控制、分页与过滤
25
数据库操作规范
· ORM/事务
ORM vs 原生查询、事务管理、迁移脚本
26
缓存规范
· Redis 模式
Redis使用模式、缓存穿透/击穿/雪崩应对
27
性能优化
· 内存/集群
内存泄漏排查、CPU profiling、集群模式
28
CI/CD 规范
· 自动化
Git工作流、自动化测试、自动化部署
29
代码审查规范
· Checklist
Code Review Checklist、常见问题清单
30
综合实战
· Express重构
将一个遗留Express项目重构为规范的分层架构