首先, 何谓重构(Refactoring)?

它的名词定义是:对软件内部结构的一种调整 目的是在不改变软件可观察行为的前提下 提高其可靠性 降低其修改成本.

所以重构在我们眼里  它应该是这样的

关于技术债务(Technical Debt):

开发团队在设计或架构选型时, 从短期效应的角度选择了一个易于实现的方案.  但从长远来看,这种方案会带来更消极的影响,亦即开发团队所欠的债务。

简单的说就是为了快速地解决问题, 而采取的不规范的方案, 从而糟了报应,  哈哈.

技术债务可能会导致我们不能预期交付项目

举个例子

对于房贷, 大家肯定每个月都记着去还.

但是, 对于技术债务,大家似乎都不那么关心.

比如某小白同学在一个class中欠下了技术债务,例如不责任的写了一个15个参数300行的大方法, 之后的几个星期他对这个类进行扩展、修改,老板催的急, 错上加错, 最终: 一个20个参数, 600行的超级变态method产生了。

然而,这个东西不一定谁借谁还,可能是一个人的事情,也可能是一个团队的事情,

我们再来假设一下: 这个小白同学离职了.....

那么,这笔债务就压在了工作接替者的身上,古人语:父债子偿,那么这个应该就叫:  爱TM谁谁吧.........

用不了多久,整个开发团队就会发现我们已经无力偿还这份技术债务啦,只能重构啦, 而且这个重构还是属于最难, 代价最大的一种重构方式, 计划性重构(Planed Refactoring),  也就是不得不将重构计划加入到产品的backlog里面.

重构的成本随着项目进展随之增加

刚才讲了什么是计划性重构(Planed Refactoring), 我们接着来说下一种: 理解性重构(Comprehension Refactoring)

直接上图

直观的变量名就是最好的注释

这段代码的注释是多余的, 导致了我们理解不够直观, 所以我们应该删掉注释, 用变量名来直接和变量意义关联, 简单直接 !

上面的都了解了吧

接着来!

预先重构(preparatory refactoring)

与重构花费的时间相比, 技术债务才是时间的真凶! 

大家还记得这张图吧, 最后走曲线的小球先到达了重点, 所以当我们着手新的feature时, 我们不妨进下心来, 审视下代码, 是否在coding之前, 先优化一下, 重构一下现有的代码, 然后再心情舒畅的, 高效率的实现新功能呢?

增加feature之前多想想

最后一个

计划性重构(Planed Refactoring) 它爸爸 

长期重构(Long Term Refactoring)

技术债务已经积累到极其严重, 重构需要分配一个开发团队, 占用整个一次或多次敏捷迭代才能完成, 这种情况和计划性重构(Planed Refactoring) 都要尽量避免

长期重构(Long Term Refactoring)不多说 你懂得!

码字不易, 谢谢大家!

从技术债务的角度, 谈谈重构相关推荐

  1. 谈谈技术债务的定义,影响以及管理

    一.前言 大概在去年这个时候就想着认真讨论一下技术债务的问题,源自于一次工作安排. 这一个运行了三年多的系统,随着业务的发展,该系统接入了越来越多的业务方和业务,陆陆续续变得更为重要,从而业务方也对系 ...

  2. 重构:改善既有代码的设计_技术债务:通过重构来拯救传统代码

    重构:改善既有代码的设计 How can you get a legacy codebase under control and bring it to a new level of maturity ...

  3. 技术债务_如何处理技术债务并节省理智

    技术债务 by Gabriel Colombo 加布里埃尔·科伦坡(Gabriel Colombo) 如何处理技术债务并节省理智 (How to deal with technical debt an ...

  4. 技术债务管理_管理技术债务

    技术债务管理 DevOps Essentials DevOps基础 介绍 (Introduction) Technical debt is one of the most insidious and ...

  5. 技术债务研究综述X4

    目录 Paper1: Managing Technical Debt 与金融债务的比较 管理你的债务 不同角度的债务成本 总结 Paper2: Technical Debt: From Metapho ...

  6. 技术债务就像俄罗斯方块,你永远都赢不了!

    作者 | Eric Higgins 译者 | 无明 和大多数玩过俄罗斯方块的人一样,我也很喜欢这个游戏.我仍然记得第一次在任天堂游戏机上玩这个游戏时的情景.游戏的背景音乐仍然时常萦绕在我的耳边.俄罗斯 ...

  7. 当你的技术债务到期时,LinkedIn的故事 | IDCF

    原文:https://www.linkedin.com/pulse/when-your-tech-debt-comes-due-kevin-scott/ 译者:冬哥 那是 2011 年 10 月,就在 ...

  8. 敏捷 冲刺_在这个敏捷的假期季节给予技术债务冲刺的礼物

    敏捷 冲刺 Holidays can be a challenging time in software development. How can you make the most of your ...

  9. [Android]使用MVP解决技术债务(翻译)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5892671.html 使用MVP解决技术债务 原文:https ...

  10. 【项目管理】技术债务

    很多人误以为技术债务指的是不良代码,其实根据这篇博客,应该是目标理解错误而导致生成错位代码,即团队代码的组织方式与商业目标的实现方法之间存在不一致性. 作者从来不赞成编写代码很差,但是他表示赞成编写代 ...

最新文章

  1. CVPR 2019审稿满分论文:中国博士提出融合CV与NLP的视觉语言导航新方法
  2. 关于我的51CTO博客
  3. Robolectric
  4. 【PAT乙级】1060 爱丁顿数 (25 分)
  5. 获取Http协议的请求行,请求头
  6. H5开发中的问题总结
  7. detachedcriteria查询去重_2020考研初试成绩查询:安徽研究生考试成绩查询入口
  8. css怎样设置li分栏,css怎么对文字分栏
  9. android tv nugat,GitHub - GongXunYoung/Android-tv-widget: Android tv,盒子,投影仪 控件
  10. 从Java中的串口读取文件
  11. rstp 转hls_海康大华RTSP转HLS直播
  12. asp.net图书馆管理系统
  13. 传奇修改map地图教程_传奇gm如何增加或者修改服务器中的地图
  14. 递归算法教学设计java,递归算法数字游戏教学软件的设计|java递归算法经典实例...
  15. com.jcraft.jsch.JSchException: Algorithm negotiation fail 异常解决
  16. Linux初识及常用命令
  17. vim-plug插件安装
  18. “一流的科研成果一定是自己研制的仪器做出来的” – 中国科大LB膜实验室的日子...
  19. 基于Matlab的空中交通管制仿真(附源码)
  20. CQUPT WEEKLY TRAINING (3)解题报告

热门文章

  1. 00 SQL课程简介
  2. 北京政协委员共商提高城市精治、共治、法治水平
  3. 怎么查看服务器的详细信息,服务器查看详细信息
  4. Happiness is a Choise
  5. Springboot 整合Rabbit MQ
  6. MySQL的锁到底有多少内容?和腾讯大佬的技术面谈,我真菜
  7. 工商银行转账出现java_工行企业网银转账提示信息代码4506是什么意思?
  8. BadDet: Backdoor Attacks on Object Detection——面向目标检测的后门攻击
  9. Julia学习笔记:使用GLM包进行一元回归分析及模型拟合度检验
  10. 凉茶配方案终审 加多宝赔偿近2亿元