看见一个过长的函数或者需要一段注释才能让人理解的代码,可以考虑将这段代码放进一个独立函数中。

创造一个新的函数,根据这个函数的意图来对它命名(以它“做什么”来命名,而不是以它“怎么做”命名)。

需要重构的代码如下(代码并不复杂,只是为了说明方法):

function print () {var num = 1;console.log('*****************');console.log('******Hello******');console.log('*****************');while(num < 10){num += 2;}console.log('num:', num);
}

示例:

1、无局部变量

可以轻松提炼打印“Hello World”的代码。只需要剪切、粘贴、再插入一个函数调用的动作即可。

function print () {var num = 1;printHello();while(num < 10){num += 2;}console.log('num:', num);
}function printHello () {console.log('*****************');console.log('******Hello******');console.log('*****************');
}

2、有局部变量

  • 只读取,并不修改局部变量。此时可以简单地将局部变量作为参数传给目标函数。
function print () {var num = 1;printHello();while(num < 10){num += 2;}printNum (num);
}function printHello () {console.log('*****************');console.log('******Hello******');console.log('*****************');
}function printNum (num) {console.log('num:', num);
}

  • 对局部变量赋值

  1) 只在被提炼的代码中使用,可以将这个临时变量声明移到被提炼代码中,然后一起提炼出去。(这个很容易理解)

  2) 被提炼代码之后的代码还使用了这个变量,需要在提炼的代码中返回改变后的值。

function print () {printHello();var result = getNum();printNum (result);
}function printHello () {console.log('*****************');console.log('******Hello******');console.log('*****************');
}function getNum () {var num = 1;while(num < 10){num += 2;}return num;
}function printNum (result) {console.log('num:', result);
}

不断学习,不断进步~~~

转载于:https://www.cnblogs.com/happypayne/p/8379638.html

《重构-改善既有代码的设计》学习笔记----Extract Method(提炼函数)相关推荐

  1. 重构-改善既有代码的设计读书笔记

    1.基本重构 1.1 提炼函数(Extract Function) 将意图和实现分开,如果需要花时间浏览一段代码才能弄清它到底在干什么,那么就应该将其提炼到一个函数中,并根据它所做的事为其命名. 1. ...

  2. 重构-改善既有代码的设计 读书笔记

    这本书真的很赞,有种醍醐灌顶的感觉,一如既往,我还是大致分析一下这本书的思想,而不是单纯的文字摘录. 首先,无论是类还是方法本身,都可以视作对象.重构则是研究怎么降低耦合度的一种技术,同时我还是很支持 ...

  3. 【《重构 改善既有代码的设计》学习笔记2】重构原则

    [<重构 改善既有代码的设计>学习笔记2]重构原则 本篇文章的内容来自<重构 改善既有代码的设计>一书学习笔记整理并且加上自己的浅显的思考总结! 上一篇通过一个简单的例子体验了 ...

  4. 【《重构 改善既有代码的设计》学习笔记1】重构:第一个案例

    [<重构 改善既有代码的设计>学习笔记]重构:第一个案例 本篇文章的内容来自<重构 改善既有代码的设计>一书学习笔记整理并且加上自己的浅显的思考总结! 一.简单的例子 一个影片 ...

  5. 《重构-改善既有代码的设计》-第1例:租赁影片(2)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 上接  重构-改善既有代码的设计-第1例:租赁影片(1) 2  运用多态取代与价格相关的条件逻辑 2 ...

  6. 《重构-改善既有代码的设计》-第1例:租赁影片(1)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 买了<重构 - 改善既有代码的设计 >一书,一直没有好好看,大致过了下也觉得只是有点点印 ...

  7. 实践提高《重构改善既有代码的设计第2版》PDF中文+PDF英文+对比分析

    重构是编程的基础,是在不改变外部行为的前提下,有条不紊地改善代码.编程爱好者都知道,Martin Fowler 的<重构:改善既有代码的设计>已经成为全球有经验的程序员手中的利器,既可用来 ...

  8. 不要写完代码就束之高阁,适当地优化代码结构,能够为以后的开发带来许多方便,这《重构:改善既有代码的设计》就向你介绍了这方面的技巧,说得非常详细。...

    "不要写完代码就束之高阁,适当地优化代码结构,能够为以后的开发带来许多方便,这<重构:改善既有代码的设计>就向你介绍了这方面的技巧,说得非常详细." "程序几 ...

  9. 重构—改善既有代码的设计

    概述 1.1 参考资料 <重构-改善既有代码的设计>读后总结 <重构改善既有代码的设计> 22种代码的坏味道,一句话概括 1.2 何谓重构 首先要说明的是:视上下文不同,重构的 ...

  10. PHP 杂谈《重构-改善既有代码的设计》之二 对象之间搬移特性

    思维导图 索引: Ø Move Method(搬移函数) Ø Move Field (搬移值域) Ø Extract Class (提炼类) Ø Inline Class (将类内联化,就是把当前的类 ...

最新文章

  1. 一文全览,AAAI 2020上的知识图谱
  2. Web常见约定规范(精选)
  3. Kaggle债务违约预测冠军经验分享
  4. kafka副本注意点
  5. oracle index contention,Index Contention等待
  6. WIN10 下 PHP7 中文乱码的解决办法
  7. 蓝桥杯试题 算法提高 数组求和
  8. java过时_Java 语言的几个缺陷之四: 过时的 JavaBean
  9. 时尚达人必备的潮流壁纸桌面!
  10. 「倾心整理~」数据库系统概论—第5章(数据库完整性)
  11. 苹果Mac 3D 数字绘画工具:Substance 3D Painter
  12. Java 正则表达式的用法和实例
  13. netty4.1 “File does not contain valid private key” 解决方法
  14. 什么是ANC降噪技术?耳机工厂来告诉你
  15. CorelDRAW2022(CDR2022-64位),Win7 、Win10通用\免激活注册中文版安装图文教程
  16. 一周搜索热点20170528
  17. 社区说|Flutter 主流状态管理框架 provider get 分析
  18. Ubuntu 18.04 WPS导出pdf部分线条变粗(okular的小问题)
  19. Java--实现简单的音频(mp3格式)播放
  20. RabbitMQ高级特性-惰性队列

热门文章

  1. ASP.NET MVC:WebViewPage.cs
  2. eclipse tomcat maven热部署
  3. 使用 IntraWeb (21) - 基本控件之 TIWTabControl
  4. 再说一次,别去外包!
  5. 分布式服务的幂等性设计,值得学习!
  6. 太傻了!下次二面再回答不好“秒杀系统“设计原理,我就捶死自己...
  7. 来自微信官方:微信支付跨平台软件架构首次曝光
  8. Android Studio Tips -- 提取方法
  9. linux+shell+整数计算,Shell expr命令进行整数计算的实现
  10. pycharm pip安装_Python从入门到大师教程 | 一、搭建Python环境和安装Pycharm