调整函数声明是什么
调整函数声明指给函数改名或改参数:改名表达新意图,加参数补充信息,删参数简化调用。直接在原地改会让所有调用点同时失效,因此迁移期通常保留一个旧签名做过渡(标注废弃并转发到新实现),调用点分批切换,全部切完再删除旧签名。
基本信息
| 做法 | 改名、增参、减参、调整参数顺序 |
|---|---|
| 过渡形态 | 旧签名转发 + 废弃标记 |
| 收尾动作 | 所有调用点切换后删除旧签名 |
| 影响面 | 同仓库调用点、下游依赖、对外接口 |
| 必要前提 | 有测试或编译期能发现全部调用点 |
典型使用场景
- 函数名与现在的职责不符,容易被误用
- 参数太少,每个调用方都要额外传上下文
- 参数太多,常成组出现,适合合并为参数对象
- 参数顺序容易记错,需要调整或改用命名参数
- 公共库下线旧签名,需要一段废弃周期
过渡形态
过渡形态
// 旧名字保留一段时间,转发到新实现
@Deprecated
double circum(double radius) {
return circumference(radius);
}
double circumference(double radius) {
return 2 * Math.PI * radius;
}
// 全部调用点切换完成后,删除旧签名改签名的方式
| 做法 | 适用 | 风险 |
|---|---|---|
| 原地直接改 | 调用点少且全在仓库内 | 编译期即暴露全部影响 |
| 旧签名转发过渡 | 公共库或跨团队调用 | 过渡期过长会留下两套入口 |
| 参数对象替换多参数 | 参数常成组出现 | 需同步修改所有构造点 |
公共库的签名变更要走废弃周期:保留一个发布周期的旧签名,同时给出替代指引与时间点,让下游有迁移窗口。
调整参数顺序最危险:类型相同或兼容时编译器不会报错,调用方会静默传错值;顺序调整应尽量让类型可区分,或改用命名参数。
动手前先做一次调用点盘点:仓库内用引用查找,跨仓库看文档与发布说明。参数顺序类改动必须逐个核对,编译器在这类错误上帮不上忙。