`
qinysong
  • 浏览: 193404 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

阅读更多
读完《重构——改善既有代码的设计》,感觉写得真是非常得好,非常的细腻而且深入,建议还没有读过的找时间读一读,肯定受益良多。

之前写程序也总是不停的重构、重构,读完这本书之后才发现对于重构的理解以前是很肤浅的,很不成体系的。《重构》真是一本好书!
下面粗略地概括一下对重构的理解,也整理一下之前不是很清楚的概念。

1、《重构》有一个很好的动机,也可以说是价值观,就是程序第一是写给人看的,而不是写给机器看的。
根据这一价值观,其他多种利益纷至沓来,比如当程序有了良好的可读性和可理解性,程序中隐藏的Bug便很容易浮出水面,开发进度也更加顺畅,并且对于系统将来的结构变更和扩展,程序也更加具有灵活性。

2、《重构》与《设计模式》的关系,在《设计模式》和《重构》中都有提出“设计模式为重构提供了目标”,在之前对这句话的理解总是朦朦胧胧,觉得有道理但又不是很深刻,现在觉得有两个词非常的关键:目标和目的。

设计模式为重构提供了目标,但不是目的。

设计模式是经过证实的在一定场景下解决一般设计问题的解决方案的核心,通过设计模式我们很好得解决了某种问题,并且便于我们思考和交流,降低沟通之间的理解误差,此外同样重要的,设计模式增强了可复用性,便于将来扩展和维护。

而重构是对程序内部结构的一种调整,其目的是在不改变“软件之可察行为”的前提下,提高其可理解性,降低其修改成本(《重构》的名词性定义)。

所以如果我们把软件开发比作在大海中航行,设计模式就是遍布在大海中的航标,他可以引导我们驶向目的地——高可读性、可理解性、可扩展性、可维护性。所以设计模式是重构的目标(航标)而不是目的,设计模式可以帮助我们更好更快的抵达目的地(准确地说是无止境的),而避免触礁或偏离航向

3、重构和优化,在之前的开发中,优化的意识要比现在(看完《重构》之后)强的多,如果遇到在一个循环中可以做多个事情的时候,决定把每件事情分开放到单独的循环中是要鼓起很大的勇气的,而现在便可以轻松的决定,因为清晰的代码在需要性能优化时有更宽的道路可以选择,并且往往这种决定不会造成真正的性能影响。
分享到:
评论
3 楼 qinysong 2007-03-25  
我也这么觉得,设计原则,设计模式和重构三者相互联系,互为补充,共同组成软件设计的整体过程

设计原则是软件设计的指南,借以可以指导设计出优秀的软件(具有清晰、可扩展、可维护等等特性);

设计模式是设计原则在某种场景下的事例体现,是已证实的符合设计原则的某种解决方案的核心,可以重复拿来使用;

而重构则是在后期对现有代码的整理,通过进一步组织函数、数据、类结构和等等,使代码更加清晰设计更加优秀;
2 楼 jamesby 2007-03-25  
我觉得设计原则(OCP等),设计模式,重构是软件设计的三个重要组成部分。
大家怎么看?
1 楼 qinysong 2007-03-24  
此外代码的坏味道Bad smells一章,真是一顿营养丰富的大餐。Duplicated Code是代码腐化的万恶之源,Long Method、Large Class、Long Parameter List这些几乎就是旧社会臭婆娘的裹脚布,Divergent Change、Shotgun Surgery、Feature Envy、Inappropriate Intimacy这些简直就是指责不清勾肩搭背。等等。。。

重构,它为我们清除这些坏味道指明了方向,并且《重构》通过强调“重构是一种有纪律的、经过训练的、有条不紊的程序整理方法”,保证了重构过程的安全性和高效性。

在重构的手法中有相当一大部分是双向的、互逆的,也就是说在某种时候是你找我,而在另一些时候是我找你,比如Pull Up Field和Push Down Field,Pull Up Method和Push Down Method等,而另一些则是强调单向的、勇往直前的,比如Encapsulate Field、Remove Control Flag、Remove Parameter、Remove Assignments to Parameters、Replace Conditional with Polymorphism等。
在双向的、护逆的重构手法中,强调的是一种平衡,是职责清晰,角色明确。
而在强调单向的、勇往直前的重构手法中,突出的是使代码更容易理解、更容易扩展,更加具有面向对象性。

为了对比双向可逆的重构手法,以便突出其侧重点和权衡内容,下面进行列举
重新组织你的函数章节中
Extract Method——Inline Method
Inline Temp——Introduce Explaining Variable

在对象之间搬移特性章节中
Extract Class——Inline Class
Hide Delegate——Remove Middle Man
Introduce Foreign Method——Introduce Local Extension

重新组织数据章节中
Change Value to Reference——Change Reference to Value
Change Unidirectional Association to Bidirectional——Change Bidirectional Association to Unidirectional

简化条件表达式章节中


简化函数调用章节中
Add Parameter——Remove Parameter
Parameterize Method——Replace Parameter with Explicit Methods

处理概括关系章节中
Pull Up Field——Push Down Field
Pull Up Method——Push Down Method
Extract Subclass(Extract Superclass)——Collapse Hierarchy
Replace Inheritance with Delegation——Replace Delegation with Inheritance

在看这本书的过程中感觉这种互逆的挺多,列举之后发现没有之前感觉多。

相关推荐

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

    《重构-改善既有代码的设计》是一本经典的软件开发著作,由Martin Fowler著述,旨在指导开发者如何通过重构来提升代码质量、可读性和维护性。重构是软件开发过程中的一个关键环节,它不是简单的修改代码,而是系统地...

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

    马丁·福勒的《重构-改善既有代码的设计》作为一本经典之作,深入浅出地介绍了重构的原理、技术和实践案例,为程序员提供了一份宝贵的指南。 《重构-改善既有代码的设计》是软件工程领域中的一本重要书籍,尤其在C/...

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

    《重构-改善既有代码的设计》是一本由Martin Fowler所著的经典IT著作,专注于软件开发中的重构实践和技术。这本书深入探讨了如何通过一系列微小而精确的步骤改进代码的设计,提高软件的质量、可读性和可维护性,而...

    《重构_改善既有代码设计》观后感PPT

    【美】马丁福勒 著 是国际著名的面向对象分析设计、UML、模式等方面的专家,敏捷开发方法的创始人之一 重构_改善既有代码设计 软件工程领域的超级经典巨著,与另一巨著《设计模式》并称"软工双雄

    重构 改善既有代码的设计笔记

    重构 改善既有代码的设计笔记 网络转载,分享快乐

    重构_改善既有代码的设计.rar

    《重构:改善既有代码的设计》是由马丁·福勒(Martin Fowler)所著的一本经典IT著作,由侯捷翻译成中文。这本书详细阐述了重构这一关键的软件开发实践,旨在提高代码的质量、可读性和可维护性。在编程领域,重构是...

    重构:改善既有代码的设计(第2版)学习笔记

    《重构:改善既有代码的设计(第2版)》是一本由马丁·福勒(Martin Fowler)编著的经典软件工程书籍,主要关注的是如何通过一系列微小的改变来逐步改进现有代码的质量,提升软件设计的可读性、可维护性和可扩展性。...

    如何改善代码的设计-读《重构》读书笔记.pdf

    《重构:改善既有代码的设计》是一本深入探讨代码优化和设计改进的经典著作。书中的核心观点是,在不改变软件外部行为的前提下,通过一系列微小的步骤改善代码的结构,从而提高代码的可读性和可维护性。以下是根据书...

    ZeromaXHe#BlogBackup#【笔记】《重构:改善既有代码的设计》第5章-重构列表1

    第5章 重构列表5.1 重构的记录格式每个重构方法都有如下五个部分:概要(summary)简单介绍此重构方法的适用情景,以及它所做的事情。动机(motivati

    重构关键问题整理分析笔记摘要

    根据《重构 改善既有代码结构》一书,摘录重点整理分析得出的一个PPT,希望对大家有点帮助

    《代码整洁之道》读书笔记

    同时,可以配合其他编程实践书籍如《重构:改善既有代码的设计》和《设计模式:可复用面向对象软件的基础》一同学习,以获得更全面的视角。 3. 要整洁的代码 整洁的代码应该易于理解,遵循一定的格式规范,有明确...

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

    重构:改善既有代码的设计 第一版以OOP为主 针对书本的核心部分6-11章做了思维导图可视化。 突然发现第二版上个月上市,直接下单了精装版,把这个坑填完我就自己去读第二版了哈哈 Link 第二版安利 为什么决定再版...

    自己学习系统架构整理出的学习笔记

    重构改善既有代码设计.pdf 是关于代码优化的重要资料。重构是提升代码质量的过程,通过改进代码结构,而不改变其外在行为。常见的重构技术包括提取函数、替换魔术数字、引入参数对象等,目的是提高代码可读性、可...

    leetcode安卓-Note:学习笔记

    改善既有代码的设计。 参考 编写可读代码的艺术。 Google 开源项目的代码风格规范。 :memo: 后记 About 本仓库主要是总结的学习笔记。 笔记不是从网上到处拼凑而来,除了少部分引用书上和技术文档的原文,其余都是...

    技术图书。001需要的不多。。技术图书。

    - 《重构:改善既有代码的设计》:帮助程序员学会如何改进现有代码结构而不改变其功能。 2. **前端开发**: - 《HTML与CSS设计与构建网站》:适合初学者学习网页布局的基础知识。 - 《JavaScript高级程序设计》...

    java2018面试宝典

    - 编码实践部分可以参考《重构:改善既有代码的设计》和《编写可读代码的艺术》。 - 代码风格规范建议参考Google开源项目的风格。 这份宝典不仅提供了复习的知识点,也强调了编码实践和正则表达式等实用技能的掌握...

    计算机基础1

    本文将深入探讨这一主题下的四本重要书籍:《编程珠玑》、《编码:隐匿在计算机软硬件背后的语言》、《程序员思维修炼》以及《改善既有代码的设计》。 首先,《编程珠玑》是一本深受欢迎的编程书籍,作者Jon ...

    微软研发探秘系列课程(6):微软研发揭秘之贺岁版——2006年程序员书籍畅谈 (思想篇)

    例如,可能讨论了《重构:改善既有代码的设计》如何帮助开发者提升代码质量,或者《设计模式:可复用面向对象软件的基础》如何指导团队实现模块化设计。 课程中可能包含的PPT部分,会系统地梳理这些书籍的核心观点...

Global site tag (gtag.js) - Google Analytics