zoukankan      html  css  js  c++  java
  • 《重构 改善既有代码的设计》 读书笔记

    《重构 改善既有代码的设计》

    读书笔记

    娄雨禛 PB16060356

    何谓重构

      重构(名词):对软件内部的一种调整,目的是在不改变软件可观察行为前提下,提高其可理解性,降低其修改成本。

      重构(动词):使用一系列重构手法,在不改变软件可观察行为的前提下,改变其结构。

      以上两个定义是作者提出的。让我们注意其中的三个关键词:可观察行为、可理解性、修改成本

      对于入门的代码编写者来讲,重构这件事是一件很玄乎的操作。一段长长的代码,为什么被七搞八搞就效率更高?初学者之所以会认为“重构”很玄乎,是因为他们没有去了解“重构”的基本原则,更不知道以上所述的三个关键词有什么深刻的含义。

      可观察行为不变  可观察行为这个词是针对于用户而言的。一个用户,在拿到一个产品时接触到的一切,都包纳在这个“可观察行为“之中。而代码设计者在调整代码的前后,要让用户觉得体验完全没有改变,即底层更改不应影响到表层交互。

      可理解性提高  即使两段代码对于机器来说实现效率完全一样,其对于代码阅读者的体验可以截然不容,这就是代码风格优劣对于程序维护的影响。好的代码风格,有助于阅读者一眼就理解代码中每个变量、每个函数的作用,这种程序员之间代码交流的“高效”,绝不亚于代码本身“高效”,每个程序员当切记于心。

      修改成本  初学编程的人总会遇到大篇幅更改变量的情况,这是由于他们没有“宏定义”的概念,对于代码架构没有预先的感知。“重构”的本质,是用尽可能少的改动来实现效率的提升,即等修改成本下的效率最大化。

    为何重构

      改进软件设计

      使软件更容易理解

      帮助找到BUG

      提高编程速度

      提高程序运行效率

      以上五点,摘录自本书。就我自己的实际编程经验来看,“重构”最大的两个意义,一个是“使软件更容易理解”,另一个是“提高程序运行效率”。下面拿我的第一次个人项目举例。

      个人项目中,我一开始选错了数据结构,采用了“多重链表”的结构,结果在数据量巨大的时候,程序根本跑不完。后来改用了“哈希表”的数据结构,大大提升了程序运行的的效率。重构对于程序运行效率的提升是很明显的,尤其是当一开始的方案远非最佳方案的时候。然而,一个程序优化得越好,它在效率提升方面的空间也就越小。在这个时候,就需要越来越关注程序对于程序员阅读上的优化——变得更容易理解。

      一个有效的方法是多加精辟的注释,这也是我的基本编程习惯之一——不求编得有多快,但要求编写的内容能够有效地被再利用,以后拿来直接能上手,而不是重新理解半天。注释的重要性已经被很多人提及,而在这里,我还想强调一下注释之外同样有价值的东西——重构对于程序语言易读性的优化。

      在个人项目中,我暴露出一个问题。代码工作越深入,我就越是发现之前没有充分对整个程序进行宏观把控与架构。我总是发现我缺少一些很重要的变量、数组、指针、结构体,这些都被临时加上。而我就需要临时为这些变量取易理解的名字。这些名字有的会与之前已有的名字产生含义的冲突,然后把编程的思路搞混。也就是说,有序而周到的宏观架构能够有效引领后边的编程工作,而混乱或不完善的宏观架构几乎必然导致之后编程工作的条理不堪。在这个时候,“重构”的思想就要求,在编程工作到了每一个小阶段时,对程序本身进行一个架构的梳理。不当的地方重新修改,不足的地方重新补上,然后再进行下一步的编程。这个过程看似在徘徊,实际则在有效节省总的编程时间。这一点非常重要。

  • 相关阅读:
    faster with MyISAM tables than with InnoDB or NDB tables
    w-BIG TABLE 1-toSMALLtable @-toMEMORY
    Indexing and Hashing
    MEMORY Storage Engine MEMORY Tables TEMPORARY TABLE max_heap_table_size
    controlling the variance of request response times and not just worrying about maximizing queries per second
    Variance
    Population Mean
    12.162s 1805.867s
    situations where MyISAM will be faster than InnoDB
    1920.154s 0.309s 30817
  • 原文地址:https://www.cnblogs.com/RainLou/p/8807865.html
Copyright © 2011-2022 走看看