zoukankan      html  css  js  c++  java
  • 读书笔记 Week6 2018-4-12

    Chap 24 重构 读书笔记

    一、需求的变更

    单纯就科目学习中的小项目来说,目标在一开始便被明确下来,即可定义一份严谨的列表来描述功能。故在原来的编程经历中,只要上交了程序便一切都没事儿了,也没有重构的发生。

    在结对项目中,也算是第一次进行了重构的体验。一开始仅仅编写了对于整数运算式的程序,在后续逐渐加入小数和分数时,便可以说进行了重构。但是实际上效果不佳,单纯的修改让整个函数的行数几乎增加了两倍,逻辑链相应也复杂了不少,也算是切实的感受到文中所说的,“掌握重构技巧的重要性”。显然,重构并不是单纯的重写。

    二、重构的技巧

    首先在数据级别的重构中,重要的一点是让数据尽可能的明确,无论是把变量命名为具体的功能,还是用函数替代表达式,都可以很好的做到这一点。

    还有一点较为在意。就是说用多个单一变量代替多用途变量,还特别提到了惯用的循环遍历I,j和交换变量temp,虽然可能会不习惯,但自己以后的编程过程中,确实是可以参照这个原则。例如,用“loop_xxxxx”和“temp xxxx and xxxx”来命名,增加可读性。

    语句级的重构中,有一点觉得很好,“在嵌套的 if-then-else语句中一旦知道答案就立即返回,而不是去赋一个返回值” 个人也算是有体会,多种嵌套下,指不定就会在满足一个条件以后,又满足了后面不知道哪个不期望的条件,然后把所希望的值给替代掉。例如:在个人任务中,有如下逻辑

    “是否是字符 是否是字母 是否是数字 如果都不是,就是分隔符,判断是否已经构成了一个单词”

    改结构便把判断这个重要功能放到了 if 嵌套的最里层,最后也确实是在这里出了问题(可见个人任务总结)。

    三、何时重构

    这里提到的有一点个人深以为然,即“不要把重构当先写后改的代名词”。简单来说就是不要滥用重构,至少你所重构的对象,是一个已经能够运行用的代码,而不是把为了让无法运行的代码能够运行叫做重构

  • 相关阅读:
    Thinkphp M方法出错,D方法却可以
    Composer项目安装依赖包
    wamp httpd-vhosts.conf
    博客园报错 Mixed Content: The page at 'https://i.cnblogs.com/EditPosts.aspx?opt=1' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://upload.cnblogs.com/imageuploa
    Thinkphp js、css压缩类minify
    Thinkphp 不足之处
    Thinkphp 调试方法
    Lavavel 程序报错 MassAssignmentException in Model.php line 452: _token
    Laravel 安装mysql、表增加模拟数据、生成控制器
    Laravel 安装登录模块
  • 原文地址:https://www.cnblogs.com/aiyz/p/8807303.html
Copyright © 2011-2022 走看看