重构与反思-<重构代码的7个阶段>有感
https://coolshell.cn/articles/5201.html/comment-page-2#comment-1932554
过去半年基本上完整经历了这个文章的各个阶段,看完文章结合自己的经历,发现的确有些值得反思,但是哪怕过程太痛苦,但如果是一个自己要长期维护的模块,”至少亲生的bug更好看些吧”,如果一开始的需求就复杂,没有条理,代码第一版设计者没有充分的和需求方整理需求,盲目编码形成第一版难以维护的代码,后面的人几乎不可能根据代码还原出需求的原貌,甚至是需求方自己也很难确定自己最初的想法是什么样的,我们在重构代码的起点往往是一些难缠的bug或者新需求,因为要解决这些bug,或者实现新需求,发现原来的设计把所有路都堵死了,后来的人如果是追求完美的程序员,就会陷入这种境地,而和第一个程序员一样的人,会用更加不优雅的方式把新的代码黏在原来的代码上,直到遇到一个追求完美的程序员,或者给需求方说,这个我们做不到.原因不是技术瓶颈,而是我们做的不好,或者前人做的不好.
所以哪怕直到有这几个阶段,如果不试一下,也许永远被噩梦缠绕,如果做一下,后面最差也就是亲生了一个跛脚的框架.这过程中,对需求的把握,对未来的预期远远比一步不走要好的多.
这里的几个阶段,第五阶段是转折点,这里看你是不是一个彻底的完美主义者,如果是,时间不足的情况下,你可以选择短时间在自己底线内做些忍让,但是哪怕到了最后一个阶段,那个站起来说重构的人,我希望是我自己,我不希望”做一个重构别人代码的人”. 所以重构虽然痛苦,但是有些重构是必须进行的事情.特别是你预期到后面有大量的需求和变更的模块
当然值得反思的是,绝不做不分轻重的屠宰者,要”秉公办事”,轻急缓重要分得清,任何过度的事情都是失衡的状态,过度设计和过度重构,过度敏捷都是适得其反.
个人对重构的优先级:
1. 不稳定的地方,频繁出bug
2. 需求集中,变更频繁的地方
3. 核心模块内过时的代码
4. 核心模块内重复的代码
5. 核心模块内不清楚的代码
6. 一些无关痛痒的风格问题
办法总比问题多
重构与反思-<重构代码的7个阶段>有感的更多相关文章
- 【转】PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
原文地址: PHP 杂谈<重构-改善既有代码的设计>之一 重新组织你的函数 思维导图 点击下图,可以看大图. 介绍 我把我比较喜欢的和比较关注的地方写下来和大家分享.上次我写 ...
- 《重构--改善既有代码的设计》总结or读后感:重构是程序员的本能
此文写得有点晚,记得去年7月读完的这本书,只是那时没有写文章的意识,也无所谓总结了,现在稍微聊一下吧. 想起写这篇感想,还是前几天看了这么一篇文章 研究发现重构软件并不会改善代码质量 先从一个大家都有 ...
- 《重构——改善既有代码的设计》【PDF】下载
<重构--改善既有代码的设计>[PDF]下载链接: https://u253469.ctfile.com/fs/253469-231196358 编辑推荐 重构,一言以蔽之,就是在不改变外 ...
- 【重构.改善既有代码的设计】14、总结&读后感
14.总结 首先,这是一本太老的书,很多观点已经被固化或者过时了.但核心观点没有问题,虽然大多数观点已经被认为是理所当然的事情了. 重构的定义 重构分几种: 1.狭义的代码重构 就是本书讲的, ...
- 【重构】AndroidStudio中代码重构菜单Refactor功能详解
代码重构几乎是每个程序员在软件开发中必须要不断去做的事情,以此来不断提高代码的质量.Android Stido(以下简称AS)以其强大的功能,成为当下Android开发工程师最受欢迎的开发工具,也是A ...
- 【Java重构系列】重构31式之封装集合
2009年,Sean Chambers在其博客中发表了31 Days of Refactoring: Useful refactoring techniques you have to know系列文 ...
- 重构前VS重构后效果对比
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42554641 学习重构已经一个多月了,虽然不能让代码特别的 ...
- 对数据访问层的重构(及重构中Perl的应用)
以前上学的时候,听到“一个学生在毕业后刚刚开始编程的头几年中,写出的代码多半是垃圾”这样的说法,均不屑一顾.现在工作一年多了,越发感觉自己代码中疏漏处甚多,故近来常做亡羊补牢的重构之举.拿自己4个月前 ...
- 『重构--改善既有代码的设计』读书笔记---Duplicate Observed Data
当MVC出现的时候,极大的推动了Model与View分离的潮流.然而对于一些已存在的老系统或者没有维护好的系统,你都会看到当前存在大把的巨大类----将Model,View,Controller都写在 ...
随机推荐
- 002-创建型-01-工厂方法模式(Factory Method)
一.概述 定义一个创建对象的接口,但让实现这个接口的类来决定实例化那个类,工厂方法让类的实例化推迟到子类中进行. 工厂方法模式(FACTORY METHOD)同样属于一种常用的对象创建型设计模式,又称 ...
- Qt编写控件属性设计器3-拉伸控件
一.前言 插件控件加载了,拖曳控件也实现了,接下来就是一个最难点了,跟QtDesigner或者其他开发环境一样,能够任意自由的拉伸控件大小,移动位置,为了这个功能,还特别编写了一个控件来实现这个功能, ...
- win7下docker环境安装
最近公司涉及到对docker容器引擎的使用,所以就在网上各种搜索,由于是win7系统,所以在使用上更是麻烦,遇到各种错误就是无法成功启动docker,经过两天的各种尝试下,终于安装成功,在此记录一下使 ...
- HTML(HTML+CSS基础)
HTML: 认识html文件基本结构 这一节中我们来学习html文件的结构:一个HTML文件是有自己固定的结构的. <html> <head>...</head> ...
- 添加tomcat8为服务
跟上一篇添加zookeeper为服务基本类似 脚本如下: #!/bin/bash CATALANA_HOME=/usr/local/tomcat8 export JAVA_HOME=/usr/loca ...
- 【c# 学习笔记】析构函数
析构函数 用于在类销毁之前释放类实例所使用的托管和非托管资源.对应c#应用程序所创建的大多数对象,可以依靠.net Framework的垃圾回收站(GC) 来隐式地执行内存管理任务.但若创建封装了非托 ...
- 网页引用jQuery在Electron运行出现"$ is not defined"
Electron因为开启了node集成才能实现和网页的通信,引入jQuery较高版本它的模块化定义(基于CommonJS)和Electron的内部机制冲突了.目前提供以下两个方案: 1.使用jQuer ...
- 居里先生的猜想 | 皮埃尔·居里诞辰160周年
皮埃尔·居里(Pierre Curie)先生坐在桌前,手里把玩着一块小磁铁.忽然,一道闪念跃入脑海,他为自己这个大胆的想法激动不已,忍不住伏案疾笔书写起来.不远处,一位安静的青年女子温情脉脉地注视着他 ...
- 基于MSP430G2系列实现的步进电机控制
基于MSP430G2系列实现的步进电机控制 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 系列博客说明:此系列博客属于作者在大三大四阶段所储备的关于电子电路 ...
- vue警告: component lists rendered with v-for should have explicit keys
warning信息:component lists rendered with v-for should have explicit keys. See https://vuejs.org/guide ...