首页/开发/代码质量与评审速查/坏味道:过长函数(Long Function)
重构手法62 条

坏味道:过长函数(Long Function)

函数越长越难理解与测试;处理路径是提取与分解:注释分段、条件分支、循环体都可以提炼为命名函数,长度只是信号,可理解性才是目标。

信号需要滚动多屏、注释充当段落标题
手法Extract Function、Decompose Conditional、Replace Temp with Query
好处可单独命名与测试

分解思路

分解思路
parseOrder() {
    validate(order);
    price = priceOf(order);
    discounts = discountFor(order);
    receipt = receiptOf(order, price, discounts);
}
判断标准不是行数阈值,而是:函数是否在做多件事、每件事是否可命名。

易错点

  • 按行数一刀切(超 50 行必拆):机械拆分产生碎片、语义断裂
  • 提取时把大量临时变量变成参数:参数列表膨胀,引入新坏味道

数据来源与参考

  • 《重构》第 2 版 · 第 3 章(Long Function)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌