refactoring Patterns(五): 方法

STM32F103C8T6全桥逆变电路PWM波生成(基于HAL库) 全桥逆变电路需要两组开关管相互协同工作,故需要两路PWM控制信号,为了防止电源短路,需要保证同一桥臂的上下两个开关管不会同时导通,故两路PWM在相位上需要相差180°;为了保证高频变压器不会磁饱和,使正负半周PWM占空比相同。但是传统的互补输出达不到调节占空比调节输出电压的效果。...... 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> Refactoring不仅仅是一种编码的方法。他同时是一种设计方法。本文从软件工程学的演变来透视Refactoring的重要作用。同时,你也可以在这里看到Refactoring和最近出现的XP开发方法学的紧密关系。 增量迭代 自从有软件工程一说开始,大大小小出现了许多方法,其中一些还常常被我们挂在嘴边.这些软件方法中最著名的生命周期模型包括WaterFall,它是由Royce于1970年首先提出来的.一般来说,WaterFall方法把软件开发的过程严格地分为几个阶段,包括: Requirement phase、Specification phase、Design phase、Implementation phase、Integration phase,要注意测试并非一个独立的阶段,几乎在每个阶段都需要检查和测试。 应当说,WaterFall模型由它自己的很多优点。WaterFall强制每一阶段都必须产生所有的产品,只有当这些产品通过相关的审核后才能开始下一阶段的工作,而这些产品中相当重要的一部分就是每一阶段的详细文档。Specification文档、design文档、code文档和其他相关的文档,如数据库手册、用户指南等等是维护产品基本工具。有研究指出,大约70%的软件预算用于维护阶段。而WaterFall模型强制每一阶段必须有详细文档,所以,看起来WaterFall能使用这些文档大大削减这方面的开销。 但是,Waterfall模型受文档驱使的方式也可能成为一个缺点。WaterFall起始于需求阶段,一旦需求报告被用户承认,你就开始起草Specification文档,它指出了软件需要做什么东西。Specification文档通常很长、很详细、很直白,因此很容易让人看着生厌。用户通常都很难完全看懂软件的Specification文档,他几乎不可能判断你讲得是否正确,但通常他还是会签字的。 这里的问题是人和人之间的交流是否能够完全使用文档来实现,即使你能够使用更加高级的图形如UML图。对于这个问题,生物学家Maturana和Varela在生物系统中进行了研究,下面是他们在《The Tree of Life》一书中的答案: 。。。。交流的现象不依赖于被传递的内容,而是依赖于在接收者身上发生了什么。并且这是一件和"传递信息"极不相同的事情。 Alistair Cockburn在他2001年的新书《Agile Software Development》解释说,你可以想象人被一层薄膜所包围,在接受到外部刺激,被重构翻译成内部信号,从而引发内部活动。所以人真正所接受的信息取决于内部而不是外部。更浅显的例子也有cockburn给出,他说: 考虑一个具体的例子,某人冲进一个房子,用日文大叫"着火了!"。一个能讲日语的人接收到许多信息,并且立刻冲向出口。他身旁的另一个日本人,正好在睡觉,因此根本没有接收到任何信息。外部刺激没有转化成内部信号。一个不懂日语的人注意到有个人进来大叫,但是却没有从他的话语中接收到任何特别的信息。每一个人从大叫接收到的东西端依赖于他的内部条件。 在对这一声大喊的翻译过程中,一个日本人能够接受到大量信息而非日本人却不知所云的重要原因是大喊的人和那个在房间里的日本人有一个共同的经验:日语。软件需求获取者、Specification撰写者和用户之间往往不可能有这样的共同经验。 同样,如果光光依靠设计文档想使得设计者和开发人员之间能够达到很好的交流也是不可能的。文档有助于增进理解,但是它不可能达到完整的理解。Waterfall试图依赖非常详细的文档来接近交流的完美。事实上,对文档的理解并不依赖于文档的详细程度。而是依赖于文档的编写者和文档阅读者之间的共同经验。 如果我和你之间都具有设计模式的背景,那么我说一句:"使用visitor模式",可能比两个没有设计模式经验的人画上100个UML类图,写上1000句的详细文档更能说明问题。 这种共同经验的积累显然不可能一趋而就。当然,在一个软件公司内部,长期的合作可能使用设计者和开发者之间能够达到更高层的交流,譬如,在进行设计的时候,你说:"就像上次那个多语中问题一样处理"。那么程序员就根本不需要再多的设计信息也能够完全实现。 对于用户的需求而言,这种长期的合作关系是很少见的。因此,除非你对该用户的领域非常熟悉,熟悉到你早已了解用户的一举一动。否则,你不可能一次就完成设计,你对用户的理解和用户对你的理解,也就是用户和你之间的交流需要多次的反复才能达到比较完善的程度。 交流的问题不仅仅出现在人和人之间,一个人需要和所实现的目标进行交流。这就是我们所说的理解。不管是在需求阶段、标书阶段、设计阶段或是实现阶段,问题的解决要依赖于你对这个问题的理解程度。理解越深刻,问题的解决就与完美。而这样的理解是不可能一次达到的。因此,对软件开发的任何一个阶段,你都需要进行迭代,从而能够更好地解决问题。 Waterfall的另外一个问题就是用户在最终产品交付之前不能看到任何用户的东西。而用户对提交产品的看法最后既有可能是:"I know this is what I asked for, but it isn't really what I wanted。" 产生这种结果的原因是,因为用户通过纸上的文档理解到的东西远远不及真正能够使用的软件产品那么多。Waterfall对需求和Specification如此的依赖,直接就可能产生并非用户真正需要的产品。 为了解决这个问题,我们需要使用增量模型。不同于waterfall和快速原型模型,增量模型并不试图一次性地发布完全符合用户需求的软件。相反,最终的产品被划分为几个build,设计、开发、发布甚至是需求都按照一个一个build进行。任何一个阶段,用户都可以获得一个满足部分需求的实际可操作的软件。而不是象前面的模型一般,需要等待几个月、一年或几年才能等到一个它并不需要的产品。 增量模型同时能够适应用户的变化。变化是每一个成长中的用户组织固有的特点,改变的要求同时也是软件开发的一部分。这也是我们说"软件是软的"所包含的意义。从客户的财务观点来看,增量模型也使得他们不需要一次性花费大量的资金。如果在开发的过程中发现问题,用户也可以及时地测回资金。 增量模型同时也会出现问题。其中的一个难点就是每一个新发布的build必须能够平滑地集成到已经存在的系统中而不会破坏已经存在的东西。从这个角度来讲,一个增量模型下的设计可能需要比Waterfall更加复杂的设计。因为Waterfall一次性地考虑所有问题,它能够提前看到设计、实现中的所有问题(在他自己的范围之内),既然问题已经全部摆出,你就能够相对容易地解决问题。而增量模型则不同,在构建当前的build时,你不会去考虑以后的build。所以,以后的build可能需要当前build不可预料的支持,它也可能以不可预料的方式集成到当前的系统之中。 面向对象的方法在这一点上助益甚多。面向对象的基本原则之一就是Open-Closed原则。一个模块可以在发布之后被close,这样即使增加build也不会破坏原来的系统。同时,它通过各种面向对象特有的机制,多态和继承,使得系统能够以增量的方式平滑地集成。但是,要close,你必须保证你的设计有足够的能力对以后的模块open。而正象我们在最开始所说的一样,一次性的设计是不可能达到这样的目标。显然,你需要一种方法,能够在一个模块外部行为不变的情况下改变内部的结构,使得增量能够顺利地进行下去。Refactoring是增量迭代模型的自然解决方案和核心技术。 Moving Target 增量迭代模型在处理Moving Target问题上更加显示出特有的优势。所谓的Moving Target就是可能出现随着开发的进展,软件的需求不断发生变化。 现今高速的信息流通和市场竞争压力是产生这种现象的最主要原因。一个最具竞争力的企业就是最能快速相应变化的企业。适应变化是一个企业的核心竞争能力。而软件之所以能够在现今社会中占据如此重要的地位,就是它比其他人造物都更能适应变化。如果软件不能提供对变化最有力的支持,那么就没有什么其他的artifact能够做到了。 Moving Target被认为是软件工程中最难以解决的问题之一。这里,随着软件构建的进程,用户的需求不断地发生变化。这不但会使开发小组产生受挫感,同时极易产生结构奇差的软件。同时这样的变化也会极大地增加软件开发的成本。 也许,这个问题可以通过构建一个快速原型来解决,这样的话,不管用户改变需求有多快,只要最后用户对specification满意了,产品马上就可以开始构建。但实际上,没有什么东西能够阻止客户在核准了specification以后再次改变需求。原型的好处只不过是能够让用户看到能工作的软件,从而减少变化的数量和频率。但是如果客户愿意花钱,它天天想改变需求都可以。 显然,过多的过程控制难以解决这样的问题。过程控制的复杂性会减低对需求变化的响应速度,那么,是不是象某些软件工程书所写的,我们对这样的状况无能为力呢? 拥抱变化-Refactoring和XP 随着Kent Beck的名著《Extreme Programming Explained》的诞生,XP成为软件工程最热门的话题之一。同时,它也是各种争论的中心。 Kent Beck在XPE的前言中的第二句话就对XP给出了定义: XP is a lightweight methodology for small-to-medium-sized teams developing software in the face of vague or rapidly changing requirements。 这段话解释了XP的主题,这在后面的字里行间都可以看到: 。。。It reliance on an evolutionary design process that lasts as long as the system lasts. …... System goes sour - the software is successfully put into production, but after a couple of year the cost making changes or the defect rate rises so much the system must be replaced. …..Business misunderstood。。。 Business changes。。。 XP要解决的重要问题就是如何实现更好的交流,从而更加适应需求的变化。它允许用户的需求在任何时候、任何方向上发生变化。为了实现这一点,它没有和其他工程学方法一样,把重点放在过程上,相反更强调个人技巧和实践原则。 XP的基本原则包括: 快速反馈 假定简单化 增量改变 接受变化 高质量工作 为了实现这些原则,Kent Beck提出了它的极端说: 如果 code reviews是好的,我们就每时每刻review code (pair Programming) 如果测试是好的,每个人每时每刻进行测试 (单元测试),甚至客户也是如此 (功能测试) 如果设计是好的,我们让它变成每个人的日常事务 (refactoring) 如果简单化是好的,我们就让系统一直保持简单设计来支持它的当前功能 (the simplest thing that could possibly work) 如果体系结构是重要的,每个人每时每刻都定义和修整体系结构 (metaphor) 如果集成测试是重要的,那么一天之内我们集成并测试很多次 (continuous integration) 如果较短的迭代是好的,我们做真正、真正短到秒、分、小时的迭代,而不是一周、一月或一年 (the Planning Game) 我并不是想在这里讨论XP的好坏。但是,我觉得任何人,不管他是否觉得XP可行,有一点不可否认:XP的这些实践原则和程序技巧,是软件界长期以来的积累。即使你不采用XP作为你的开发方法学,这些原则和技巧仍然是每一个想成为优秀的程序和设计人员不可获缺的基本技能。这也是我对待UML的态度,你可以不使用RUP作为你的过程管理指导,但UML本身确实是软件行业对建模技术的一个总结。如果你觉得看图比看文字更清楚,那么UML还是有可取之处的(当然,有些人不喜欢看规规矩矩的图形,Kent Beck就是其中的一个)。 上面可以看到,Refactoring是XP实践的核心之一。不是那么显而易见,但也许更重要的是,Refactoring和其他的原则和实践之间存在着不可分割的联系。 Kent Beck指出,你不可能只为今天的代码做设计。不然,你的设计就会走入死胡同,系统就无法不断进化,从而无法适应需求的变化。但是,设计的复杂不但不能解决问题,而且增加了设计的成本,增加了理解的难度,更要命的是增加了扩展和修改的难度,同样使你的系统变得十分僵化。所以,简单的设计-Simple Design--是成功的关键。然而,简单的设计要能够适应未来的需要,必须有一种切实的方法能在以后克服现在的局限性。Refactoring是其中的关键技术之一。然而,这一点并不是轻而易举能够实现的。要使Refactoring能够真正达到这样的目标,你需要能够控制代码的所有权,不然,你就很难修改其他人的代码对你代码作出的引用,因此需要共同的代码所有权(collective ownership)。为了使Refactoring能够更快捷、方便地进行,你的代码必须有良好的风格和大家都同意的代码标准(coding standard).如果你们成对编程(pair Programming),那么你们就能更好地处理复杂的Refactoring,也使得Refactoring出错的可能性大大减小。更进一步,测试(testing)能够使得Refactoring更加安全。编码是一个团队的工作,所以你需要连续不断的集成(continuous integration),这样,当你的refactoring和别人的代码发生冲突的时候,你马上就可以知道,原先的代码和设计能够及时得到恢复。你还需要足够的休息(rest),这样你才会有更多的勇气,不怕犯错,把Refactoring进行到底。 关于作者 石一楹,现任浙江大学灵峰科技开发公司技术总监。多年从事OO系统分析、设计。现主要研究方向为Refactoring和分析模式。你可以通过shiyiying@hotmail.com和我联系。
 

代码太容易变坏,重复代码随处可见,特别是那些初看相似细看又不同的

代码泛滥于整个系统:

条件表达式,循环结构、集合枚举.....信息被共享于系统一些关系甚少的

组成部分之间,通常,这使得系统中几乎所有的重要信息都变成全局或者重复。

解决这个问题的最好办法当然是让它不要发生。然而,要阻止代码的腐化,

你需要付出额外的代价。每次在修改或增加代码之前,你都要看一看手上的这些代码。

如果它很好的话,那么你应该能够很方便地加入新的功能。如果你需要花很长的时间

去理解原来的代码,花更长的时间去增加和修改代码。

那么,先放下手里的活,让我们来做 Refactoring。 



一.Refactoring 介绍 

二.Refactoring 理由 

三.Refactoring 问题 

四.Refactoring 困难 

五.Refactoring 方法 

六.Refactoring 与软件设计 

七.Refactoring 场合与命名规则 



中文JAVA技术网重新整理发布

ZooKeeper 实战:使用 Docker Compose 部署 ZooKeeper 集群 ZooKeeper是一个开源的分布式协调服务,用于管理大型分布式系统中的数据。它由Apache软件基金会提供,最初是Hadoop的一个子项目,但后来发展成为一个独立的顶级项目。ZooKeeper提供的一致性协调服务对于构建分布式应用和服务非常重要,特别是在需要精确的领导选举、配置管理、命名服务、分布式同步和提供分布式锁等功能时。 阅读详情

相关推荐

新入手的Atmel-ICE产品说明

【一句话自我介绍】 我是Atmel最新推出的功能强大的调试编程工具,适用于Atmel ARM® Cortex®-M的Atmel SAM和AVR® 系列芯片。 【我支持的软件】 完美支持Atmel Studio 6.2以上版本直接支持ICC8AVR以上版本支持烧录ICCAVR、CVAVR、IAR等生成的HEX文件 【我支持的器件】 支持AVR 32-bit MCUs的JTA

kaloha3的专栏 1万+

代码规范-对象的创建-避免创建不必要的对象

世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。 如: 创建String: // 而不能用:String str = new String("abc"); String str = "abc"; 使用正则时: // 预先编译生成对象,再使用 private static final Pattern PATTERN = Pattern.compile("[0-9a-z]]"); public boolean matchMet.

我的博客 444

Nacos 2.3.2实战:5分钟搞定达梦数据库插件配置(含避坑指南)

本文详细介绍了在Nacos 2.3.2中配置达梦数据库数据源插件的完整实战流程。通过解析SPI插件机制,提供从环境准备、插件编译部署到核心配置的逐步指南,并重点分享了驱动加载、SQL兼容性等高频问题的避坑解决方案,助力开发者高效完成国产化数据库适配。

weixin_29200485的博客 501

重构模式5

refactoring Patterns:第五部分 内容:增量迭代Moving Target拥抱变化-Refactoring和XP参考资料关于作者相关内容:该系列的其他部分

xxcc的专栏 1284

【ChatGPT实战案例】ChatGPT如何帮助产品经理高效工作?

1. 产品经理主要工作方向, 2. 具体工作中,向ChatGPT提问参考

weixin_62909516的博客 1902

告别版本过低提示!微信3.9登录修复与聊天记录无缝迁移全攻略

本文详细解析了微信3.9版本过低提示的根源,并提供了完整的修复方案和聊天记录迁移指南。通过专用修复工具绕过版本检测,以及新旧版本聊天记录目录对比,帮助用户实现无缝迁移。特别提醒备份重要数据,确保操作安全。

weixin_42535461的博客 3175

Refactor To Pattern(一)

1  Chain Constructors   Chain the constructors together to obtain the least duplicate code when you have multiple constructors that contain duplicate code   现象:一个类中的多个构造函数含有相同的代码将会引起不必要的麻烦,当需要增加一个变量初始

Twent的专栏 1972

第03章 Hermes Agent 核心原理

环境跑通之后,读者会很自然地想问:Hermes 的内部到底是怎么转起来的?为什么它能做到"越用越聪明"?长对话不会忘记上下文吗?这一章用尽量短的篇幅把核心原理讲清楚。理解原理不是为了纸上谈兵,而是为了在第7章实战时能判断"为什么 Hermes 这么响应"以及"我应该把哪类任务交给它"。

亢少军的博客 143

真专家其实是热情、厚道的

每次回杭州总能有很多收获,这次尤甚,感谢博文视点周筠老师在会议开始的前几天提供会议信息,使我得以成行。 见到“真正的技术大会” 参加过很多技术大会,但大都是由厂商主导,比如IBM的DW大会,MS的TechED,BEA的eWorld等,并不是说这些会议不好,而是说其内容难免会染上太多厂商的味道,失却些中立性。所以阿里巴巴这次能安排这么大、非盈利的大会,确实让人振奋。怀着一种美好的愿望来揣测马

编辑空间 2905

【云原生技术】云计算与网络:容器服务(Tencent Kubernetes Engine,简称TKE)简介

基本概念主要特点应用场景技术实现容器服务(Tencent Kubernetes Engine,简称TKE)是腾讯云提供的一种托管的容器管理服务,基于开源的Kubernetes系统。TKE旨在简化容器的部署、管理和扩展,并且提供高性能、可靠性和安全性,适用于各种规模的企业和应用。

weixin_46453070的博客 2046

42、多媒体与虚拟现实在艺术和影视领域的创新应用

本文探讨了多媒体与虚拟现实在艺术和影视领域的创新应用,涵盖三个典型案例:影视与人类学融合项目通过协作模式模糊作者与观众界限,推动文化文献的发展;交互式数字短片《分手》利用基于对象的广播技术探索个性化影视体验;威尼斯双年展瑞士馆4D项目则通过虚拟现实技术实现文化遗产的数字化展示。这些案例展示了技术在叙事、用户体验及文化保护中的深度应用,并展望了未来技术融合、个性化深化与文化遗产传承的发展趋势。

kappa的博客 115

重构模式4

refactoring Patterns:第四部分 内容:不应 Refactoring 的场合实施Refactoring可能碰到的阻碍以及解决方案学习Refactoring获得短期效益削减Refactoring的额外开销安全

xxcc的专栏 1448

Android 9.0 系统framework关于忘记开机锁屏密码进不去系统桌面清除锁屏密码问题的解决

在9.0的系统rom定制化开发中,在一些产品中带锁屏密码的功能中,系统默认是滑动解锁,但是客户会设置锁屏密码,在某些时候会 忘掉锁屏密码,导致需要进入恢复出厂设置然后才能进入系统桌面,这样就导致系统的保存的资料都丢失了,所以需要要求提供接口 在下拉状态栏中或者系统服务中在忘记锁屏密码后不恢复出厂设置的情况下,可以清除锁屏密码,接下来就来实现功能

安卓兼职framework和app工程师的博客 618

【重构获得模式 Refactoring to Patterns】

现代软件设计的特征是“需求的频繁变化”。设计模式的要点是“寻找变化点,然后在变化点处应用设计模式,从而更好地应对需求的变化”。“什么时候、什么地点应用设计模式”比“理解设计模式结构本身”更为重要。

代号1998的专栏 1538

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

refactoring Patterns:第二部分

refactoring Patterns:第二部分为什么要 Refactoring  为什么要去改变已经可以正确运行的软件?这样的改变是否影响到我们的设计,从而进一步改变我们对于面向对象系统进行设计的方法和思路?本部分试图回答这些问题。Refactoring虽然需要更多的"额外工作",但是它给我们带来的各种好处显然值得我们做出这样的努力:简化测试一个好的Refactoring实

flyelf的专栏 966

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

refactoring Patterns:第三部分

本文紧接第二部分,继续讲述应用 refactoring 应该考虑的问题。任何一种技术都可能有它自己的麻烦。但是往往在我们使用一种新技术的时候,可能还不能深入到发现它带来的问题,正如Martin Fowler所说:在学习一种能够极大提高生产力的新技术时,你很难看到它不能应用的场合。他把Refactoring的情景和面向对象出现使得情景相比较:情况恰如10年前的对象。不是我不考虑对象有限制。只

flyelf的专栏 1040

refactoring Patterns:第一部分

refactoring Patterns:第一部分       这是关于refactoring思考的第一部分内容。本文将介绍refactoring的基本概念、定义,同时解释正确、安全进行refactoring需要坚持的几个原则介绍代码太容易变坏。代码总是趋向于有更大的类、更长的方法、更多的开关语句和更深的条件嵌套。重复代码随处可见,特别是那些初看相似细看又不同的代码泛滥于整个系统:条件表达

flyelf的专栏 1085

《Refactoring to patterns》

同学推荐的一本书,看完觉得挺不错的,作者的一个重要思想是应当在出现性能、复杂度较高难于维护等问题时,利用patterns对代码进行重构。和《Refactoring》一书类似,全书对于重构过程的描述非常细致,不同的是书中示例都是作者的经验结晶,重构过程浓缩着作者对于模式的深刻理解,读起来更为生动、自然。实践和理论相结合,是计算机这行必须遵循的一个原则,如果不能像书中所述那样细致的一步一步进行重构,就

飞光流影 1025

Refactoring Patterns (Second Part)

为什么要 Refactoring 石一楹 (shiyiying@hotmail.com)浙江大学灵峰科技开发公司技术总监2001 年 12 月为什么要去改变已经可以正确运行的软件?这样的改变是否影响到我们的设计,从而进一步改变我们对于面向对象系统进行设计的方法和思路?本部分试图回答这些问题。Refactoring虽然需要更多的"额外工作",但是它给我们带来的各种好处显然值得我们做出这样的努力:简化

glietpku的专栏 774

refactoring Patterns第七部分

虽然refactoring几乎可以随时进行,然而,按照我们关于两顶帽子的原则,在某些场合下,refactoring的介入显得更加实际、有意义、富有成效。另外,在最后进入Refactoring实践之前,我把Kent Beck和Martin Fowler给我们的忠告和建议放在这里。这些内容,特别是Code Smell和命名规则不但对我们进行refactoring具有很强的实践意义。同时,他们也促使

flyelf的专栏 1005

refactoring Patterns:第四部分

任何一种技术都不是万能的。正象设计模式,合理的运用可以极大地提高设计的效率和美感,再不适当的场合运用就会产生所谓的反模式。我们的refactoring亦然。但是,作为一种强有力的设计演变工具,refactoring值得我们付出努力。不能因为对新技术的恐惧而放弃这样的工具,我在这里对可能出现抗拒情绪的一些问题进行了解释。不应 Refactoring 的场合程序原型当你原型化一个系统时,你

flyelf的专栏 1046

Refactoring Patterns (Seventh Part)

内容:Refactoring 应用的场合Refactoring和命名参考资料关于作者相关内容?lt;/B>该系列的其他部分Refactoring场合和基本命名规则 石一楹 (shiyiying@hotmail.com)浙江大学灵峰科技开发公司技术总监2001 年 12 月虽然refactoring几乎可以随时进行,然而,按照我们关于两顶帽子的原则,在某些场合下,refactoring的介入显得更加

glietpku的专栏 764

Refactoring Patterns (First Part)

refactoring Patterns:第一部分内容:介绍什么是Refactoring?Refactoring原则参考资料关于作者相关内容:该系列的其他部分

天行健 ● 君子以自强不息 1317

《重构与模式》(Refactoring To Patterns)中文版 JPG

http://www.verycd.com/topics/205321/

mowengaoboa的博客 389

refactoring Patterns

这是关于refactoring思考的第一部分内容。本文将介绍refactoring的基本概念、定义,同时解释正确、安全进行refactoring需要坚持的几个原则。 介绍 代码太容易变坏。代码总是趋向于有更大的类、更长的方法、更多的开关语句和更深的条件嵌套。重复代码随处可见,特别是那些初看相似细看又不同的代码泛滥于整个系统:条件表达式,循环结构、集合枚举….信息被共享于系统一些关系甚少的组成部分...

忆风 297

refactoring Patterns第五部分

Refactoring不仅仅是一种编码的方法。他同时是一种设计方法。本文从软件工程学的演变来透视Refactoring的重要作用。同时,你也可以在这里看到Refactoring和最近出现的XP开发方法学的紧密关系。增量迭代自从有软件工程一说开始,大大小小出现了许多方法,其中一些还常常被我们挂在嘴边.这些软件方法中最著名的生命周期模型包括WaterFall,它是由Royce于1970年首先提出来

flyelf的专栏 1106
上一篇: refactoring Patterns(六):软件设计
下一篇: refactoring Patterns(七):场合与命名规则
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值