搏击俱乐部的第一条规则是:您不谈论搏击俱乐部。 搏击俱乐部的第二条规则是:您谈论搏击俱乐部。

—泰勒·德登(Tyler Durden)

我猜对于重构也可以这么说。 首先,需要在这篇文章的上下文中定义我的意思:

重构是代码库上提高质量的任何操作。

进而需要定义什么是质量。 我与之交谈的每个人都同意这一点:这很难做到。 现在让我们为以下暂定解释做好准备:

质量是代码库的一项功能(包括但不限于体系结构,设计等),该功能的缺乏可以避免代码库中进一步有意义的更改。 在极限:

  • 100%的质量意味着更改代码库以开发新功能将需要最短的时间;
  • 0%的质量意味着时间是无限的。

根据此定义,重构包括:

  • 改进班级设计
  • 添加单元测试
  • 删除无用的代码
  • 遵循公认的良好做法
  • 任何与提高可读性有关的内容
  • 等等

现在回到这篇文章的主题。 我们是否应该问客户/经理是否需要重构? 我们是否应该在待办事项列表中放入重构冲刺? 我亲眼目睹了很多情况下被问到的情况。 不出所料,几乎在所有情况下,决定都不执行重构。 花费很多时间来实现某些功能? 无需设计更改。 测试线不够? 未添加测试。 为什么? 因为客户/经理不知道重构和质量意味着什么。

让我们用一个简单的比喻:当我开车去修理厂时,是否可以选择他是否要检查修理是否正确执行? 一点也不。 当我选择专业技工时,支票是我获得的全部包裹的一部分。 如果可以选择的话,有些人可能选择不做支票-少付些钱。 到目前为止,一切都很好。 但是,如果发生麻烦,并且有可能这样做,那么机械师将陷入严重麻烦。 因为他是专业人士,所以工作做得不好。

如果开发人员交付的应用程序没有测试或代码库混乱,他们也会遇到麻烦。 而不是他们的客户或他们的经理-尤其是他们的管理者(如果您发现我的漂移,则取决于他们的经理类型)。 所以我想知道为什么开发人员必须让不了解代码的人做出如此重要的决定。

作为专业开发人员, 您和您对交付的应用程序的质量概不负责。 您的姓名在源代码和提交历史记录中,而不是您的经理的姓名。 停止寻找不重构的借口:不要问,去做。 重构软件开发包周期的一部分。

这并不意味着您必须隐藏重构的事实,而只是要由您决定代码是否足够好或是否需要改进。

翻译自: https://blog.frankel.ch/dont-talk-about-refactoring-club/

你不是在谈论重构俱乐部相关推荐

  1. 《重构你的大脑》smart_你不是在谈论重构俱乐部

    <重构你的大脑>smart 搏击俱乐部的第一条规则是:您不谈论搏击俱乐部. 搏击俱乐部的第二条规则是:您不谈论搏击俱乐部. -泰勒·德登(Tyler Durden) 我猜对于重构也可以这么 ...

  2. muy bien_配置Java EE应用程序或“将Bien付诸实践”

    muy bien 过去,有关应用程序配置的讨论很多. 我不知道谁拉开了辩论的序幕,但是最基础的阅读(着眼于未来的Java EE 7及更高版本)是Antonio Goncalves的帖子[辩论] – J ...

  3. 配置Java EE应用程序或“将Bien付诸实践”

    过去,有关应用程序配置的讨论很多. 我不知道谁拉开了辩论的序幕,但是最基础的阅读(着眼于未来的Java EE 7及更高版本)是Antonio Goncalves的帖子[辩论] – Java EE 7中 ...

  4. Prefactoring——Introduction

    Prefactoring--Introduction Introduction 听到有人说<Prefactoring>是一本好书:"能提升数十年的功力",虽然过于夸张, ...

  5. 《机器学习》阅读心得——十一、特征选择和稀疏学习

    十一.特征选择和稀疏学习 11.1 子集搜索和评价   对一个学习任务来说,给定属性集,其中有些属性可能很关键,另一些属性可能没什么用,我们将属性称为"特征",对当前学习任务有用的 ...

  6. 日拱一卒,功不唐捐 | 每日思考俱乐部 专栏更新通知

    缘起 在 2019 年七月份,我写了一篇文章<我为什么要写反思录>.文中提到了我做记录和思考的初衷,起初写在了自己的私密仓库中,也就是其他人都看不到. 持续了一段时间后,我发现,没有分享的 ...

  7. 如何避免重构带来的危险

    http://blog.jobbole.com/30049/ 重构代码很危险,它会给测试工作增加巨大的负担.除非你的程序需要重构,一定不要轻易重构代码.我这里所说的并不是把一个for循环改成while ...

  8. 整洁代码之道——重构

    写在前面 \\ 现在的软件系统开发难度主要在于其复杂度和规模,客户需求也不再像Winston Royce瀑布模型期望那样在系统编码前完成所有的设计满足用户软件需求.在这个信息爆炸技术日新月异的时代,需 ...

  9. 代码重构(二):类重构规则

    在上篇博客<代码重构(一):函数重构规则(Swift版)>中,详细的介绍了函数的重构规则,其中主要包括:Extract Method, Inline Method, Inline Temp ...

最新文章

  1. 管道 过滤器风格 java_完成基于管道过滤器风格的KWI实现.doc
  2. RSS - 简单方便的follow资讯
  3. AsyncHttpClient 源码分析
  4. [HAOI2008]玩具取名
  5. VCL组件之编辑控件
  6. 自定义事件(如未作说明,本博客文档都是用C#代码)
  7. 启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法!在eclipse.ini中为eclipse指定jdk启动...
  8. 负载均衡原理与实践详解 第五篇 负载均衡时数据包流程详解
  9. 我和Linux,不得不说的故事
  10. 元气骑士没有手柄怎么解锁机器人_元气骑士机器人怎么解锁?机器人获取方式和技能介绍...
  11. Dos下的edit命令
  12. 计算机组成原理10——建立数据通路
  13. Nginx下https模式下,不带www的域名无法自动跳转到带www域名的问题
  14. 获取网页中的视频下载地址(利用抓包)
  15. 7-20 简单计算器
  16. 深入理解 padding
  17. 基于VCP虚拟串口的Rosserial接口教程
  18. 诚挚地希望你加入2018年第三届中国新媒体千人峰会!
  19. 计算机课电子商务那一题,[计算机]电子商务试题.pdf
  20. 潭州课堂25班:Ph201805201 第四课:Linux的命令以及VIM的使用 (课堂笔记)

热门文章

  1. 零食也会卖萌?抓住消费者购买心理
  2. POJ - Oulipo(KMP)
  3. 《软件工程》第九章 面向对象方法学引论 作业
  4. 【逻辑书单】①《一本小小的蓝色逻辑书》50条核心法则梳理(20~41)
  5. lduan Exchange 2013 在线归档及日记日历(十一)
  6. linux(虚拟机) ext4系统磁盘扩容操作(磁盘多个分区,新增分区新增物理卷来扩容逻辑卷)
  7. 二战考研,决心启程 第一天
  8. BitDock桌面美化工具 一直在后台偷偷上传东西,具体上传什么东西不知,一天耗费我几十个G的流量
  9. python gdb调试_使用GDB调试Python程序
  10. 5.3字符数组字符串