`
luowei31
  • 浏览: 77900 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

读书笔记之何时重构(上)

阅读更多

 

1、重复代码(Duplicated Code):一个以上的地方看到相同的程序结构,那么当可肯定:设法将他们合而为一,程序会变得更好;

 

2、过长函数(Long Method):一个较长的函数应该要设法将其拆成数个小的函数,越长的程序将让人越难以理解;

 

3、过大类(Large Class):过大的类中往往有太多的实例变量和重复代码,你要做的就是提炼它们,消除重复代码和过长的函数,尝试将5100行代码的函数提炼成510行的函数和102行的函数,必要的话根据客户的使用方式提炼出接口,这可以帮助你看清楚如何分解这个类;

 

4、过长参数列(Long Parameter List):太长的函数参数列会让人无法理解和难以使用,必要时可以将所需的大量参数制造成一个参数对象;

 

5、发散式变化(Divergent Change):如果某个类经常性因为不同的原因在不同的方向上发生变化就叫发散式变化,比如新加入一个数据库我需要修改类中的3个函数,新加入一个工具我需要修改类中的4个函数,那么你应该将这个类拆成两个,一个处理数据库,一个处理工具,那么每个类只会因为一个方向的变化而产生变化;

 

6、散弹式修改(Shotgun Surgery):与发散式变化相反,如果你修改一处代码会导致许多不同的类也需要相应的修改,那么你应该要考虑是不是移动那些类,将其放进同一个类中了;

 

7、依恋情节(Feature Envy):如果一个函数对某个类的兴趣高过对自己所属类的兴趣,例如某函数为了计算某值调用了另一个类中的半打取值函数(getting method),那么你应该考虑是不是把这个函数直接移动至另一个类中了;

 

8、数据泥团(Data Clumps):你经常可以看见有多个不同的类中存在着相同的值域,找出这些值域的出现点,提炼到一个新的独立对象中去,这样可以缩短参数列简化函数的调用动作。

 

9、基本型别偏执(Primitive Obsession):将基本的数据按照对象的防止建立对应的类来存放它们,类似于结合数值和币别的money classes,含一个起始值和一个结束值的range classes,电话号码或邮政编码等等的特殊Stings。你可以将原本单独存在的数据值替换为对象,从而走进对象的世界。后面将会详细介绍有效的处理方法。

 

10switch惊悚现身(Switch Statements):大多数时候都尽量不要使用switch,一看到它你就应该考虑以多态来替换它,这样可以让你的代码更加优雅。

0
0
分享到:
评论

相关推荐

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

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

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

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

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

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

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

    NULL 博文链接:https://aqxiebin.iteye.com/blog/1579688

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

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

    《从零开始学架构》精华读书笔记

    《从零开始学架构》精华笔记 《从零开始学架构》这本书的内容主要包含以下几部分:1) 架构设计基础,包括架构设计相关概念、历史、原则、基本方法,让架构设计不再神秘;2) 架构设计流程,通过一个虚拟的案例,...

    简明代码和代码重构思维导图

    clean code和重构的读书笔记,都是思维导图,方便记忆。

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

    突然发现第二版上个月上市,直接下单了精装版,把这个坑填完我就自己去读第二版了哈哈 Link 第二版安利 为什么决定再版《重构》? 虽然这本书已经出版了很久,但是在这20年左右时间里,重构的核心思想并没有过时,...

    阅读笔记-阿里妈妈AI智能文案.pdf

    阅读笔记-阿⾥妈妈AI智能⽂案 ⽂章⽬录 之前解决⽂本多样性的⽅法 1. 修改loss 主要代表是的相关研究,提出了新的⽬标函数 MMI 对 Seq2Seq进⾏建模。 原始的⽬标函数采⽤ log-likelihood 建模, 这个loss的问题是,...

    leetcode题库-notes:笔记

    leetcode题库笔记 包含我在学习时使用的快速笔记、备忘单和书签。 目录 当前阅读 [牛津大学出版社] 移动到一次完成。 修订 备忘单 学习笔记 计算机科学基础 语言 Java Java 书籍 必须阅读 Java 书籍 成为更好的软件...

    W3学习笔记--文献检索与有效阅读1

    标题摘要介绍难度2 详读并 记笔记可转述正标出不理解的名间 提问批判性思考改进重构作者的作到新 不是③献综述 学术观点 t 理论法1批判性归纳与评论堆砌只研究意

    Android代码-一个集Gank.Io,Rxjava示例,操作符,MD控件使用,各种好玩Ap示例的学习App。

    安卓艺术开发探索读书笔记,EffectiveJava读书笔记. 收集各大神博客以及安卓笔记,安卓面试笔记等方便手机端查看. 更新说明 v2.2.2 1.增加了一些最近在学习比较好的安卓大神的博客. 2.增加了来自GeniusVJR整理的安卓...

    解析极限编程 拥抱变化

    本书是在《解析极限编程》第一版面世的5年之后,作者重新考虑,整理和重构XP的基础上写成的,也是作者不断参与软件开发项目的心路历程和对XP的许多新的深刻理解。  本书共分两部分。第1部分包括第1章至第16章,阐述...

    notes-refactoring:阅读笔记:Refactoring(福勒)

    重构-福勒(WIP) 我的学习笔记来自阅读《 第三章-代码中的不良气味1.神秘的名字函数,模块,变量和类的名称混乱。 确保他们清楚地传达他们的工作方式和使用方法。 2.重复的代码同一代码结构存在多个地方。 它需要在...

    Refactoring-summary-2nd-[removed]“重构摘要”

    我在阅读Martin Fowler的“重构:改进现有代码的设计(第二版)”时的个人笔记。 它仅包含一些基本概念作为我的理解。 如果您想了解更多,我强烈建议您购买该书。 如果您是发布者,并且认为此存储库不应该公开,请...

    java8源码-jdk-learn:jdk-学习

    重构,主要指修改已有的阅读笔记,极少情形下会修改源码 (注2) :recycle: (5) :pencil: 校对,主要指更正错别字、调整源码分组、修改源码排版等 :pencil2: (6) :check_mark_button: 发布测试文件 :white_check_mark:...

    asp.net知识库

    Essential .NET 读书笔记 [第一部分] NET FrameWork的Collections支持 .NET的反射在软件设计上的应用 关于跨程序集的反射 实现C#和VB.net之间的相互转换 深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述...

    具有单元阵列存储的张量序列格式的时间相关 AMEn 算法的 MATLAB 实现_代码_下载

    用于求解张量序列格式的常微分方程的时间相关 AMEn 算法 用法 一、最小变体 下载此代码(使用 GIT ...尝试重构test_lyap.mTT-Toolbox 并在笔记本电脑上运行它。当 MATLAB 耗尽内存时,感受一下 {d,R} 格式的必要性。

    代码整洁之道

    1、有意义,名副其实:降低代码的模糊度,明确说明代码的用途; 2、避免误导:accountList的类型最好就是...《代码整洁之道》阅读对象为一切有志于改善代码质量的程序员及技术经理,本文档是阅读后的读书笔记!!!!

    brucezhaor.github.io:Bruce Zhao的技术博客-重构中..

    欢迎大家RSS订阅我的博客,只需要复制http://brucezhaor.github.io/feed.xml到邮箱或订阅阅读器之类的地方就可以了。 郑重声明:本博客所有文章均采用 ,分享,演绎需准守以下原则: 署名:您需要标出财经链接和作者...

Global site tag (gtag.js) - Google Analytics