【CSDN编者按】日常编程工作中,程序员经常面临各种代码bug。但是是否所有项目都适合清理重构?bug修复的手段又是否合理?本文的作者以原型设计、新项目、紧急bug修复、新功能开发、项目维护等各阶段为例,分别给出了相应的解决方法,希望能对你有所帮助。

以下为译文:

你的项目截止时间就要到了,你有一个紧急的 bug 需要修复,你的项目需要快速迭代输出产品。

虽然你很忙,但是你也必须考虑你的未来:你现在引入的每一个 bug,都会给以后修复带来巨大的时间成本。因此我们不应该使用过时的API、过时的版本依赖、或者一些老旧的做事方法。

所以,我们什么时候来清理我们的代码呢?

  • 现在就做?

  • 以后需求少了再做?

  • 还是永远不做?

本文,我将告诉你该在什么时间去用以下三种方法来清理你的代码:

  • 更新项目依赖和废弃的API;

  • 重构不合适的抽象设计;

  • 编码规范和日常编程习惯等杂项清理。

解决方法

原型设计

在工程构建之前,你会做一些技术调研,做一些原型设计(或者极限编程中的Spike解决方案),但你不会长期保留使用这些代码,你仅仅是使用这些代码来验证是否能解决问题。考虑到你有可能会废弃掉这些代码,更新和规范没有什么需要值得特别注意的事项。如果你也想尝试理解学习那些已经存在的API,你也不需要对代码进行重构。

但是,如果你是想通过原型设计找到更好的抽象方式,你就必须进行大量的重构了。

最佳实践:

  • 更新:不需要处理;

  • 重构:如果你需要找到更好的架构方式,你就需要重构,反之,你就不用在意重构的问题;

  • 杂项清理:不需要处理。

新项目

如果你正在着手搭建一个全新的项目,你的任何一个决定都会给以后带来很大的维护成本。

当然,这也是一个机会,让你可以使用最新的框架,最佳的解决方案,最好的编程规范和最好的架构。虽然你不一定能做到完美,但是你可以使它尽可能的接近完美。

最佳实践:

  • 更新:从现在开始;

  • 重构:从现在开始;

  • 杂项清理:从现在开始。

紧急的bug修复

在这个时候,你需要快速为用户修改 bug。如果你看到了问题需要解决,但是这个问题和当前需要修复的bug无关,我建议你暂时不要动它,等 bug 修复结束了再来处理它。

有些时候,bugfix 有两层含义: 一次是快速解决问题,另一次是你需要让代码更整洁。

最佳实践:

  • 更新:稍后;

  • 重构:稍后;

  • 杂项清理:稍后。

新功能开发中或者不紧急的bug修复

当你有一个正常迭代开发的一个项目,不管你是在做新功能开发,还是bug修复,这个时间是你做代码清理的最佳时机。

在这个时候,你并不需要修复所有你接触到的代码,你需要做的是整理你处理中的代码,并且使你的代码库更加的整洁。详情参考https://ronjeffries.com/xprog/articles/refactoring-not-on-the-backlog/。

最佳实践:

  • 更新:立即更新你用到的代码;

  • 重构:立即重构你用到的代码;

  • 杂项清理: 在你用到的代码中,立即使用新的代码规范等。

项目维护阶段

当你的项目已经开发完成,没有什么新的开发任务的时候,经常几个月才有一些给菜单多加一个选项等这种小的需求修改。

现阶段,你的目标是做少量的修改,让项目稳定运行。重构和杂项清理在现阶段是不必要的,但是你项目需要你及时更新一些框架库的依赖 —— 某些框架库不在提供服务,或者有安全更新。经常更新依赖显然要比5年才更新一次容易得多。

所以不管你是不是因为有bug要修复,你都应该及时的去更新你的依赖项 —— 理想情况下,长期发布更新,以减少对API使用的更新需求。

最佳实践:

  • 更新:现在更新,并且长期发布版本支持;

  • 重构:不需要;

  • 杂项清理: 不需要。

现在与未来的平衡

软件开发是一个持续的过程,不是做完就没事了。现在着手去清理代码,将会为你以后节省时间,尽管你现在赶项目的截止时间,现在着手去做也比放在以后多花几周时间去做要好。

本文只是做一个开篇,与任何其它方法一样,也都有不适用的时候,所以,你需要根据你项目中的实际情况和目标来做一些调整。

原文: https://codewithoutrules.com/2018/11/02/when-clean-up-your-code/

译者:罗昭成

责编:郭芮


推荐阅读:

  • JavaScript 凭什么力压 Java、Python 横扫编程语言榜单?

  • 这才是 Python 的 “72 变”玩法!

  • 下载量超 20 亿的 8 款 Android 应用涉广告欺诈,谁在“猎杀”猎豹移动?

  • 为什么好的程序员会写出糟糕的单元测试?

  • 只了解View的事件分发是不够的,来看下输入系统对事件的处理

  • 31位圈内大佬解读DApp困惑:“爆款”也难优秀!

  • 雷军深情告白:在我心里,武汉大学是全球最好的大学

@程序员,代码清理有必要吗?相关推荐

  1. 《程序员代码面试指南第二版》Python实现(个人读书笔记)

    说明 最近在读左神的书---<程序员代码面试指南-IT名企算法与数据结构题目最优解(第二版)>以及看了一些左神的基础.进阶.高频等视频课程,为了记录自己的学习成果,并且方便以后查看,将自己 ...

  2. 程序员代码面试指南第二版 4.猫狗队列

    welcome to my blog 程序员代码面试指南第二版 4.猫狗队列 题目描述 题目描述 实现一种猫狗队列的结构,要求如下: 1. 用户可以调用 add 方法将 cat 或者 dog 放入队列 ...

  3. 为什么有些30岁的程序员代码敲着敲着就创业了

    为什么有些程序员代码敲着敲者就创业了? 下面分享一位30岁+的Python开发者,从程序员到创业者再到自由职业者~,他的一些经历. 时间线:从09年底来深圳,14年10月跟随别人一起创业担任产品技术合 ...

  4. 程序员代码编写_我如何不编写协作写作应用程序的代码

    程序员代码编写 葵仓,句,但更有趣 (Twaikura, haikus but funnier) As easy as ABC: some stranger on the Internet start ...

  5. 算法大神左程云耗尽5年心血分享程序员代码面试指南第2版文档

    前言 学习是一种基础性的能力.然而,"吾生也有涯,而知也无涯.",如果学习不注意方法,则会"以有涯随无涯,殆矣". 学习就像吃饭睡觉一样,是人的一种本能,人人都 ...

  6. 程序员代码记事本:Boostnote for Mac

    boostnote mac破解版是一款专门为程序员朋友量身打造的笔记软件,除了日常笔记记录,最大的用处就是帮你记录无数的代码资源,你甚至可以以一个单个笔记为单位,在里面创建多个 Tab,以组成一个独立 ...

  7. Delphi程序员代码编写标准指南

    Delphi 6 程 序 员 代 码 编 写 标 准 指 南 一.序言 二.通用源代码格式规则 2.1 缩格 2.2 页边空格 2.3 Begin-End 配对 2.4 代码文件中通用符号含义 三.O ...

  8. 程序员代码对比工具,就用这7个

    前言 在程序开发的过程中,程序员会经常对源代码以及库文件进行代码对比,在这篇文章里我们向大家介绍7款程序员常用的代码比较工具. 一.WinMerge WinMerge是一款运行于Windows系统下的 ...

  9. 从程序员代码“呼救”大破传销组织_聊掌握一门编程语言的重要性!

    日常生活中的程序员总是给人一种傻傻呆呆不善言语的感觉,而近日南京某软件公司的一名程序员就特别灵活机智,他用实际行动告诉大家,掌握编程技术不仅可以吃饭,关键时刻还能救命. 今天微博圈里被这样一个段子刷屏 ...

  10. 卖了43.2万美元的AI画作,其实是借鉴程序员代码的“山寨货”?

    作者 | James Vincent 译者 | 王天宇 编辑 | 费棋 出品 | AI科技大本营 10 月 25 日,佳士得进行了一次不同寻常的拍卖,拍卖品是一幅镶着金色画框的画作,名为<艾德蒙 ...

最新文章

  1. python note 15 正则表达式
  2. linux audio A2B
  3. [推荐]一个 1kb 的image placeholder的js库
  4. C# web 后台页面间的跳转
  5. Python实验室-实现阿拉伯数字的大小写转换-解法1
  6. 计算机光驱启动设置,光驱启动怎么设置
  7. matlab粒子群运动模拟伪代码,基本粒子群优化算法(PSO)的matlab实现
  8. Kubernetes K8s 平台中pod资源配置详解
  9. Unity + LeapMotion 识别食指伸出以及食指与 UGUI的 交互
  10. java this final_JAVA中的this,final,surper的用法
  11. 最大流 edmonds carp
  12. python文件处理基础_第六篇:python基础之文件处理
  13. 成为IT精英,我奋斗7年(震撼!正能量 转)
  14. 作业帮发布新品学习机,首创“AI老师一对一”模式
  15. EBC动作片 记录EBC 的 景 和 人
  16. 数据库主键、外键和唯一键的区别
  17. 基于信息融合的供应链合作伙伴选择刍议 (zt)
  18. Hilbert 第十问题漫谈
  19. 通达信公式转python为什么很难_[转]N年Python老司机,血泪总结新手常见10大错误...
  20. android toast居中显示_android Toast 弹出在屏幕中间位置以及自定义Toast

热门文章

  1. [译]R语言——Shiny框架之入门(二):如何构建一个Shiny应用
  2. rust笔记3 referenceborrow
  3. 中国卷绕装置市场趋势报告、技术动态创新及市场预测
  4. 主动土工围栏行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  5. 超材料技术行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  6. 学计算机可以玩手机吗,但就一般工作学习使用而言,是否可以把手机CPU作为电脑CPU使用?...
  7. graphic方法重写 unity_Unity面试题精选(2)
  8. 中国 AI 的“黄埔军校”?MSRA 被曝停招“国防七子”及北邮学生
  9. “Node.js 包已不值得信任”
  10. Go在招聘中最吃香,安全工程师薪资涨幅最高 | 软件工程师年度报告出炉