这本书真的很赞,有种醍醐灌顶的感觉,一如既往,我还是大致分析一下这本书的思想,而不是单纯的文字摘录.

首先,无论是类还是方法本身,都可以视作对象.重构则是研究怎么降低耦合度的一种技术,同时我还是很支持作者的观点,重构就像一场游戏,趣味横生.

正如之前所说,既然类和方法都可以视作对象来看待,但是这本书的想法远远不止于此.这两者存在进一步的一一对应的关系,就好比类中存在变量,方法中会定义局部变量,这两者对于重构而言其实都是很头疼东西.因为重构在很大方面的目的是将变量的读取和修改的过程方法化.只有特定的为了增加代码的可读性的情况下会采用定义局部变量的方法来重构项目.

另外,重构和性能优化其实是想对平行的结构,书中一句话其实在很大程度上改变了我的既有思维,"写出机器能看懂的代码其实并不困难,但是写出人类能看懂的代码其实真的很需要技术","很多时候大多数为了优化性能的操作,对性能的优化其实并不明显,大多数,影响代码的性能的往往集中地特定的一小段代码段",舍了西瓜丢了芝麻,这样的行为不是很愚蠢吗.

重构是为了让已经很喜欢偷懒的程序员能更加偷懒的方法,其实大多数技术都是这样的,技术出现的原因往往是为了更加便于开发,另外一点往往是为了让代码的修改幅度更加的轻微,对项目总体的影响能更加轻微.

这本书中让我最印象深刻的是书本身对于switch-case和if-else的处理,书中列出了很多对这两种枚举类型的改进方法.而且对于行为的重复其实很尴尬,特别是这种根据不同情况的单纯一一列举.书中尽管给出了例如策略方法,多态等方法来解决这个问题,但是其实说到底,这些方法的核心思想还是将switch-case集中管理,让其在项目中只出现一次,这便是最好的改动方法.

总而言之,这本书是讲述重构方法论的书,授人以鱼不如授人以渔的感觉.

重构-改善既有代码的设计 读书笔记相关推荐

  1. 重构-改善既有代码的设计读书笔记

    1.基本重构 1.1 提炼函数(Extract Function) 将意图和实现分开,如果需要花时间浏览一段代码才能弄清它到底在干什么,那么就应该将其提炼到一个函数中,并根据它所做的事为其命名. 1. ...

  2. 『重构--改善既有代码的设计』读书笔记----序

    作为C++的程序员,我从大学就开始不间断的看书,看到如今上班,也始终坚持每天多多少少阅读技术文章,书看的很多,但很难有一本书,能让我去反复的翻阅.但唯独『重构--改善既有代码的设计』这本书让我重复看了 ...

  3. 重构 改善既有代码的设计:代码的坏

    以下内容来自<<重构 改善既有代码的设计>> 一.什么是重构 所谓重构(Refactoring)是这样一个过程:在不改变代码外在行为的前提下,对代码做出修改以改进程序的内部结构 ...

  4. 重构—改善既有代码的设计

    概述 1.1 参考资料 <重构-改善既有代码的设计>读后总结 <重构改善既有代码的设计> 22种代码的坏味道,一句话概括 1.2 何谓重构 首先要说明的是:视上下文不同,重构的 ...

  5. PHP 杂谈《重构-改善既有代码的设计》之二 对象之间搬移特性

    思维导图 索引: Ø Move Method(搬移函数) Ø Move Field (搬移值域) Ø Extract Class (提炼类) Ø Inline Class (将类内联化,就是把当前的类 ...

  6. PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据

    介绍 承接上文的PHP 杂谈<重构-改善既有代码的设计>之 重新组织你的函数继续重构方面的内容. 这章主要针对数据的重构. 1.争论的声音--直接访问Field还是通过函数(Accesso ...

  7. 《重构-改善既有代码的设计》-第1例:租赁影片(2)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 上接  重构-改善既有代码的设计-第1例:租赁影片(1) 2  运用多态取代与价格相关的条件逻辑 2 ...

  8. 《重构-改善既有代码的设计》-第1例:租赁影片(1)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 买了<重构 - 改善既有代码的设计 >一书,一直没有好好看,大致过了下也觉得只是有点点印 ...

  9. 实践提高《重构改善既有代码的设计第2版》PDF中文+PDF英文+对比分析

    重构是编程的基础,是在不改变外部行为的前提下,有条不紊地改善代码.编程爱好者都知道,Martin Fowler 的<重构:改善既有代码的设计>已经成为全球有经验的程序员手中的利器,既可用来 ...

最新文章

  1. 【Numpy学习记录】np.cov详解
  2. c语言 数组比较不等往下累加,用C语言确定两个数组内的元素排列顺序不同,但是元素相同,代码有bug找不出?...
  3. python可以封装成独立程序吗_windows环境下把Python代码打包成独立执行的exe
  4. Linux下rpm安装lrzsz
  5. RFID课程设计之图书管理系统
  6. 饥荒指令代码大全一览
  7. 计算机会议论文和sci,ei会议论文集算不算期刊_ieee会议论文集属于istp_会议论文集算发表么...
  8. asp 入门实例(页面+代码)
  9. 省选+NOI 第九部分 博弈论
  10. Matlab 环境下用正弦波模拟方波和锯齿波
  11. 计算机上数字代表那个音符,音乐简谱中数字上的点表示什么,别说你不知道哦 ^-^...
  12. 2-《电子入门趣谈》第一章_一切从单片机开始-1.1单片机概述
  13. html静态网站中华传统文化网站主题设计 传统文化艺术耍牙15页
  14. 乾 乾为天 乾上乾下
  15. 全国地理信息资源服务系统行政边界矢量数据下载教程
  16. .Net Core通过NPOI在CentOS 7(Docker)环境中导出Excel报错The type initializer for ‘Gdip‘ 的问题
  17. 电励磁同步电机与永磁同步电机直轴交轴同步电感和自感互感关系
  18. 2021年起重机司机(限桥式起重机)考试题及起重机司机(限桥式起重机)模拟考试
  19. Problem C 灭霸打响指
  20. 从itms-services协议中获取ipa的下载地址

热门文章

  1. python程序设计狄光智_Python程序设计
  2. fiddler设置抓取https请求后打开网页总是报“你的连接不是私密链接”的解决办法
  3. java itemcf_大规模电商推荐数据分析-基于ItemCF的召回
  4. java多线程 模型_一篇文章读懂Java多线程模型
  5. java word 纸张大小_如何在Java中为Word文档(.doc或.docx)设置背景色(页面颜色)?...
  6. 微助教课件怎么下载_初中英语八年级下册Unit3课堂要点归纳,知识点睛,语法练习(可下载打印,附答案)...
  7. matlab面向对象排序,matlab面向对象编程基础
  8. 别再说你不会!自学java教程百度云
  9. 知识星球!!!!!!
  10. vant weapp 多选上传图片_iPhone竟然可以压缩图片?一秒1.7MB瞬间变0.08MB,太逆天了吧...