重新组织函数--Replace Method with Method Object(以函数对象取代函数)

STM32F407开发入门:Keil环境搭建与LED点灯实战 嵌入式开发中,GPIO控制是微控制器最基本的外设操作,通过时钟使能和寄存器配置实现引脚电平控制。STM32F407基于Cortex-M4内核,其GPIO挂载在AHB1总线,需先使能时钟再配置模式。掌握这一原理对后续外设驱动开发至关重要,广泛应用于工业控制、物联网设备等场景。本文以野火霸天虎开发板为例,详细讲解Keil MDK环境搭建、芯片包配置、工程新建及LED点灯全流程,并汇总常见问题与避坑经验,帮助初学者快速上手STM32开发。 阅读详情

你有一个大型函数,其中对局部变量的使用使你无法采用Extra Method()

将这个函数放进一个单独对象中,如此一来局部变量就成了对象内的字段。然后你可以在同一个对象中将这个大型函数分解为多个小型函数。

 Class Order...

 double price(){

double primaryBasePrice;

double secondaryBasePrice;

double tertiaryBasePrice;

//long computation

............

}


动机:

如果一个函数中局部变量泛滥成灾,那么想分解这个函数是非常困难的。Replace Temp with Query 可以助你减轻这一负担,但有时候你会发现根本无法拆解一个需要拆解的函数。这种情况下,你应该把手伸进工具箱的深处,祭出函数对象(Method Object)这件法宝。

Replace Method with Method Object会将所有局部变量都变成函数对象的字段。然后你就可以对这个新对象使用Extract Method创造出新的函数,从而将原本的大型函数拆解变短










Quartus II设计程序计数器PC、由PC产生ROM的地址(含仿真) 设计程序计数器PC,正常工作模式下,系统启动,设置PC的初始值,之后每来一个clk,PC的输出值应该增加1;当程序发生跳转时,PC的值应该发生改变,级将跳转的地址值赋进行输出。PC后端连接一个ROM,由PC来产生ROM的地址,仿真进行验证。 阅读详情

相关推荐

LabVIEW+数据库应用系列保姆级教程,第一篇数据库连接

目录LabVIEW连接数据库的方法连接MySQL连接Oracle,SQL Server,Access等 LabVIEW连接数据库的方法 1、创建udl(Universal Data Link)是通用数据连接文件。界面操作,简单快捷。 2、编写连接字符串。需要熟悉连接字符串的结构,容易出错。 3、其他… 本教程教你使用第1种方法,也是最简单、最常用的方法。 连接MySQL 1、在MySQL Installer内安装MySQL Connector/ODBC,建议安装32位(X86),如下图: 2、创建ODBC

wwplh5520370的博客 1万+

代码重构(一)-用函数对象代替函数(replace method with method object)

用函数对象代替函数(replace method with method object)

DAMMXX的博客 776

SAP Business One自定义表与字段实战:从零构建企业专属数据模型

本文详细介绍了如何在SAP Business One中创建自定义表与字段,从零构建企业专属数据模型。通过实战案例和避坑指南,帮助用户掌握业务适配、流程优化和权限隔离等关键技巧,提升系统灵活性和数据管理效率。特别适合需要扩展标准功能的SAP Business One用户。

weixin_28730927的博客 362

重构函数-Replace Method with Method Object以函数对象取代函数八

你有一个大型函数,函数中使用了许多的局部变量,使你无法釆用手法重构,那么使用以函数对象取代函数手法将处理函数中的局部变量,然后在对函数做重构。

Bruce小鬼 564

RK3588部署Zipformer模型问题总结

本文分享了在RK3588嵌入式设备上部署小米Zipformer语音识别模型时遇到的问题及解决方法。主要遇到两个问题:1)在rknn_model_zoo例程编译时出现静态库版本不兼容,通过重新编译kaldi-native-fbank库并修改链接路径解决;2)sherpa-onnx编译时提示缺少portaudio库,通过修改编译脚本启用相关宏定义后成功编译。最终成功在RK3588上运行Zipformer模型,测试结果显示该模型具有较好的识别效果和实时性(RTF=0.22),验证了其在边缘设备上的适用性。

pkyang2004的博客 2146

【打卡帖】7日玩转ESP32——(第4日) 串口的输入输出

【福利帖】7日玩转ESP32——(第4日) 串口的输入输出

1377

1.7 以函数对象取代函数

【1】源代码 1 // 重构前 2 class Account 3 { 4 public: 5 // 以下函数没有实际意义,为了演示使用过多的局部变量 6 int gamma(int inputVal, int quantity, int yearTodate); 7 { 8 int importantValue1 = (...

weixin_34061555的博客 209

Android Framework WMS面试题及参考答案

什么是 WindowManagerService(WMS)?它的作用是什么? WindowManagerService(WMS)是 Android 系统中非常重要的一个系统服务。它运行在系统进程(system_server 进程)中。 从本质上来说,WMS 是 Android 窗口管理系统的核心。它负责管理系统中的所有窗口,包括应用程序窗口、系统窗口(如状态栏、导航栏)等。 它的主要作用有很多。首先是窗口的创建和销毁。当一个应用请求创建一个窗口时,WMS 会协调各个模块完成窗口的创建工

大模型大数据攻城狮的专栏 2164

重构——8以函数对象取代函数(Replace Method with Method Object)

以函数对象取代函数(Replace Method with Method Object) 有一个大型函数,其中对局部变量的使用使你无法采用Extract Method。将这个函数放进一个单独的对象里中,如此一来局部变量就成了对象内的字段,然后你就可以在同一个对象中将这个大型函数分解为多个小型函数 一、动机 1、小函数优美动人,只要将相对独立的代码从大型函...

weixin_33922670的博客 237

21天学会PCIe专栏(4.3)--PCIe配置方法

通过本节的学习,你应该对PCIe配置方法有了更深入的了解。软件配置方法包括直接访问和间接访问,可以通过特定的I/O指令或系统调用进行配置。硬件配置方法包括通过BIOS/UEFI设置和跳线设置,可以根据需要修改PCIe设备的配置参数。

xiaoheshang_123的博客 722

论文复现5:UMI Universal Manipulation Interface

UMI 采用手持式夹具,加上精心的界面设计,可实现便携式、低成本和信息丰富的数据收集,以进行具有挑战性的双手和动态操作演示。配备这些功能后,UMI 框架解锁了新的机器人操作功能,只需更改每个任务的训练数据,即可实现零样本可推广的动态、双手、精确和长视野行为。我们通过全面的现实世界实验展示了 UMI 的多功能性和有效性,其中通过 UMI Zeroshot 学习的策略在对不同的人类演示进行训练时可以推广到新的环境和对象。项目主页:https://umi-gripper.github.io/

github_38060285的博客 1976

java重构学习7:以函数对象取代函数(Replace Method with Method Object)

本系列来自《java 重构改善既有代码的设计》一书 当对局部变量的引用无法使用Extract Method的时候,可以考虑将这个函数放入到一个单独的对象中去,如此一来,局部变量就变成了对象的字段,然后就可以在同一对象中将这个大型函数分解成小型函数。

风的专栏 1011

Node-RED系列(二二):使用dashboard搭配echarts制作漂亮的面板

在node-red中dashboard 是一个很常用的模块,其中它有一个chart节点可以用来制作一些图表,比如柱状图,折线图,饼图,但其中的图表并不是很美观,而且可配置项非常的少。 于是就有很多小伙伴找我做一套比较好看的图表面板,在对比了一下几个图表库,我选中了echarts。 不仅美观大方,而且非常容易集成,配置。下面先来看一下我做的效果。这里是直接做了四个折线图,第一个折线图有动态效果,第二个折线图是一个多线条的折线图,第三个折线图是在一个图例显示两个折线图。第二第三都可以用于数据对比。 第四个折线

知无涯 1万+

重新组织你的函数之八 :Replace Method with Method Object(以函数对象取代函数)

你有一个大型函数,其中对局部变量的使用,使你无法釆用 Extract Method。 将这个函数放进一个单独对象中,如此一来局部变量就成了对象内的值域(field) 然后你可以在同一个对象中将这个大型函数分解为数个小型函数。   class Order...    double price() {    double primaryBasePrice;        double

yuwei629的专栏 811

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Replace Parameter with Method(以函数取代参数)

动机 如果函数可以通过其他途径获得参数值,那么它就不应该通过参数取得该值。过长的参数列会增加程序阅读者的理解难度,因此我们应该尽可能缩短参数列的长度。 缩减参数列的办法之一就是:看看参数接收端是否可以通过与调用端相同的计算来取得参数值。如果调用端通过其所属对象内部的另一个函数来计算参数,并在计算过程中未曾引用调用端的其他参数,那么你就应该可以将这个计算过程转移到被调用端内,从而去除该项参数。如果你所调用的函数隶属另一个对象,而该对象拥有调用端所属对象的引用,前面所说的这些也同样适用。 但是,如果参数值的计算

q351477的博客 548

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

2、重新组织函数

1、Extract Method(提炼函数)       1、无局部变量       2、有局部变量         1、被提炼代码段只是读取变量的值,并不修改他们。           简单传给目标函数         2、被提炼代码段对局部变量再赋值           1、如果发现源函数的参数被赋值,使用Remove Assignments to Para

姬世霆的专栏 1037

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

使用内部类完成"Replace Method with Method Object"(以函数对象取代函数)重构

“Replace Method with Method Object”(以函数对象取代函数)是一种重新组织函数(也就是Java中的方法,在本文中函数和方法这两个词表示的意思相同)的重构方法。其做法是将函数放进一个单独的对象当中,使用这个单独对象的值域(filed)来替代原函数中的局部变量。这样做的好处是对于一个拥有较多较复杂的局部变量的函数来说,进行“extract method”重构变得...

yongliang567的博客 213

重新组织函数

重新组织函数 大多数问题都源于Long Methods,因为他们往往包含了大量的信息,而这些信息有被函数中错综复杂的逻辑所掩盖,不易甄别。所以重新组织函数中最主要的重构手法就是extract method。在使用extract method的手法时一般需要用到处理参数的一些手法,如:replace temp with query,split temporary varaibable和replac...

iteye_4524的博客 254

Replace Parameter with Methods (以函数取代参数)

Summary: 对象调用某个函数,并将所得结果作为参数,传递给另一个函数。而接受该才是的函数本身也能够调用前一个函数。让参数接受者去除该项参数,并直接调用前一个函数 动机: 如果函数可以通过其他途径获得参数值,那么它就不应该通过参数取得该值。过长的参数列会增加程序阅读者的理解难度...

chuilizhan6639的博客 226

《Refactoring》笔记 2: 重新组织函数

1、Extract Method(提炼函数) 将一段代码放进一个独立函数中,并用函数名解释该函数的用途。通常当你想给一段代码加注释来表明他的用途的时候,就可以思考是否可以 Extract Method。 动机:首先,如果每个函数的粒度都很小,那么函数之间彼此复用的机会就更大;其次,这会使高层函数码读起来就像一系列注释;再者,如果函数都是细粒度,那么函数的覆写会更容易些。 2、Inline Method(将函数内联化) 如果一个函数函数,其内部代码和函数名称同样清晰易读,那就应该去掉这个函数,直接

DAI_JICHEN的博客 406

《重构》读书笔记(一)

前几天,从同事那里借来Matin Fowler的《重构》一书,看得我很是过瘾。尽管看后印象颇深,但要作到过目不忘是不可能的,故将书中自己认为重要的东西记录下来。俗话说的好:好记性不如烂笔头。注:很多直观的重构方法没有做解释,从其名字就可以猜出其用法。重新组织你的函数==========================================================1.Extract

大熊专栏 1016

重构:重新组织函数(《重构:改善既有代码的设计》第六章笔记)

一、Extract Method(提炼函数) 如果你有一段代码可以被组织在一起并独立出来,将这段代码放进一个独立函数中,并让函数名称解释该函数的用途。 做法: 创造一个新函数,根据这个函数的意图来给它命名(以它「做什么」来命名, 而不是以它「怎样做」命名)。 将提炼出的代码从源函数(source)拷贝到新建的目标函数(target)中。 仔细检查提炼出的代码,看看其中是否引用了「作用域...

weixin_38384296的博客 431

[死磕 Spring 10/43] --- IOC 之解析 bean 标签:meta、lookup-method、replace-method

参考文章: https://www.cmsblogs.com/article/1391375341074911232 [死磕 Spring 10/43] — IOC 之解析 bean 标签:meta、lookup-method、replace-method 定位 本编文章 3/5 BeanDefinitionReader , XmlBeanDefinitionReader.loadBeanDefinitions() 介绍 正文 在上篇博客【死磕Spring】----- IOC 之

狗剩的专栏 407

【死磕 Spring】—– IOC 之解析 bean 标签:meta、lookup-method、replace-method

原文出自:http://cmsblogs.com 在上篇博客【死磕Spring】----- IOC 之解析 Bean 标签:BeanDefinition中已经完成了对 Bean 标签属性的解析工作,这篇博文开始分析子元素的解析。完成 Bean 标签基本属性解析后,会依次调用 parseMetaElements()、parseLookupOverrideSubElements()、parseRe...

chenssy 的技术博客 2836

spring-core 源码学习-IoC 之解析 <bean> 标签:meta、lookup-method、replace-method(十)

spring-core 解析 标签:meta、lookup-method、replace-method1. meta 子元素1.1 addMetadataAttribute1.2 getAttribute2. lookup-method 子元素2.1 示例2.2 parseLookupOverrideSubElements3. replace-method 子元素3.1 示例3.2 parseReplacedMethodSubElements4. 小结 完成 bean 标签的基本属性解析后,会依次调用 B

sunchuanwen1111的博客 226

重构笔记(二)——重构方法

第六章重新组织函数 本章的重构主要是针对函数进行的,假设原函数为A,原类为A,新函数和新类为B。在程序中,最麻烦的是long method,通过extract method分解函数,如果分解时,发现变量不好处理,使用 splict temporary variable处理赋值多次问题;使用replace temp query减少变量数量;如果实在搞不定,就是用 replace metho

dananhai381的专栏 985
上一篇: 重新组织函数--Split Temporary Variable(分解临时变量)
下一篇: 重新组织函数--Substitute Algorithm(替换算法)
HDPCOMEON
博客等级 码龄15年 1粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值