09-17
内部质量不是成本:高质量软件反而更便宜
Martin Fowler 反驳了一个常见取舍:花时间打磨软件质量,还是尽快交付功能?他把软件质量拆成用户可感知的 external quality(界面、缺陷)和用户看不见的 internal quality(架构、命名、模块划分)。用户愿意为前者多付钱,却无法判断后者,于是内部质量常被当成可以砍掉的开销。Fowler 的论点是:internal quality 的作用是降低未来每次改动的成本,其成本实为负值。他用累积功能量对时间的伪曲线说明,低内部质量的项目初期推进快,随后 cruft 迅速堆积,改动越来越慢;他访谈的资深开发者表示,劣质代码数周内就会显著拖慢进度。文章也承认顶尖团队同样会产生 cruft,差别在于他们用自动化测试、频繁 refactor 和 continuous integration 把它压住。作者坦承软件产出无法测量,因此结论依赖经验判断而非数据。适合需要向管理层解释重构价值的工程师。