`

重构-读书笔记

 
阅读更多

《Refactoring Improving the design of existing code》--Martin Fowler

 

chapter-1

        例子1:根据不同类型电影,租期长短,计算价格,并输出。写到一个方法了。

                可能变化:增加/改变输出样式,电影类型分类可能会变,计费标准会变。

        只有优秀的人才能写出人易读的代码。机器永远会理解。        

        方法/变量名称,是代码清晰的关键。

        

        方法应该放在,它使用的数据所属对象内,这样依赖低。

        

        2,一个电影可以在生命周期内修改分类,一个对象却不能修复所属类。

                不能创建电影子类,但可以创建价格子类。replace type with state/strategy,

                把type相关行为移到state/strategy内部。

                模式取决于:state:代表电影的某个状态,strategy代表计费策略。反映对结构的想法。

                

        面向对象:思考对象的职责。

        重构随时随地。

        事不过三,三则重构。

        重构可以取代预先设计。

        switch少用,switch意味着重复。

        间接层/方法:价值大于代价(易读复用)才有必要存在。

        重复是万恶之源

        

chapter-6

        6.1 extract method 以它“做什么”命令,不是怎么做。

        6.4 replace temp with query 。临时变量尽量用final修饰。

                double getPrice(){return getBasePrice * discountFactor();}        

        6.5 introduce explaining variable 解释性变量

                boolean isMacOs = platform.indexOf("MAC") > -1;

                if( isMacOs && isIEBrower){...}        

                

chapter-7

        如果一个类承担太多责任,考虑extract class,如果太鸡肋,考虑inline class

 

chapter-8

        状态码

                不变、且行为相同,不用抽取。比如性别男女。

                不变、行为不同,抽取子类。

                可变,生命周期内可变、或其他原因不能继承,使用state/stratege模式

        

chapter-9简化方法调用

        查询、修改方法分离。getTotalAndSetSum()-->getTotal(),setSum();

        参数超过4个时,使用对象封装参数。

        工厂方法:根据类型码,提供一组类的,对象构造方式。接口简单统一。

        如果有向下转型的代码,首先考虑是否可以用模板类代替。

        组合:子类不需要父类的很多操作和接口。接口不能反映子类的功能,意图混淆。

        继承:需要使用受delegation的类的所有方法,则改为继承。

        

        

        类内部field自我封装:直接使用变量,直到它带来麻烦为止,自我封装是方便子类覆盖。

        replace data value with object 把电话号码抽取成对象,因为有格式化,抽取区号,登方法

        new Customer(1).store(),new Customer(2).store(),store(){list.add(this);}

        多个order对应同一个customer,应该只对象改为引用对象,使用工厂

        引用对象回提高难度

        数组,集合,只应用于一组类似对象,如果不是使用包装对象替换,replace array with object

                比如:一个元素是名字,第二个是分数,就应该封装为对象。

 

分享到:
评论

相关推荐

    重构-第3章 代码的坏味道-读书笔记

    3. 过长的方法:如果一个方法执行了太多的任务,它就违反了单一职责原则,使得阅读和测试变得困难。应将大方法拆分成小的、可重用的部分。 4. DRY原则:重复的代码应当被提取成公共函数或模块,避免在多个位置重复...

    《重构》----学习笔记

    重构的益处多样,包括改善软件设计,使代码更易于阅读和理解,帮助定位和修复bug,以及提高编程效率。重构应该成为开发过程中的常态,特别是在添加新功能、修复错误或代码审查时,都是进行重构的好时机。当发现代码...

    重构-改善即有代码的设计

    PDF格式的书籍可以在不同的设备上阅读,易于分享和笔记,为读者的学习和使用提供了极大的便利。然而,技术书籍的价值不仅在于阅读,更在于实践。因此,建议读者在阅读的同时,将理论知识与实际编程相结合,通过具体...

    代码质量-读书笔记

    下面将详细解读这个领域的核心知识点,并基于"代码质量-读书笔记"的内容展开讨论。 首先,我们要理解什么是代码质量。代码质量不仅仅关乎代码的正确性,更包括其可读性、可维护性、可扩展性等多个方面。良好的代码...

    代码整洁之道-----读书笔记

    在阅读这本书的过程中,我们可以学到很多关于代码整洁性的关键概念。 1. **命名规范**:书中的一个重要部分强调了有意义的命名对于代码可读性的重要性。好的命名应该简洁明了,能够准确反映变量、函数或类的用途。...

    《重构商业:产业互联网时代的商业模式重构》读书笔记模板.pptx

    《重构商业:产业互联网时代的商业模式重构》读书笔记模板.pptx

    《重构-改善既有代码的设计》电子书以及总结的书中源码

    "Refactoring.txt" 可能是作者或读者对书中内容的笔记或者提炼,可能包含了书中关键概念、例子和重构技巧的总结。例如,它可能详细介绍了如何识别需要重构的代码,如过于复杂的函数、过深的嵌套结构,或者是难以理解...

    LTC与铁三角从线索到回款-读书笔记v0.1 z1214.pptx

    阅读本书,有助于搭建优质营销体系,提升销售成功率,打造有执行力、有创造力、有活力的营销组织,理解营销体系的定位、使命以及未来的发展方向,构建流程并用好铁三角组织,搭建资源服务型组织,形成差异化解决方案...

    refactoring-to-patterns-notes:重构-向范式前进(重构为模式)的学习笔记

    总之,通过这本书和相关笔记,开发者不仅可以掌握重构的技术和方法,还能学会如何在实践中运用设计模式,从而编写出更高效、更易维护的代码。无论是对于初学者还是经验丰富的开发者,这本书都提供了丰富的学习材料,...

    [免费高清PDF]31天重构系列笔记.rar

    同时,read.txt文件可能包含作者的前言或阅读指南,提供了学习此笔记的建议和注意事项。 总的来说,《31天重构系列笔记》是C#开发者提升代码质量和效率的宝贵资源。通过系统的练习和学习,开发者可以提升自己的重构...

    《从跟随到领先:H为管理体系重构之路》读书笔记.pdf

    《从跟随到领先:H为管理体系重构之路》读书笔记.pdf

    《从跟随到领先:H为管理体系重构之路》读书笔记.docx

    《从跟随到领先:H为管理体系重构之路》读书笔记.docx

    《从跟随到领先:华为管理体系重构之路》读书笔记x.pptx

    《从跟随到领先:华为管理体系重构之路》读书笔记x.pptx

    《从跟随到领先:H为管理体系重构之路》读书笔记.pptx

    《从跟随到领先:H为管理体系重构之路》读书笔记.pptx

    重构笔记

    《重构笔记》主要探讨的是软件开发过程中的一个重要实践——重构,它是提高代码质量、可维护性和...通过深入阅读这份文档,开发者可以学习如何在实践中提升自己的重构能力,从而打造出更加优雅、易于维护的软件系统。

    《Python编程金典》读书笔记

    ### 《Python编程金典》读书笔记知识点梳理 #### 1. 绪论 绪论部分通常会介绍Python的历史背景、特点以及为什么选择Python作为学习和使用的编程语言。此外,还会涉及Python与其他编程语言的区别,以及它在不同领域...

    Java版水果管理系统源码-RefactorMindMap:重构第一版重构手法读书笔记思维导图

    虽然这本书已经出版了很久,但是在这20年左右时间里,重构的核心思想并没有过时,许多实际的重构手法并没有什么重大变化。让我觉得是时候考虑再版有几个原因:一个原因是,第1版里的代码已经很陈旧了,书里面还有...

    代码整洁之道读书笔记.zip

    个人读书笔记,学习共享,希望每个苦恼于代码一坨坨混乱不堪的程序员都能学习. * 整洁代码的意义? 可读性,可维护性。 * 如何写出整洁代码? 1.只做一件事 2.不重复 3.有表达力 * 整洁代码的态度要求,要遵守...

Global site tag (gtag.js) - Google Analytics