| 坏味道 | 命令查询混用(Command-Query Separation 违反) |
|---|---|
| 做法 | 拆分查询函数与命令函数 |
| 收益 | 可安全重复调用查询、便于缓存 |
示例
示例
// 之前:pop() 返回并删除,重复调用有副作用
// 需求「看一眼栈顶」时被迫 peek
// 之后:peek() 查询 + pop() 命令分开函数同时承担「回答一个问题」与「改变状态」时,按查询与命令分离:要么返回结果并保持无副作用,要么只做动作不回值;副作用与返回值混杂最常见的坑是重复执行。
| 坏味道 | 命令查询混用(Command-Query Separation 违反) |
|---|---|
| 做法 | 拆分查询函数与命令函数 |
| 收益 | 可安全重复调用查询、便于缓存 |
// 之前:pop() 返回并删除,重复调用有副作用
// 需求「看一眼栈顶」时被迫 peek
// 之后:peek() 查询 + pop() 命令分开