此文写得有点晚,记得去年7月读完的这本书,只是那时没有写文章的意识,也无所谓总结了,现在稍微聊一下吧。

  想起写这篇感想,还是前几天看了这么一篇文章

  研究发现重构软件并不会改善代码质量


  先从一个大家都有的经历说起吧。

  刚开始学编程时,比如,要统计数字出现的次数,我们会这么定义变量

  int i=0;//统计次数

  老师看了说,代码要有可读性,见名知意;

  于是,我们把它改成

  int count=0;

  后来才知道,原来这么一手这就是重构的第一式,重命名

  (eclipse快捷键 alt+shift+R,最近重装系统后,看到oracle官网推荐netbeans,我也换编译器了,还没看快捷键列表,好像是不同的。)

  而现在,要我定义一个计数变量,我不会写成int i;

  更不会先写成int i;然后重命名为count,而是直接int count=0;

  换句话说,重构这个流程的结果已经在我脑海里有了,心里有了重构,代码无需重构这一步了。

  而上文的那个研究的样本,我更愿意认为,发现对样本重构无效,倒不如说,样本编码时的代码已经就是重构的结果了,真是一群蠢萌的程序员啊,他们大概忘了,重构成为了自己的本能吧,没发现已经重构好的代码,又怎么那么容易能再重构的更好呢。

  所以说,重构是程序员的被动技能,经过无数代码的锻炼后,敲出来的自然就是高质量的代码了,绝不是为重构而重构。


  技能书《重构--改善既有代码的设计》

  技能名:重构

  被动效果:1提升代码可读性100%

      2 提升代码质量100%

  没有读过的童鞋快去看一看吧,不需要时时刻刻谈重构,只要敲代码时有意识就行了。

《重构--改善既有代码的设计》总结or读后感:重构是程序员的本能的更多相关文章

  1. 【转】PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数

    原文地址: PHP 杂谈<重构-改善既有代码的设计>之一 重新组织你的函数 思维导图   点击下图,可以看大图.    介绍   我把我比较喜欢的和比较关注的地方写下来和大家分享.上次我写 ...

  2. 《重构——改善既有代码的设计》【PDF】下载

    <重构--改善既有代码的设计>[PDF]下载链接: https://u253469.ctfile.com/fs/253469-231196358 编辑推荐 重构,一言以蔽之,就是在不改变外 ...

  3. 【重构.改善既有代码的设计】14、总结&读后感

    14.总结 首先,这是一本太老的书,很多观点已经被固化或者过时了.但核心观点没有问题,虽然大多数观点已经被认为是理所当然的事情了.   重构的定义 重构分几种: 1.狭义的代码重构   就是本书讲的, ...

  4. 重构 改善既有代码的设计 (Martin Fowler 著)

    第1章 重构, 第一个案例 1.1 起点 1.2 重构的第一步 1.3 分解并重组 statement() 1.4 运用多态取代与价格相关的条件逻辑 1.5 结语 第2章 重构原则 2.1 何谓重构 ...

  5. 『重构--改善既有代码的设计』读书笔记----Move Method

    明确函数所在类的位置是很重要的.这样可以避免你的类与别的类有太多耦合.也会让你的类的内聚性变得更加牢固,让你的整个系统变得更加整洁.简单来说,如果在你的程序中,某个类的函数在使用的过程中,更多的是在和 ...

  6. 『重构--改善既有代码的设计』读书笔记----Extract Class

    在面向对象中,对于类这个概念我们应该有一个清晰的责任认识,就是每个类应该只有一个变化点,每个类的变化应该只受到单一的因素,即每个类应该只有一个明确的责任.当然了,说时容易做时难,很多人可能都会和我一样 ...

  7. 『重构--改善既有代码的设计』读书笔记----Extract Method

    在编程中,比较忌讳的一件事情就是长函数.因为长函数代表了你这段代码不能很好的复用以及内部可能出现很多别的地方的重复代码,而且这段长函数内部的处理逻辑你也不能很好的看清楚.因此,今天重构第一个手法就是处 ...

  8. 『重构--改善既有代码的设计』读书笔记---Duplicate Observed Data

    当MVC出现的时候,极大的推动了Model与View分离的潮流.然而对于一些已存在的老系统或者没有维护好的系统,你都会看到当前存在大把的巨大类----将Model,View,Controller都写在 ...

  9. 『重构--改善既有代码的设计』读书笔记----Replace Array with Object

    如果你有一个数组,其中的元素各自代表不同东西,比如你有一个 QList<QString> strList; 其中strList[0]代表选手姓名,strList[1]代表选手家庭住址,很显 ...

随机推荐

  1. SpringAop源码情操陶冶-AspectJAwareAdvisorAutoProxyCreator

    本文将对SpringAop中如何为AspectJ切面类创建自动代理的过程作下简单的分析,阅读本文前需要对AOP的Spring相关解析有所了解,具体可见Spring源码情操陶冶-AOP之ConfigBe ...

  2. 检测CSS属性 是否支持

    原理是:创建一个节点,判断其的style属性是否含有textOverflow属性,有则进一步判断是否支持ellipsis这个值.当遇到不支持的属性值时,浏览器会直接把这个值抛弃.因此这里就可以先给te ...

  3. javascript 备忘 细节 相关

    DOMContentLoaded事件触发时机,即dom tree完成但页面未必渲染完毕.   var a = [1,2,3,4]; var length = a.length; alert((leng ...

  4. HTML DOM应用案例2

    <html> <head> <title>day03</title> <script type="text/javascript&quo ...

  5. .md即markdown文件的基本常用编写语法

    因为现在的前端基本上都用上了前端构建工具,那就难免要写一些readme等等的说明性文件,但是这样的文件一般都是.md的文件,编写的语法自然跟其他格式的文件有所区别,本文也是我学习写markdown文件 ...

  6. postgis几何操作函数集

    管理操作函数 AddGeometryColumn - Adds a geometry column to an existing table of attributes. By default use ...

  7. 【Kafka源码】处理请求

    [TOC] 在KafkaServer中的入口在: apis = new KafkaApis(socketServer.requestChannel, replicaManager, groupCoor ...

  8. C#编写的艺术字类方法

    代码如下: using System;using System.Collections.Generic;using System.ComponentModel;using System.Drawing ...

  9. 分享:苹果APP更新上架被拒的另一种理由(Safety - Objectionable Content)

    这两个星期,本来想和大伙分享:写IT连创业系列运营篇. 但时间飞过,仍只是写了开头,一直很忙,没能完往下写. 今天就动手写点其它内容,哈哈,免的和小伙伴太陌生〜〜〜 前几天更新了:IT恋和IT连的版本 ...

  10. Iterator & Iterable 和 Comparable&Comparator

    java.lang.Iterator & java.lang.Iterable Iterator和Iterable的区别和联系 iterator是具有迭代状态的对象.它允许你检查它是否有更多的 ...