C# 提取方法重构】的更多相关文章

引用:https://msdn.microsoft.com/zh-CN/library/0s21cwxk.aspx “提取方法”是一项重构操作,提供了一种从现有成员中的代码段创建新方法的便捷方式. 使用“提取方法”,可以通过从现有成员的代码块中提取一组代码来创建新方法.提取出的新方法包含所选代码,而现有成员中的所选代码被替换为对新方法的调用. 通过将代码段变为其自己的方法,可以快速而准确地重新组织代码,以获得更好的重用性和可靠性. “提取方法”有以下优点: 通过强调离散的可重用方法鼓励最佳的编码…
这个重构是一种元重构(meta-refactoring),它只是不停地使用提取方法重构,直到将一个大的方法分解成若干个小的方法.下面的例子有点做作,AcceptPayment方法没有丰富的功能.因此为了使其更接近真实场景,我们只能假设该方法中包含了其他大量的辅助代码. 下面的AcceptPayment方法可以被划分为多个单独的方法. public class CashRegister { public CashRegister() { Tax = 0.06d;} private Double T…
重构是在编写代码后在不更改代码的外部行为的前提下通过更改代码的内部结构来改进代码的过程. 一.何时需要重构 1.代码中存在重复的代码: 如果类中有重复的代码块,需将其提炼出一个新的独立方法,如果是不同类中具有相同的代码,将其提炼成一个新类. 2.过大的类和过长的方法: 过大的类往往是类抽象不合理的结果,类抽象不合理将降低代码的复用率.当看到一个过长的方法时,需要想办法将其划分为多个小方法. 方法中的代码行数越多,则方法越难理解.我们推荐每个方法中只包含 20-25 行代码.但有些人说 1-10…
代码重构与单元测试(一) 代码重构与单元测试--测试项目(二) 代码重构与单元测试--"提取方法"重构(三) 代码重构与单元测试--重构1的单元测试(四) 代码重构与单元测试--对方法的参数进行重构(五) 代码重构与单元测试--将方法移到合适[依赖]的类中(六)     七.重构4:使用"以查询取代临时变量"再次对Statement()方法进行重构 1. 经过了之前几篇文章的重构后,Customer中的statement()方法的具体代码,如下图所示.在计算每部电影…
在应用程序框架实战十四:DDD分层架构之领域实体(基础篇)一文中,我介绍了领域实体的基础,包括标识.相等性比较.输出实体状态等.本文将介绍领域实体的一个核心内容——验证,它是应用程序健壮性的基石.为了完成领域实体的验证,我们在前面已经准备好了验证公共操作类和异常公共操作类. .Net提供的DataAnnotations验证方法非常强大,Mvc会自动将DataAnnotations特性转换为客户端Js验证,从而提升了用户体验.但是客户端验证是靠不住的,因为很容易绕开界面向服务端提交数据,所以服务端…
<object_c 编程之道书> <iOS 7 UI Transition Guide> iOS开发指南:从零基础到App Store上架[国内第一本iOS架构设计图书,涵盖iOS平台架构设计.测试驱动开发.性能优化.版本控制和程序调试等内容 ] http://book.2cto.com/201307/26992.html 试读地址 NetBeans IDE5.5专家编程/Sun公司核心技术丛书 本书为:NetBeans IDE和企业附加软件的功能提供了全面的指南.本书涉及许多主题…
DDD分层架构之领域实体(验证篇) 在应用程序框架实战十四:DDD分层架构之领域实体(基础篇)一文中,我介绍了领域实体的基础,包括标识.相等性比较.输出实体状态等.本文将介绍领域实体的一个核心内容——验证,它是应用程序健壮性的基石.为了完成领域实体的验证,我们在前面已经准备好了验证公共操作类和异常公共操作类. .Net提供的DataAnnotations验证方法非常强大,Mvc会自动将DataAnnotations特性转换为客户端Js验证,从而提升了用户体验.但是客户端验证是靠不住的,因为很容易…
序号 所属类别 快捷键名称 快键键方式 备注 所属平台 1 查询类 search everywhere double shift    idea 2 全文搜索 ctrl + H   通用 3 打开资源 ctrl+shift+r   通用 4 快速outline ctrl+o   通用 5 快速转换编辑器 ctrl+e 在打开的编辑器之间浏览.使用ctrl+page down或ctrl+page up可以浏览前后的选项卡 通用 6 快速进入实现类的实现方法 ctrl + T    通用 7 操作类…
Visual Studio Code v1.17发布 欢迎来到2017年9月发行的Visual Studio代码.在这个版本中有一些重要的更新,我们希望你会喜欢,一些关键的亮点包括: macOS Touch Bar支持 - Touch Bar操作,用于导航和调试. 源代码折叠改进 - 折叠区域标记和离线语言块. 集成终端性能 - 终端渲染速度高达45倍. 自动导入建议 - 编码时请参阅模块和路径导入建议. 调试显示源位置 - 轻松从Debug Console导航到源代码. 正则表达式和格式字符串…
重构来自于Martin Fowler的重构目录.你可以在这里找到包含简介的原始文章.  在我看来,这是一个比较罕见的重构,但有时却终能派上用场.当你尝试进行提取方法的重构时,需要引入大量的方法.在一个方法中使用众多的本地变量有时会使代码变得丑陋.因此最好使用提取方法对象这个重构,将执行任务的逻辑分开 public class OrderLineItem { public Double Price;}public class Order { private List<OrderLineItem>…
我们要介绍的重构是提取方法.这个重构极其简单但却大有裨益.首先,将逻辑置于命名良好的方法内有助于提高代码的可读性.当方法的名称可以很好地描述这部分代码的功能时,可以有效地减少其他开发者的研究时间.假设越少,代码中的bug也就越少.重构之前的代码如下: ) { for(Double discount : Discounts) subTotal -= discount;} Double tax = subTotal * 0.065d;subTotal += tax; return subTotal;…
理解:经常写的代码中,有一些计算逻辑比较复杂的方法,写下来一个很长很长的方法,我们可以把这个方法,根据功能,分解成单独的几个小方法.这样做不仅能够增加代码的可维护性,而且增加了易读性. 详解: 重构前代码: public class Receipt { private IList<decimal> Discounts { get; set; } private IList<decimal> ItemTotals { get; set; } public decimal Calcul…
阅读目录: 1.开篇介绍 2.单元测试.测试用例代码重复问题(大量使用重复的Mock对象及测试数据) 2.1.单元测试的继承体系(利用超类来减少Mock对象的使用) 2.1.1.公用的MOCK对象: 2.1.2.公用的MOCK行为: 2.1.3.公用的MOCK数据: 3.LINQ表达式的重构写法(将必要的LINQ写成普通的Function穿插在LINQ表达式中) 4.面向特定领域的单元测试框架(一切原则即是领域驱动) 4.1.分散测试逻辑.日志记录(让测试逻辑可以重组,记录形式为领域模型) 4.…
定义 重构的定义:在不改变软件可观察行为的前提下,改善其内部结构. 其中,不改变软件行为,是重构最基本的要求.要想真正发挥威力,就必须做到“不需了解软件行为”. 如果一段代码能让你容易了解其行为,说明它还不是那么迫切需要被重构. 需要重构的代码,你只能看到其中的“坏味道”,接着选择手段消除这些“坏味道”,然后才有可能理解他的行为. 构建测试体系 确保每个类每个方法都有对应的测试代码.一套测试就是一套BUG检测器,能够大大缩减查找BUG所需时间. 编写测试代码最有效的时机,实在开始编程以前.能使你…
[.net 面向对象编程基础] (14) 重构 通过面向对象三大特性:封装.继承.多态的学习,可以说我们已经掌握了面向对象的核心.接下来的学习就是如何让我们的代码更优雅.更高效.更易读.更易维护.当然了,这也是从一个普通程序员到一个高级程序员的必由之路.就看病一样,普通医生只能治标,高级医生不但看好病,还能除病根. 1.什么时重构? 重构(Refactoring)就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量.性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性.…
理解:如果一个功能,里面比较复杂,代码量比较多,我们就可以把这个功能分解成多个小的method,每个方法实现该功能的一个小小的部分,并且方法命名成容易理解,和方法内容相关的名称,更有助于维护和可读性提高. 详解: 重构前代码: using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; namespace ReflectorDemo…
理解:本文中的“提取方法对象”是指当你发现一个方法中存在过多的局部变量时,你可以通过使用“提取方法对象”重构来引入一些方法,每个方法完成任务的一个步骤,这样可以使得程序变得更具有可读性. 详解:如下代码所示,Order 类中的Calculate方法要完成很多功能,在之前我们用“提取方法”来进行重构,现在我们采取“提取方法对象”来完成重构. 重构前代码: using System; using System.Collections.Generic; using System.Linq; using…
可能是我们共同的强迫症,不要说看到,就算想到太多的try-catch也很难接受. 于是,开始了一些尝试,这些尝试都算是思维的锻炼.场面的见识.经验的积累. Version1 —— 原始版本 一开始,在ConcreteService中,拥有了太多的try-catch,而影响码字的兴趣. 代码 原始代码 /// <summary> /// 契约 /// </summary> public interface IUpdateManyManyThingContract { bool Upd…
转: 最常用的重构指导 参考:http://www.cnblogs.com/KnightsWarrior/archive/2010/06/30/1767981.html,本文示例代码多来自此处: 参考:<重构:改善既有代码>: 完美而高档的摩天大厦应至少具备两个特点:房间内部是清洁的.结构上是无懈可击的.优秀的代码也应如此.码农要负责打扫房间,架构师负责搭建一个经得起考验的代码结构.有些人兼顾码农和架构的角色.如果你既不是码农,也不是架构师,那么就请离代码远点,离重构远点,要有多远滚多远. 一…
2009年,Sean Chambers在其博客中发表了31 Days of Refactoring: Useful refactoring techniques you have to know系列文章,每天发布一篇,介绍一种重构手段,连续发文31篇,故得名“重构三十一天:你应该掌握的重构手段”.此外,Sean Chambers还将这31篇文章[即31种重构手段]整理成一本电子书, 以下是博客原文链接和电子书下载地址: 博客原文:http://lostechies.com/seanchamber…
通过面向对象三大特性:封装.继承.多态的学习,可以说我们已经掌握了面向对象的核心.接下来的学习就是如何让我们的代码更优雅.更高效.更易读.更易维护.当然了,这也是从一个普通程序员到一个高级程序员的必由之路.就看病一样,普通医生只能治标,高级医生不但看好病,还能除病根. 1.什么时重构? 重构(Refactoring)就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量.性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性. 目的:是提高其可理解性,降低其修改成本. 通俗的…
重构是对软件内部结构的一种调整,目的是在不改变软件行为的前提下,提高其可理解性,降低其修改成本.开发人员可以使用一系列重构准则,在不改变软件行为的前提下,调整软件的结构. 有很多种原因,开发人员应该重构代码,例如之前的开发人员代码写得很烂.自己以前设计时有缺陷.需求变更需要添加一些新的功能或修改原有功能等等.Martin Fowler在其著名的<<Refactoring—Improving the Design of Existing Code>>一书中谈到了为何重构的几点原因:…
.NET重构—单元测试重构 阅读目录: 1.开篇介绍 2.单元测试.测试用例代码重复问题(大量使用重复的Mock对象及测试数据) 2.1.单元测试的继承体系(利用超类来减少Mock对象的使用) 2.1.1.公用的MOCK对象: 2.1.2.公用的MOCK行为: 2.1.3.公用的MOCK数据: 3.LINQ表达式的重构写法(将必要的LINQ写成普通的Function穿插在LINQ表达式中) 4.面向特定领域的单元测试框架(一切原则即是领域驱动) 4.1.分散测试逻辑.日志记录(让测试逻辑可以重组…
一.vscode 自带 1.提取变量 2.提取方法 上面都是通过选中文本后出现的小灯泡操作的: 3.全局替换(多个文件中的)某个变量 选中变量按 F2,输入完成后按回车 二.vscode 插件 js-refactor:https://github.com/cmstead/js-refactor 体验不好,放弃 三.总结 vscode 的重构功能还是没有 webstorm 好用且全面.比如:即使装了 js-refactor 插件也没有 safe delete 的功能. 参考资料 https://c…
准备下周分享会的内容,无意间看到.net版本的重构31天,花了两个小时看了下,可以看成是Martin Fowler<重构>的精简版 原文地址:http://www.lostechies.com/blogs/sean_chambers/archive/2009/07/31/31-days-of-refactoring.aspx 原文代码地址:https://github.com/schambers/days-of-refactoring 圣殿骑士写的.net版本的读书笔记地址:http://ww…
本文背景为学习重构一书中的一些信息的记录. 该篇以一个影片租赁为背景.通过一层层的重构,最终实现相对来说比较完美的代码. 文中经典语句摘要: “如果它没有坏,就不要动它 .” 用来形容我们工作中一些比较古董级的代码,或许写的很烂,但是基本功能是OK的,对于一个团队leader来说,不会主张你去修改他,对于一个保守级的开发来说,也懒的去修改他,虽然你个人任务修改它出错的概率近乎为0,但是仍旧是近乎.只愿我能在工作中永远保持一个敬畏之心,而非畏惧之心. 1.第一版,较多的信息冗余在一起,相对书中的第…
重构是什么? 在代码写好之后改进它的设计. 重构分类:物理结构.类层次结构.类内部结构. 名称 快捷键 直译 作用范围 描述 Rename Alt + Shift + R     可以对任意变量.类.方法.包名.文件夹进行重新命名,并且所有使用到的地方会统一进行修改. Move Alt + Shift + V   字段 把字段移到其他类.把类移到其他包 名称 快捷键 直译 作用范围 描述 Change Method Signature Alt + Shift + C 修改方法签名 方法 对方法进…
1 工具窗口管理 所有的窗口都是在view -> tools windows 下面的,这些窗口可以放在IDEA的上下左右各个位置:右键某个窗口后选择move to 即可进行位置调整 2 跳转 2.1 项目跳转 IDEA每个窗口只能打开一个项目,多个项目必须用多个不同的IDEA窗口才能打开:windows -> next project window 可以实现多个IDEA窗口的跳转 2.3 文件之间的跳转 同时查看多个文件时,可以通过 ctrl + tab 在浏览过的文件进行切换 技巧01:选择…
C#重构经典全面汇总 1.  封装集合 概念:本文所讲的封装集合就是把集合进行封装,仅仅提供调用端须要的接口. 正文:在非常多时候,我们都不希望把一些不必要的操作暴露给调用端,仅仅须要给它所须要的操作或数据即可,那么做法就是封装.这个重构在微软的代码库也常常遇到. 比方最经典的属性对字段的封装就是一个非常好的样例,那么以下我们将看到对集合的封装.例如以下代码所看到的,调用端仅仅须要一个集合的信息,而我们则提供了一个IList的集合.大家都知道IList具有对集合的全部操作,所以这会带来非常多隐患…
使用IDEA提供的快捷操作,高效快速重构代码. 常用重构快捷菜单 Shift+F6,重构 - 重命名 Ctrl+Alt+m,提取方法 F6,移动方法…