升格 / 降格:一种关注成员生命周期的重构方式
在日常开发中,我们经常需要调整变量、方法、类的作用域和生命周期。传统的重构术语,如“抽象”“封装”“内聚”“解耦”等,主要从结构关系描述代码优化。但还有一个重要维度常被忽略——成员在系统中的层级是否合适。
为了解释这一点,我提出两个术语:升格与降格。该名词源于电影摄影行业。因其言简意赅,无法比拟的语义表达,我将其借用于编程行业。
它们的目的,是让重构动作表达得更直接:把成员放回它应该待的地方。
什么是“升格”
升格:当一个成员所在层级太低,导致难以复用、难以管理,需要提升到更高层级。
典型场景包括:
1.局部变量需要在多个方法使用
2.局部逻辑上升为类级或模块级
3.零散逻辑提炼为独立组件
升格的本质是:扩大成员的生命周期和影响范围,让它成为上层知识的一部分
什么是“降格”
降格:当某个成员身处的层级过高,却没有必要承担那么大的影响范围,需要缩回到更局部的层级。
常见场景包括:
1.类字段只被一个方法使用
2.全局变量本质是局部上下文信息
3.模块承担了过高的职责
降格的本质是:缩小成员的生命周期,让结构更聚合、更简洁。
实例说明
示例:局部变量升格为类字段
void Update()
{float speed = 5f;Move(speed);
}
如果 speed 在多个方法使用,可以升格为类字段:
Class
{private float speed = 5f;void Update(){Move(speed);}
}
示例:类字段降格为局部变量
private int tempResult;void Calculate()
{tempResult = ...
}
只在单个方法使用,应降格:
void Calculate()
{int tempResult = ...
}
升格 / 降格作为重构动作的意义
与传统术语相比:意图更明确,沟通更快.可直接用于 PR、Review、文档.不需要额外讲复杂理论,是一种轻量、直观的重构描述方式。