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

重新组织函数(Composing Methods)

阅读更多

1.Extract Method

  • 如果每个函数的粒度都很小(finely grained),那么函数之间彼此复用的机会就更大,高层函数读起来就像一系列注释
  • 如果函数都是细粒度,那么函数的覆写(override)也会更容易些。
  • 无局部变量(No local Variables)
  • 有局部变量(Using Local Variables)
  • 对局部变量再赋值(Reassigning)
  •       变量只在被提炼码区段中使用
         被提炼码之外的代码也使用了这个变量
            a.被提炼码之外未被再使用
            b.之后的代码还使用变量


2.Inline Method

  •  间接性可能带来帮助,但非必要的间接性总是让人不舒服
  •  有一群组织不甚合理的函数,可以将它们都INLINE到一个大型函数中,再从中提炼出组织合理的小函数
  •  如果别人使用太多间接层,使得系统中的所有函数都似乎只是对另一个函数的简单委托

 

3.Inline Temp

  •  一个临时变量,只被一个简单表达式赋值一次,而它妨碍了其他重构手法
  • 用final进行处理

4.Replace Temp With Query

  • 程序以一个临时变量保存某一个表达式的运算结果,将这个表达式提炼到一个独立函数中,将这个临时变量的所有被引用点替换为对新函数的调用
  • 如果把临时变量替换为一个查询式,那么用一个CLASS中的所有函数都可以获得此函数

5. Introduce Explaining Variable

  • 将该复杂表达式的结果放进一个临时变量,以此变量名称来解释表达式用途
  • 在条件表达逻辑中,特别用价值

6.Split Temporary Variable

  • 此方法不使用与集用临时变量:等加,字符串接合,写入STREAM 或者向群集(COLLECTION)添加元素
  • 某个临时变量被赋值超过一次,它既不是循环变量,也不是一个集用临时变量

7.Remove Assignments To Parametes

  • 以一个临时变量取代该参数的位置,在JAVA中不要对参数赋值

8.Replace Method With Method Object

  • 有一个大型函数,其中对局部变量的使用,使你无法采用EXTRACT METHOD。
  • 将这个函数放进一个单独对象中,如此一来局部变量就成了对象内的值域,然后你就可以在同一个对象中将这个大型函数分解为数个小型函数

9.Subsitute Algorithm

  • 将函数本体替换为另一个算法,尽可能分解了原函数
分享到:
评论

相关推荐

    Composing.Software.2019.2.pdf

    3. **容器、函子、列表和流**:这些是函数式编程中常用的抽象数据类型,用于组织和操作数据。 4. **声明式与命令式编程**:比较两种不同的编程风格,强调函数式编程倾向于使用声明式方法来表达意图而非具体步骤。 #...

    Composing Software.zip

    《JavaScript中的函数式编程设计》 函数式编程作为一种编程范式,在现代软件开发中占据了重要的地位,尤其是在JavaScript这种动态类型的编程语言中。本篇将深入探讨JavaScript中的函数式编程概念,包括其核心思想、...

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

    第 6 章:重新组织你的函数(Composing Methods) 第 7 章:在对象之间移动特性(Moving Features Between Objects) 第 8 章:重新组织你的数据(Organizing Data) 第 9 章:简化条件表达式(Simplifying...

    composing-software javascript 2021 by Eric Elliott.zip

    《composing-software javascript functional programming 2021 by Eric Elliott》是一份关于JavaScript和函数式编程的资源,由知名编程作者Eric Elliott创作并更新于2021年。这份资料深入探讨了如何利用JavaScript...

    Composing Programs in Scala

    Scala语言提供的多种抽象,如函数式编程范式、类别理论概念以及monads等,是实现高可组合性的关键所在。 首先,我们要明确什么是可组合性。简单来说,软件的可组合性指的是一旦我们理解了各个部分以及组合规则,...

    composing-methods

    总结来说,Python的“composing methods”涵盖了多种技术,包括方法装饰器、链式调用、策略模式和高阶函数。这些技术都旨在提高代码的灵活性、可读性和可维护性,是Python编程中不可或缺的一部分。通过理解和熟练...

    Pattern-Oriented Analysis and Design_Composing Patterns to Design Software Systems

    Pattern-Oriented Analysis and Design_Composing Patterns to Design Software Systems

    编写程序Composing Programs

    介绍编程和计算机科学之后,本文重点介绍使用Python 3编程语言进行抽象的方法,编程范例以及管理大型程序复杂性的技术。

    CS61A 教材 Composing Programs 的中文翻译.zip

    《Composing Programs》是加州大学伯克利分校(UC Berkeley)CS61A课程的一本经典教材,专注于教授计算机科学的基础知识,特别是编程概念。这本书的中文翻译版本为中文学习者提供了更方便的学习资源,帮助他们理解...

    Python-CyToolzToolz的Cython实现高性能函数式工具

    2. ** 函数组合(Composing)**:`compose`函数可以将多个函数串联起来,形成一个新的复合函数,简化代码结构。 3. ** 迭代器操作**:CyToolz提供了对迭代器的各种操作,如`map`, `filter`, `groupby`, `pluck`等,...

    Composing.Software.2019.2.mobi

    Composing.Software.2019.2

    composing_environ_primer

    《VMM Primer – 组建环境》:深入理解系统级验证环境构建 一、引言与背景 在当今复杂的芯片设计领域,系统级验证已成为确保集成电路功能正确性的关键环节。《VMM Primer – 组建环境》是Synopsys公司为帮助工程师...

    ComposingPrograms

    在"Composing Programs"实践中,我们还会遇到函数式编程的思想,它强调无副作用的纯函数和数据的不可变性。通过使用lambda表达式、列表推导式以及Python的生成器,我们可以写出简洁且易于组合的代码。 总结来说,...

    Image And Article Subject Mix Composing.wmv

    本资源教你如何让图片与文章标混合排版,也特为下面这个论题而作: http://topic.csdn.net/u/20080309/12/a6183159-8b2b-4bbe-9f75-cfb08c5aba6f.html,本资源包括整个过程影片以及源代码,影片大小:21536KB;...

    Java in easy steps Covers Java 9 6th Edition

    在“Composing Functions”章节,作者可能会探讨如何将不同的函数组合起来使用,以及如何利用Lambda表达式来实现函数的组合。 流(Streams)是Java 8引入的一个新的抽象层,用于处理数据集合。它可以被看作是一个...

    Refactoring

    The heart of the book is a catalog of refactorings, organized in chapters on composing methods, moving features between objects, organizing data, simplifying conditional expressions, and dealing with...

Global site tag (gtag.js) - Google Analytics