写点什么

抛砖引玉——重构是必要的浪费

  • 2007-12-18
  • 本文字数:611 字

    阅读完需:约 2 分钟

重构是敏捷开发人员工具箱中的一项核心实践。按照重构的定义——修改内部结构(设计)而不影响外部行为——来讲,它并不能为客户创造可衡量的价值。在精益世界中,任何不能为客户创造价值的做法都是浪费,客户所能够感知到的只是行为/ 功能,而非结构。

但是精益定义了两种类型的浪费:“纯粹的浪费”和“必要的浪费”。“纯粹的浪费”指的是那种既不能给开发团队也不能给客户带来好处的做法。“必要的浪费”是指某些行为,即便它不能给客户创造价值,但也是在我们所知的范围内完成一项工作的最佳方式。重构就是典型的后者之一。

那又为什么要把一个有价值的做法称作“必要的浪费”呢?呃,这里的着眼点在于,它对于客户而言是没有价值的。所以我们应该把在这方面投入的 精力尽量减到最少,而且需要不断寻找更好的替代方案。可如果我们没有把它识别为一种浪费的话,我们就会把它理解为正确完成工作的唯一方式,不再寻找解决途 径——想一下“预先做大量的设计(Big Design Up Front)”吧。

如果看完了上面的话以后,你仍然赞同我的观点,那么接 下来就有一个问题等着你了:“那又怎么样?理解也好,不理解也罢,会有多大影响吗?”当开发人员把重构看作是必要的浪费时,他可能就会尽量减少重构,只重 构那些不再符合客户需求的代码。也即,如果你在编码的过程中发现了类中的某个方法有“坏味道”,但是它和你正在实现的需求并无联系,那就把它放到一边去。查看英文原文 Opinion: Refactoring is a Necessary Waste

2007-12-18 07:361053
用户头像

发布了 197 篇内容, 共 54.4 次阅读, 收获喜欢 20 次。

关注

评论

发布
暂无评论
发现更多内容

感恩父母

若兮

520 单身福利

Python自动化神器-Fabric

小圆子

520 单身福利

ORACLE数据库应用开发三十忌

老猿Python

数据库 oracle 程序开发 数据库应用开发

爱情从来都不是简单的事

阿泽🧸

520单身福利

网络攻防学习笔记 Day22

穿过生命散发芬芳

5月日更 网络攻防

C语言不完全类型是什么?有什么用途?

不脱发的程序猿

C语言 C语言不完全类型

Vue-2-常用指令

Python研究所

520 单身福利

InnoDB 锁类型及其分析

luojiahu

innodb 死锁 间隙锁 意向锁

模块4作业4

杨彬

#架构实战营

双峰哲学 - 一种深度工作的哲学

石云升

学习 职场经验 5月日更

Python数据科学基础-Pandas介绍

五分钟学大数据

数据科学 5月日更

☕【JVM技术之旅】彻底弄清楚Minor GC和Major GC及Full GC

洛神灬殇

JVM 垃圾回收 GC 5月日更

缅怀袁老

topsion

随笔杂谈

加密货币终将替代黄金?总价值已接近私人持有黄金价值

CECBC

【音视频】基于声网实时音视频能力的音视频质量体系建设

轻口味

音视频 WebRTC 声网 质量指标

模块4-作业

yu

今年过一次不一样的520!

liuzhen007

520单身福利 520 单身福利

【渗透测试】hackthebox靶场之ScriptKiddie

Thrash

架构学习笔记:读写分离

风翱

架构 5月日更

模块四:课后作业

菲尼克斯

架构实战营

🚄【Redis 干货领域】帮你完全搞定Cluster原理(架构篇)

洛神灬殇

redis redis集群 5月日更 redis架构

Flink的程序结构

大数据技术指南

flink 5月日更

密码学基础

escray

学习 极客时间 安全 5月日更 安全攻防技能30讲

打击挖矿和交易行为!

CECBC

Python - 日志处理(logging模块)

若尘

日志 log Python编程 5月日更

自我复盘

lenka

5月日更

如何提升Hadoop访问对象存储US3的效率?我们做了这些技术实践

UCloud技术

大数据 hadoop

加油!未来的每一天

Sherry

520单身福利 520 单身福利

ArrayList与LinkedList性能大PK

Damon

java基础 5月日更

设计千万级学生管理系统的考试试卷存储方案

Vincent

架构训练营

编辑器的江湖

ES_her0

5月日更

抛砖引玉——重构是必要的浪费_研发效能_Amr Elssamadisy_InfoQ精选文章