首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

代码重构(二):重构规则

关于上述这些函数重构的规则更为详细的信息请参考上一篇博客,在此就不做过多的赘述了。 今天这篇博客主要介绍一下重构。在我们写代码时,有些是不规范的,需要重构。...在对进行重构时,也是有一些章法可寻的,本篇博客就结合着相关示例,对重构进行相关的介绍。当然在本篇博客中使用的实例,还是延续上一篇文章的风格,仍然采用Swift语言进行编写。...3.使用函数重构 在使用Move Method重构后,我们看出在BookCustomer中的charge()函数是可以使用Extract Method和Replace Temp With Qurey进行重构的...关于这两个函数重构的规则的具体细节请参见《代码重构(一):函数重构规则(Swift版)》中的介绍。下方截图是对BookCustomer中的charge()函数进行重构后的结果,如下所示: ?...当然,对的细化也是为了减少代码的重复性,以及提高代码的复用性,便于代码的维护。下方将会通过一个实例,对进行提炼。 1.重构前的代码 下方是我们将要进行重构的代码段。

1.2K100
您找到你想要的搜索结果了吗?
是的
没有找到

代码重构重构的 8 个小技巧

就要运用一些重构的技巧,来让代码结构保持整洁,从而让后续的需求扩展更加稳定 1:合理的分配函数 说明:从 OOP 的角度来考虑,如果函数之间频繁的调用,显然适合放在一个对象当中 使用场景:在 A 对象内...无需再重复引入 _interestRate 字段 AccountType 可以根据不同的类型,设置不同的 _interestRate 利率,代码更灵活 总结 不管是搬迁函数,还是搬迁字段也好,它们都是在不断重构的职责和属性...,程序会跟随需求不断变化,没有任何设计是可以保持一成不变的,所以这里的重构方法,不需要等到特定的时间和特定的规划再去进行,重构应该是融入在日常开发当中,随时随地都在进行的 3:拆解大类 说明:随着需求越来越多...然后改用新函数获取 Person 的 Manage Person manage = john.getManage(); 总结 如果 只有少数函数 需要依赖委托关系获取的时候,可以使用 隐藏委托关系 的重构手法来让关系和调用变的简单...,建议使用 增强工具 的方式重构显然更加的合适

67920

页面重构中的组件制作要点

页面重构中的组件制作要点 由 Ghostzhang 发表于 2009-10-20 17:23 在写完前面“模块化”相关的文章后,感觉试图用“模块化”本身去讲什么是“模块化”真是不容易讲得清。...在《页面重构中的模块化思维》中提到了“模块化”的应用是十分广的,而且大家已经对它有了自己的理解,想要重新认识“模块化”是不太容易的,因此决定换一个名。...简单列下做组件时需要注意的几点: 组件需要一个底层的运行环境。特别是对于CSS,就是常说的全站公共样式,包括reset。 确保同一组件在同一底层环境中的效果完整。...组件中的定义需要注意受组件外继承定义的影响。 在使用上面这些定义的时候,应该注意继承性对作用范围中标签的影响。同理,为了减少组件中被外层定义中的有继承性定义的影响,必要时须要在组件中reset。...在做一个组件之前,有几个问题需要先搞清楚,如: 是否需要静态化? 组件有多少种状态? 是否通过脚本程序实现状态的更改? 组件更新的频率? 这些问题对于组件如何实现更优起了很重要的作用。

44920

JavaScript重构技巧 — 函数和

在本文中,我们将介绍一些与清理 JavaScript 函数和有关的重构思想。 不要直接对参数赋值 在使用参数之前,我们应该删除对参数的赋值,并将参数值赋给变量。...使用 method 的次数更多,那么应该把 method 方法移动到 Bar 中, Foo 如果需要在直接调用 Bar 的中方法即可。...如果我们的很复杂并且有多个方法,那么我们可以将额外的方法移到新中。...phoneNumber; } addAreaCode(areaCode) { return `${areaCode}-${this.phoneNumber}` } } 我们可以这样重构...通过这样做,两个只做一件事,而不是让一个做多件事。 总结 我们可以从复杂的中提取代码,这些复杂的可以将多种功能添加到自己的中。 此外,我们可以将方法和字段移动到最常用的地方。

66810

Spring Cloud自动推送配置到Consul配置中心

Consul是一个集配置管理、服务注册和发现于一体的微服务基础组件,它提供的这些功能我们在微服务开发中都用到了。...整个工程依照Spring Boot工程的目录结构创建,在com.consul.pusher包下有四个,其中ConsulApplication的作用就不用说了,它是整个服务的启动。...并且,需要修改数据库连接、ES连接信息的场景大部分是因为当前服务不可用产生的,服务的高可用不应由Consul来维护 重构升级 经过与团队成员讨论,开发配置自动推送功能的初衷有两个: 方便devops...注意:yml文件里如果有空的value值,请用单引号''代替,否则yml解析会报错 (3) 在pom文件里引入consul-pusher公共服务库,consul-pusher库的Consul配置加载在服务启动时自动加载配置到...LoggerFactory.getLogger(this.getClass()); @Value(value = "${kline.host}") private String kLineHost; } 至此,整个工程的重构和使用完成

1.2K20

重构》第七章 - 读后感(重构要点)

上一章大概得学习了一下函数重构的手法,主要有9种。但是平心而论,有多少人还是随心所欲的写代码?所以我们做任何事情的时候还是得静下心来,把它当作一个艺术品去对待,才可能会有质的提升,而我们都提浮躁了。...一般来说本人觉得参数应该是比较少的,如果参数比较多的话,就可以采用第六章代理对象的方式去重构!...3.提炼 如果某个做的事情本应该由两个去做,那么这个就应该进行提炼。提炼的方式也还是要有明确的边界概念。...否则用户本质上就是用户信息和电话这样一个杂糅数据混合着。 4.将内联化 将内联化和提炼是相反的操作,提炼是因为边界不分的原因,而内联化则是在某些情况下,需要那种类杂糅的状况。...8.引入本地扩展 如果需要为服务提供一些额外的函数,但是我们却无法修改这个,那么我们可以创建一个新,使它包含这些额外的函数,让这个扩展品成为源的子类或者包装

20210

用 Typescript + Composition API 重构 Vue 3 组件

同时因为这些既有组件拥有单元测试,我们也将观察这些测试在重构过程中是否仍有效、我们要不要改进它们。...至少经验告诉我们,如果只是进行不改变组件对外行为的单纯重构,是不用改变测试的;而如果需要的话,说明你的测试并不理想,它们关注了实现细节。 1. 既有组件 我们将重构 FilterPosts 组件。...断言 filter 的类型并重构 Filter 组件 从最简单的组件开始并逐步推进,是很好的方式。...下面来着手 NewsPost 组件重构。 3....所有测试通过,重构完成。 5. 讨论 值得注意的一点是我完全没为此次重构改变原先的单元测试。这是因为测试聚焦于组件公开行为,而非内部实现逻辑。好处就在于此。

1.4K30

关于 Element 组件的穿梭框的重构

很多公司的项目,在使用框架很好能解决 UI 与数据状态同步的难题,但随着公司业务发展,数据量的庞大以及数据处理越来越复杂,官方组件也难以解决的同时,就不得不自己重写特定组件 公司里的系统确实业务越来越多...,Leader 要求使用 vue 重构系统,当然也是一个一个页面地重构,防止新页面出错,旧页面有补救的方案。...css 样式 拆分组件:父组件包含仓库和省市区框 三个区域框和一个已选框相似,复用一个组件 transfer,放在省市区框父组件中 省级 transfer、市级 transfer、区级 transfer...数据 父组件从数据中获取省级数据传递到子组件 transfer 展示出来 当选中的某个省,则传递对应省级 id 到父组件,根据 id 查找对应的市级并过滤,并且使用 ref 控制市级的 transfer...组件的 father 属性,就是在市级 transfer 组件里也有对应的省级对象 多选情况,只保留最后选择的父级(省级/市级)查找出对应的子级(市级/区级) 市级和省级组件的 father 对象是

7.4K40

django 入门:通用视图重构视图

:环境及项目搭建》 《django入门:数据模型》 《django入门:视图及模版》 《django入门:Admin管理系统及表单》 终于到最后一部分了,这部分我们将通过 django 自带的通用视图替换之前写的视图函数...,对视图进行重构 2 利用 django 通用视图创建视图 1.创建视图 import markdown from django.shortcuts import render from django.views.generic...post_list = Post.objects.all() return render(request, 'blog/home.html', locals()) # 通过 ListView 来进行修改...Post.objects.filter(category=category) return render(request, 'blog/home.html', locals()) # 通过 ListView 进行修改...详情界面 有时候如果我们的数据过多,同一页加载全部数据,用户的体验肯定不好,我们通过通用视图来创建分页,这边为了方便显示,我们会设置每页加载一篇文章 3 通过 ListView 创建分页 1.指定

86020

Flutter容器组件

Flutter容器组件 容器Widget与布局Widget都用作用户界面设计,两者的不同在于: 布局Widget一般都需要接收一个widget数组(children),他们直接或间接继承自(或包含...布局Widget是按照一定的排列方式来对其子Widget进行排列;而容器Widget一般只是包装其子Widget,对其添加一些修饰(补白或背景色等)、变换(旋转或剪裁等)、或限制(大小等)。...position:此属性决定在哪里绘制Decoration,它接收DecorationPosition的枚举类型,该枚举有两个值: background:在子组件之后绘制,即背景装饰。...foreground:在子组件之上绘制,即前景。 其中的属性this.decoration要求传入抽象Decoration,常用其子类BoxDecoration。...4.Container(组合容器) 4.1 Container介绍 Container是一个组合容器,它是DecoratedBox、ConstrainedBox、Transform、Padding、

3.8K40

React组件

React组件是一种使用ES6语法定义的组件形式,它是React中最早引入的组件形式。...React组件特点React组件具有以下特点:内部状态:组件可以通过state属性来管理组件的内部状态,使组件能够根据状态的变化进行渲染。...生命周期方法:组件具有生命周期方法,用于处理组件的生命周期事件,例如组件的初始化、挂载、更新和卸载等。实例化:每个组件都是一个的实例,可以通过构造函数和new关键字来创建。...创建组件创建一个组件需要定义一个继承自React.Component的JavaScript,并实现render方法来定义组件的结构和内容。...通过render方法,我们定义了组件的结构和内容。使用组件使用组件与使用函数式组件类似,只需将组件名作为标签使用即可。

33230

照方抓药 - 重构 React 组件的实用清单

主要概念 重构:在不改变外部行为的前提下,有条不紊地改善代码 依赖:A 组件的变化会影响 B 组件,就是 B 依赖于 A 耦合:耦合度就是组件之间的依赖性,要尽可能追求松耦合 副作用:除了返回值,还会修改全局变量或参数...纯函数:没有副作用,并针对相同的输入有相同的输出 Q: 为什么要优化、重构?...A: 时过、境迁、物是、人非,代码必然变得难以理解 Q: 什么时候需要重构?...,改为 props 回调 参考以上几步,反向检查是否直接 依赖/调用 了其他的实例、方法等 是否直接调用了其他 组件/ 的静态方法,改为 props 注入 在 propTypes 中写清所有...编写测试 针对重构后的组件,可以轻易编写单元测试了 若编写测试仍遇到问题,重复检查以上所有步骤 重构案例:秒杀商品详情弹窗 用一个小的例子来实践这份清单,虽然不可能每次重构都把上面的 checkbox

1.5K20

Form表单组件与Map地图组件

笔记内容:Form表单组件与Map地图组件 笔记日期:2018-02-04 ---- form之switch组件 switch组件是一个开关选择器,wxml示例代码如下: <view class='...checked属性设置该switch<em>组件</em>是否为选中状态,true为选中,false为不选中,不设置该属性的话默认为false color属性设置该switch<em>组件</em>的颜色 样式代码如下: .container...max属性设置该slider<em>组件</em>的最大值 step属性 设置该slider<em>组件</em>的步长,也就是每拖动一次就递增多少个数值。...form表单<em>组件</em>的官方说明文档如下: https://mp.weixin.qq.com/debug/wxadoc/dev/component/form.html ---- map<em>组件</em> map<em>组件</em>是用来实现地图功能的...注:map<em>组件</em>的一些功能在模拟器上不能完全显示出来,所以研究该<em>组件</em>的时候,最好使用真机来调试。

1.3K30

vue + typescript 组件教程

概览 Vue 组件是一个库,可让你使用的语法制作 Vue 组件。例如,我们可以使用 Vue 语法制作一个计算器组件: 在 src/components 新建 Counter.vue。...您可以简单地用样式的组件替换组件定义,因为它等同于组件定义的普通options对象样式。 通过以样式定义组件,不仅可以更改语法,还可以利用某些ECMAScript语言功能,例如继承和装饰器。...组件 数据 我们可以这样初始化 data 数据: 在 About 组件中,定义 message 变量,在模板中使用 {{}} 插值。...扩展和混合 扩展 您可以将现有的组件扩展为本机继承。...} } 组件警告 Vue组件通过实例化底层的原始构造函数,将类属性收集为Vue实例数据。尽管我们可以像本地方式那样定义实例数据,但有时我们需要知道其工作方式。

1.5K10

Lemonj: CSS 的自动化重构工具

于是,在我们的讨论之下,我借助了在编写 Coca 的经验,设计和验证了自动化重构的可能性。由我的同事完成了 TypeScript 的 CSS 自动化重构工具:Lemonj —— 名字是我取的 ??。...Lemonj GitHub:https://github.com/twfe/lemonj Lemonj 是一个面向 CSS/LESS/SCSS 的分析、坏味道检查和自动化重构工具。...它们都是一键式的上传一个 CSS 文件,从中提取语法树,转换到新的形式上。而要实现不同预处理器的转换,你可能还需要多个转换工具。而且它们只能在一个文件上修改,而你的代码是分散在代码库中。...Lemonj 自动化重构 CSS 工具。也是分析语法树,从中提取文件的信息,但不能直接转换到新的形式上。...3.执行 lemonj refactor _fixtures 对代码进行自动化重构。就能将上一步中的代码,进一步地修改到所有的代码文件中。 嗯,重构就是如此的简单。

48020
领券