何时去重构

  三步原则

  当你第一次开发某个模块时,你只是将它完成了。
  当你第二次开发某个相似的内容时,尽管你对重复感到厌烦,但你还是要去做相同的工作。
  当你第三次开始做这件事时,你就应该开始重构了。

  何时应该新增一个功能

  代码重构可以帮助你更好得理解其它人的代码。如果你要与其它人的“脏代码”打交道,你应该首先将它重构。干净的代码更容易被理解。不光为了你,也为了今后要是使用这块代码的人,你都应该对这块代码进行重构。
  重构使得添加新的功能变得更容易。在干净的代码上做修改会容易很多。

  在你修复一个bug时

  代码中的bugs就像那些现实生活中住在最黑暗,最肮脏的人一样,他们处在代码中最糟糕的部分。理论上,在使代码变干净的过程中这些bugs也会自己浮现出来。
  管理者会欣赏那些主动去进行代码重构的人,因为这省去了今后为代码重构分配专门的工作的步骤。一个开心的老板也会让程序开发人员更加开心!(养成这个良好的习惯,会让你的boss更加欣赏你~,那么你的绩效自然也会更不错

【代码重构(Refectoring)系列教程 基本概念二】何时应该重构?如何去重构?相关推荐

  1. Java NIO系列教程(十二) Java NIO与IO

    原文地址:http://tutorials.jenkov.com/java-nio/nio-vs-io.html 作者:Jakob Jenkov   译者:郭蕾    校对:方腾飞 当学习了Java ...

  2. EEGLAB系列教程5:数据预处理2(ICA去伪迹)

    EEGLAB系列教程5:数据预处理2(ICA去伪迹) 今天介绍EEG数据处理系列教程5,在前面的几期中,已经介绍了数据基本处理过程,可以参见以下链接: EEGLAB系列教程1:安装和启动 EEGLAB ...

  3. 【REACT NATIVE 系列教程之十二】REACT NATIVE(JS/ES)与IOS(OBJECT-C)交互通信

    一用到跨平台的引擎必然要有引擎与各平台原生进行交互通信的需要.那么Himi先讲解React Native与iOS之间的通信交互. 本篇主要分为两部分讲解:(关于其中讲解的OC语法等不介绍,不懂的请自行 ...

  4. 推荐系统系列教程之十二:Facebook是怎么为十亿人互相推荐好友的?

    编者按:之前推出了<推荐系统系列教程>,反响不错,前面已经推出了十一期,今天按约推出第十二期:Facebook是怎么为十亿人互相推荐好友的.希望朋友们多点"在看",多多 ...

  5. 架构思维成长系列教程(十二)- 云平台架构设计

    背景 云平台是个非常宽泛的领域,一般分成:IaaS 基础设施即服务.PaaS 平台即服务.SaaS 软件即服务,本文侧重介绍企业私有云平台架构. 内容 云平台技术架构 云平台技术架构 如图所示,这是一 ...

  6. Linux (x86) Exploit 开发系列教程之十二 释放后使用

    释放后使用 译者:飞龙 原文:Use-After-Free 预备条件: Off-By-One 漏洞(基于栈) 理解 glibc malloc VM 配置:Fedora 20(x86) 什么是释放后使用 ...

  7. 【tflearn系列教程】(二)如何安装tflearn

    本教程参考自tflearn官方文档(英文版)http://tflearn.org,主要是对官方文档的翻译与讲解,并结合本人实战经验而作,如有错误,欢迎指出! 作者 : totorocyx 邮箱 : 8 ...

  8. Angular 5.x 系列教程笔记(二)——架构分析

    前言 Angular 2.x 4.x 5.x 的逐个版本,遵循了模块化的思想,架构以及应用,相对于1.x的版本有了很大的改进,从项目中的使用来看,有很大的提升,今天我们就来看一下Angular 5.x ...

  9. WPF系列教程(十二):控件类——前景背景、字体Background、Foreground、FontFamily、FontSize

    控件都包含背景画刷和前景画刷属性. 部分控件包含字体属性. 鼠标光标的设置. 示例项目源码 为控件设置背景与前景 下面这个窗体 <Window x:Class="Control.Mai ...

最新文章

  1. C#.NET操作数据库通用类(MS SQL Server篇)
  2. HTML5--sessionStorage、localStorage、manifest
  3. 微服务配置中心是干啥的_微服务入门到精通-分布式配置中心(续)
  4. C语言 | 基于STM32的MPU6050模块程序(主程序)
  5. 基于C语言Ncurse库和链表的简单贪吃蛇小游戏
  6. yum 安装mysql 启动_linux(centos6.9)下使用yum安装mysql,及启动MySQL等
  7. centos升级之共享文件夹
  8. Nginx 负载均衡 配置全过程
  9. hadoop yarn 获取日志_「大数据」「Hadoop」-安装及数据目录
  10. 又一北大系AI公司浮出水面,百炼智能宣布获千万元天使投资
  11. appium入门篇(2)--desired capabilities
  12. 米思齐Mixly图形化编程---呼吸灯与可调档位灯
  13. 内网神器-Bettercap
  14. 番茄ToDo帮助文档
  15. python int语句_Python语句print(int('20',16), int('101',2))的输出结果是
  16. Java对Word文档进行操作
  17. 如何从阿里云官方镜像站下载centos并安装
  18. windows自带截图键(shift+ win + s)没有反应,一招教你快速解决!
  19. 二进制、八进制、十进制、十六进制的前缀和后缀
  20. 【读点论文】EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks网络结构要像身材一样匀称且体量和处理能力匹配

热门文章

  1. python基于pywinauto实现PC端自动化
  2. MVC设计模式原理简述
  3. recast5 rcBuildPolyMesh
  4. 【通俗易懂的通信】马尔可夫过程Ⅰ:马尔可夫链、齐次马尔可夫链、CK方程
  5. linux编译lapack,linux下Fortran编译Lapack、clapack库及使用的方法
  6. 换还是不换,这是一个问题
  7. ftpclient java_Java使用FTPClient类读写FTP
  8. python风格变换图片_【人工智能】python图片风格迁移,来欣赏梵高风格的石原里美吧!...
  9. 17086 字典序的全排列
  10. 泯灭Web App可用性的七个开发错误