`
CherryRemind
  • 浏览: 55010 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

<重构>笔记

    博客分类:
  • Base
阅读更多
     重构:
    在不改变的前提下,提高代码的可理解性,降低其修改成本



The rule of three
添加功能时一并重构
修补错误时一并重构
复审代码时一并重构

composing method

a. Extract method. divide a method into two or more method.
提炼方法, 把能分开,重用的部分单独做一个方法。

b. Inline method. conclude two or method into one method.
和Extract method相反, 概括多个方法成一个, 简化代码.

c. Inline temp. remove temp variable as we can.


d. Replace temp with query. change temp variable 's operation into a method that can be recall some other place


e. Introduce explaining variable. change series of operation into some explaining variable, use clear name


f. Split temporary variable. won't reuse temp variable for many set value operation, it make other confused


g. Remove assignments to parameters.
create a temp variable instead of object, java only use pass by value (参数不要用来赋值, 使用final, 避免对参数赋值)


h. Replace method with method object.
create method object( TestObject _testObject), use 'Extract method', use '_testObject.testMethod()'(method object)


i. Substitute algorithm. improve algorithm

       


Moving features between objects


a. Move method

b. Move field

c. Extract class.

d. Inline class.

e. Hide delegate.  (对method进行加一层封装,使Client不能直接访问method. 简单委托关系)

f. Remove middle man. 和Hide delegate相反, 合理的隐藏程序基于实际系统的变化

g.Introduce foreign method.  create new method, set server class entity as argument
                         ex:           Date date = new Date(pro.getYear(), pro.getMonth(), pro.getDay()+1)
                          ---->         Date date = nextDay(pro);
                                           staitc Date nextDay(Date pro)
                                            {
                                                    return new  Date()
                                            }


 
分享到:
评论

相关推荐

    超详细的springboot学习笔记

    &lt;artifactId&gt;itcast-springboot&lt;/artifactId&gt; &lt;version&gt;1.0.0-SNAPSHOT&lt;/version&gt; &lt;packaging&gt;war&lt;/packaging&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-web...

    springboot_笔记

    &lt;artifactId&gt;maven-resources-plugin&lt;/artifactId&gt; &lt;configuration&gt; &lt;encoding&gt;UTF-8&lt;/encoding&gt; &lt;/configuration&gt; &lt;/plugin&gt; &lt;!-- Java编译插件 --&gt; &lt;plugin&gt; &lt;groupId&gt;org.apache.maven.plugins&lt;/...

    JavaWeb笔记呀!

    - 无序列表`&lt;ul&gt;`,有序列表`&lt;ol&gt;`,定义列表`&lt;dl&gt;`。 - 例如定义列表示例: ```html &lt;dl&gt; &lt;dt&gt;传智播客&lt;/dt&gt; &lt;dd&gt;财务部&lt;/dd&gt; &lt;dd&gt;学工部&lt;/dd&gt; &lt;dd&gt;人事部&lt;/dd&gt; &lt;/dl&gt; ``` #### 二、JavaScript基础 - *...

    html和css笔记

    - **标题与内容**:`&lt;title&gt;`用于定义页面标题,`&lt;h1&gt;`至`&lt;h6&gt;`用于不同级别的标题,`&lt;p&gt;`表示段落,`&lt;div&gt;`和`&lt;span&gt;`分别代表块级元素和行内元素。 - **文本样式**:`&lt;b&gt;`、`&lt;strong&gt;`表示粗体,`&lt;i&gt;`、`&lt;em&gt;`表示...

    31天重构学习笔记中文版

    - 使用`IEnumerable&lt;T&gt;`替代`IList&lt;T&gt;`,提供只读访问方式。 - 在类内部管理集合的增删操作,确保集合的一致性和完整性。 - **示例代码**: ```csharp using System.Collections.Generic; namespace LosTechies....

    day33-Notes App(便利贴笔记)

    &lt;title&gt;便利贴笔记&lt;/title&gt; &lt;link rel="stylesheet" href="styles.css"&gt; &lt;/head&gt; &lt;body&gt; &lt;h1&gt;便利贴笔记&lt;/h1&gt; &lt;input type="text" id="note-input" placeholder="请输入便签内容..."&gt; &lt;button id="add-note"&gt;...

    git尚硅谷笔记.pdf

    - `git pull &lt;remote&gt; &lt;branch&gt;`:从远程仓库获取最新的更改并合并到本地分支。 #### 五、Git原理概述 - **Hash算法**:Git使用SHA-1哈希算法来唯一标识文件和提交记录,确保数据的一致性和完整性。 - **版本管理...

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

    《31天重构系列笔记》是一本专注于C#编程语言重构技术的教程,该资源以免费高清PDF的形式提供。重构是软件开发过程中的一种重要实践,它旨在改进代码结构,提高可读性和可维护性,而不会改变外部行为。在31天的时间...

    代码大全第二版(软件构建)笔记

    &lt;br&gt; 其实《代码大全》是讲软件构建,包括部分需求、设计、测试、重构内容,以及大量的编程实践和工程规范,所有没有工作经验或较少从事规范化的工程开发的程序员都应该一读。&lt;br&gt; 这是我的《代码大全(第二版)》...

    31天重构学习笔记.docx

    重构后的代码将 `OrderLines` 的类型改为了 `IEnumerable&lt;OrderLine&gt;`。`IEnumerable` 接口仅提供 `GetEnumerator()` 方法,使得外部代码只能遍历集合,无法执行修改操作。这样一来,调用者无法直接对集合进行添加或...

    重构代码笔记1

    本文以"重构代码笔记1"为出发点,深入探讨了24种常见的代码坏味道及其对应的重构策略。 首先,神秘命名(Mysterious Name)是重构的常见起点,通过改变函数声明和变量名,使其更具描述性,如将`cash0`更改为`cash_...

    Vue入门day01笔记

    &lt;script src="./lib/vue.min.js"&gt;&lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;!-- Vue 实例所控制的区域 --&gt; &lt;div id="app"&gt; {{ msg }} &lt;/div&gt; &lt;/body&gt; &lt;script&gt; // 创建 Vue 实例 var vm = new Vue({ el: '#app', // 控制的...

    重构 学习笔记 refactoring martin fowler

    重构是软件开发过程中的一个重要环节,它涉及到对现有代码的改进,目的是为了提高代码的可读性、可维护性和设计质量,而不改变其外部行为。本文主要围绕重构的关键概念、原则、时机以及面临的挑战展开讨论。 首先,...

    ​ Owl 学习笔记之四---属性 内容 概述 定义 绑定功能属性 动态属性 默认属性 属性验证 良好实践 概述 在 Ow

    static template = xml`&lt;div&gt;&lt;t t-esc="props.a"/&gt;&lt;t t-esc="props.b"/&gt;&lt;/div&gt;`; } class Parent extends Component { static template = xml`&lt;div&gt;&lt;Child a="state.a" b="'string'"/&gt;&lt;/div&gt;`; static ...

    eclipse性能优化 <深度理解jvm>读书笔记

    《Eclipse性能优化——&lt;深度理解JVM&gt;读书笔记》主要涵盖了如何利用Eclipse IDE进行Java应用程序的性能优化,以及深入理解JVM的工作原理。在本文中,我们将探讨Eclipse的性能调优策略,以及JVM内存管理和垃圾回收机制...

    .NET 快速重构 - 学习笔记

    .NET 快速重构学习笔记是针对开发者提升代码质量和可维护性的重要指南。重构是一个系统性的过程,旨在改善软件设计,优化代码结构,而不改变其外在行为。在.NET开发环境中,重构是不可或缺的技能,它可以帮助开发者...

    重构笔记

    《重构笔记》主要探讨的是软件开发过程中的一个重要实践——重构,它是提高代码质量、可维护性和可读性的重要手段。重构是指在不改变代码外在行为的前提下,对代码进行修改,以改善其内部结构。这一过程可以是局部的...

    ASP.NET笔记之广告控件的使用方法

    在文件中,每一则广告由一个&lt;Ad&gt;元素表示,包含多个属性标签,例如&lt;ImageUrl&gt;属性指定广告的图片地址,&lt;NavigateUrl&gt;属性指定用户点击广告后跳转的目标地址,&lt;AlternateText&gt;属性为图片不可见时的替代文本,&lt;KeyWord...

Global site tag (gtag.js) - Google Analytics