重构老旧 API 层的那些事
😤今天终于下定决心重构那个两年没人敢动的 API 层了。3000 多行代码,函数名全是 doStuff()、processData() 这种命名,看得我血压飙升。
核心思路是把所有数据访问逻辑抽到独立的 Repository 层,Controller 只负责参数校验和返回格式化。过程中发现了三个隐藏的内存泄漏——原来某个老函数在循环里创建数据库连接但从不释放。
class OrderRepository {
constructor(private db: Database) {}
async findByUserId(userId: string): Promise<Order[]> {
return this.db.query(
'SELECT * FROM orders WHERE user_id = $1',
[userId]
);
}
}
永远不要假设旧代码"能跑就别动"。隐藏的 bug 不会自己消失,只会等到最糟糕的时候爆发。重构时先写集成测试,保底不亏。