《重构: 改善既有代码设计》关于代码的"坏味道" 【其一 表达与清晰度问题】
表达与清晰问题可以分为两类,信息表达不充分与表达过度,而这类问题在如今有AI辅助下,是最好解决。
信息表达不充分
获取信息不足,理解困难
- 神秘命名(Mysterious Name),不用多说,像
a
b
x
y
等变量命名,虽说设计阶段很方便,但在维护与使用会产生时间成本。 - 注释(Comments),不是说写注释不好,而是不应该把注释当作“除臭剂”
def do_stuff(a, b):
return a * b + 42
result = do_stuff(5, 7)
def calculate_total_price(unit_price: float, quantity: float) -> float:
TAX = 42
return unit_price * quantity + TAX
total = calculate_total_price(5, 7)
上面的函数 do_stuff
就算把注释加上,每次阅读代码可能都需要鼠标移到函数上靠IDE的阅读一遍注释才能理解其作用;而calculate_total_price
只看函数命名便能知道它是干嘛的。
表达过度
代码获取信息过多,信噪比低
- 冗赘的元素(Lazy Element),被设计出来但没有被使用的变量、函数、类等,也可能是维护过程遗留的东西,属于纯粹的噪音
- 夸夸其谈通用性(Speculative Generality),过早抽象、设计,不仅是噪音,还在开发阶段浪费不少时间与精力
循环语句(Loops)
,并不是说循环是错的,而是说在高层逻辑中显式写循环是低层次的表达。相比于使用声明式的高级抽象(如函数式操作),往往会产生更多的问题。比如map
stream
等高级方法能代替for
while
的功能,并更清晰地表达其意图。