为什么80%的码农都做不了架构师?>>>   

在软件开发工作中,烂代码是经常会遇到的。这些代码是绕不开的,不可回避的,所以我们必须要处理它们。最近读了一篇关于清理烂代码的文章,觉得还不错。分享的同时自己总结一下其中的内容。

原文链接: Niklas Frykholm 翻译: 伯乐在线 - 唐小娟<br/> 译文链接: http://blog.jobbole.com/28672/

值得清理吗

<br/>

  1. **只需小的修改,还是需要多次的修改才能完成工作:**如果是后者,还是值得考虑去清理烂代码的
  2. **是否是从开源项目 fork 出来的代码:**如果是,你需要考虑一下。如果修改了,那更新代码便是一个问题。(注:这种情况比较少见,开源项目的代码通常不会很烂。如果你发现某个开源项目的代码的确成问题,但是你还不得不使用,那就加入这个项目帮助它改进吧)
  3. **考虑清理烂代码的工作量:**文中给出的参考值是每人每天能清理100至1000行的烂代码。我觉得前半个区间,即100-500行更为常见,毕竟你需要做大量的测试保障你的清理工作的正确性。通过每人每天的清理烂代码的能力,可以估算出整个工作量,以此评定清理工作是否可行。
  4. **这段烂代码是否是核心功能:**如果不是,那清理工作便不重要了。
  5. **烂的程度:**我觉得如果绝大多数开发人员都觉得这段代码非常烂,重写便是更好的选择了。

<br/>

如何清理

<br/>

  1. **建立测试用例:**通常直接的理解是写单元测试。当然这是一个不错的选择,但是对于烂代码来说,你通常会发现由于烂代码通常的,诸如方法过长、参数过多、类依赖混乱、类之间耦合度过高等问题,单元测试对于烂代码是一个可望而不可即的事情。这时你应该转向去完善自动化的集成测试,以保证清理工作的正确性
  2. **代码版本控制系统:**做烂代码清理时,Git 比 SVN 更给力,当然 Git 上手要难一些。
  3. **每次只做一次小改动:**小步快跑是代码重构不变的原则之一
  4. **不要同时清理代码和修正代码:**不要同时去做清理无用代码和修改已有代码的工作。其实这个原则是上一个的引申。如果同时做了清理代码和修正代码,那你肯定是在一个周期内做了大量的工作。
  5. **删除无用代码和注释:**如果你不是写像 JDK 或者 Spring 这样的开源框架,注释通常不需要很多。如果有很多注释,尝试重构代码以提高代码的可读性。

就这么多了。。。

转载于:https://my.oschina.net/lifany/blog/142342

总结帖:“深度解析:清理烂代码”相关推荐

  1. [转帖]深度解析区块链POW和POS的区别

    深度解析区块链POW和POS的区别 Proof of Work 还有Proof of Stake之前理解程了 state ... 股权的意思 还有 delegated proof of Stake 能 ...

  2. Spring MVC学习总结(16)——SpringMVC运行流程深度解析(含代码)

    spring mvc简介与运行原理 Spring的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet来设计的,这个Servlet会把请求分发给各个处理器,并支持可配置的处理器 ...

  3. Spring源码深度解析,Spring源码以及Bean的生命周期(五)(附代码示例:)

    五)Bean 的生命周期,创建---初始化---销毁的过程 目录 五)Bean 的生命周期,创建---初始化---销毁的过程 一 ,  指定初始化方法 init-method 方法​ 二 ,指定销毁 ...

  4. 利用图文和代码深度解析操作系统OS的内存管理实现原理机制和算法

    利用图文和代码深度解析操作系统OS的内存管理实现原理机制和算法. 内存作为计算机系统的组成部分,跟开发人员的日常开发活动有着密切的联系,我们平时遇到的Segment Fault.OutOfMemory ...

  5. 深度解析黑白棋AI代码原理(蒙特卡洛搜索树MCTS+Roxanne策略)

    深度解析黑白棋AI代码原理(蒙特卡洛搜索树MCTS+Roxanne策略) 文章目录 深度解析黑白棋AI代码原理(蒙特卡洛搜索树MCTS+Roxanne策略) 黑白棋规则 传统黑白棋策略 蒙特卡洛搜索树 ...

  6. python中superclass是什么_深度解析并实现python中的super(转载,好文)

    大神半个月的成绩,让我看的叹为观止,建议看原帖地址,会让你对Python的描述符有更强的认识. 原文链接:https://blog.csdn.net/zhangjg_blog/article/deta ...

  7. php怎么魔方加密,深度解析php混淆加密解密的手段,希望对大家解读魔方加密有所帮助 [tihuan]...

    深度解析php混淆加密解密的手段,希望对大家解读魔方加密有所帮助 [tihuan] 2018-12-31 php做为一门当下非常流行的web语言,常常看到有人求解密php文件,想当年的asp也是一样. ...

  8. Goroutine 并发调度模型深度解析之手撸一个高性能 goroutine 池

    文章目录 1 前言 2 Goroutine & Scheduler 2.1 线程那些事儿 2.1.1 用户级线程模型 2.1.2 内核级线程模型 2.1.3 两级线程模型 2.2 G-P-M ...

  9. 多迪php,多迪PHP项目经理深度解析:PHP应用性能优化指南!

    原标题:多迪PHP项目经理深度解析:PHP应用性能优化指南! 程序员都喜欢最新的PHP 7,因为它使PHP成为执行最快的脚本语言之一.但是保持最佳性能不仅需要快速执行代码,更需要我们知道影响性能的问题 ...

  10. Spring源码深度解析(郝佳)-学习-源码解析-创建AOP静态代理实现(八)

    继上一篇博客,我们继续来分析下面示例的 Spring 静态代理源码实现. 静态 AOP使用示例 加载时织入(Load -Time WEaving,LTW) 指的是在虚拟机载入字节码时动态织入 Aspe ...

最新文章

  1. ping -c3 baidu.com  ping过去是这样,代表网络畅通
  2. 【机器学习基础】半监督算法概览(Python)
  3. java filechannel 空_Java NIO FileChanel
  4. 小程序 按需_小程序想要留住用户需哪些举措?
  5. 平板电脑离寿终正寝还有多远?
  6. Docker上部署WebERP系统,开源ERP框架
  7. PHP文件操作 读取与写入
  8. python列表语法_python学习之列表语法
  9. usbserialch340驱动安装失败_CH340驱动|CH340系列USB转串口驱动下载win7/win10 64位 - 欧普软件下载...
  10. Beego 使用redigo连接redis
  11. 冒险岛里不合逻辑的地方
  12. 面对失败计算机科学家,面对巨大挫折,仍毫不畏惧、坚韧不拔的名人事例
  13. 高校手机签到系统——zxing.net生成二维码(补充)
  14. 启动maven nexus3时遇到的诡异异常
  15. 张博涵清华大学_看了清华大学“神仙打架”,网友:我在这个世界上就是凑数的...
  16. 【现代通信原理笔记】8 蜂窝系统
  17. brctl 使用说明
  18. 器件选型-墨水屏(电子纸)介绍
  19. 理财就是理生活读后感
  20. 全选主元matlab,全选主元高斯-约当法实矩阵求逆及传统方法求逆

热门文章

  1. system()函数
  2. kubernetes滚动更新
  3. cmd 登录oracle
  4. 数据结构学习---有序链表的合并
  5. java中计算两日期相减方法
  6. 程序之间耦合以及解耦问题探究
  7. rollup打包js的注意点-haorooms博客分享
  8. 1 0 .2 用于监视的工具和技术
  9. Golang 中使用多维 map
  10. espcms简约版的表单,提示页,搜索列表页