Hi,我们的代码重构了

 作为一名程序员,我最大的愿望是自己写的代码,能够被人称赞,一直留存在项目里,直到永远。能够让自己的代码一直留存在项目里,一方面自己写的代码要健壮,没有任何逻辑错误。另一方面,还要具有很好的扩展性,能够适应需求的变化。对于前者来说,只要有个两三年的基本功,基本上就能保证代码的质量。然而,要写出具有扩展性的代码,却是一件比较困难的事情。

 

    不是因为具有可扩展性的代码不好写,而是因为这个度不好把握。我们知道系统的可扩展性总是与系统的业务和性能成反比,因此,我们不会在追求系统的扩展性上而忽略了系统的业务和性能。相反,我们总是在三者之间寻求平衡,以求最大程度的满足客户的需求,同时降低系统的成本。

 

    系统可扩展性 = 1/(系统的业务)*(系统的性能)

 

    当我们为客户设计一个新系统时,客户和开发人员往往都不知道最终的系统是什么。对一个连需求都无法确定的项目来说,产品经理需要不断的重构和演化,确定出最终的系统原型。对于从未进行过该业务方面开发过的程序员来说,一方面要将代码转换为产品经理的原型,另一方面要实现系统的功能,而且还要时刻准备着迎接需求的变更。

 

    在设计之初,每个程序员都怀着远大的梦想,精心去设计每一行Code,追求各种灵活性。但是后来他们发现,他们精心设计的代码轻轻松松就被“该设计不符合需求”而否定了。是他们的代码不够灵活吗?不,是系统的业务变化的太大了(我说的是前端,你懂的)。在一次又一次的痛批之后,他们终于明白,代码的灵活是跟不上客户的脚步的。于是,他们不再追求高可配性的代码,取而代之的是符合用户需求的简单实现。

 

    随着业务逐渐明晰,系统也变得越来越复杂。最终开发人员发现代码已经变的臃肿不堪(如果你做过30人/年~50人/年的新项目,我想你会理解这些的),他们已经无法在当前的系统进行新业务的开发,于是他们必须要面临一个严峻的问题:是否需要对代码进行重构。

 

    每个人都知道重构的危险:一方面会影响当前系统开发的进度,另一方面也可能会造成原来可用的流程变得不可用。在进行重构之前,设计们要再三评估重构的风险性以确定是否有必要进行重构。其实,当这个问题提出来的时候,系统几乎已经达到了重构的极限。要不是因为系统的耦合性太强,每做一小步的更改都会对系统产生巨大的影响,谁会浪费时间、浪费精力,想对代码进行重构呢。

 

    很多人觉得代码被重构是一件可耻的事情,其实不然。对于一个需求不明确的大型项目来说,只有通过持续不断的集成和重构,才能产生健壮稳定的系统。只有不断的集成和重构,才能保证系统在业务和实现上都没有偏离重心,在可用性以及稳定性上,达到客户的要求。当我们的代码被重构时,我们应该感到庆幸,因为我们降低了系统走上“歧路”的风险,同时我们也为类似相关的案例积累了宝贵的经验,只有失败的经验才更刻骨铭心,不是吗?

 

    我们的代码重构了,它终于被重构了,我感到很欣慰,我终于再也不用看那些烦心的代码了,也不用再担心哪个人不小心改了自己的代码,而导致我负责的模块不可用。

时间: 2024-09-28 16:07:20

Hi,我们的代码重构了的相关文章

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

在上篇博客<代码重构(一):函数重构规则(Swift版)>中,详细的介绍了函数的重构规则,其中主要包括:Extract Method, Inline Method, Inline Temp, Replace Temp with Query, Introduce Explaining Variable, Split Temporary Variable, Remove Assignments to Parameters, Replace Method with Method Object等.关于

代码重构(一):函数重构规则

重构是项目做到一定程度后必然要做的事情.代码重构,可以改善既有的代码设计,增强既有工程的可扩充.可维护性.随着项目需求的不断迭代,需求的不断更新,我们在项目中所写的代码也在时时刻刻的在变化之中.在一次新的需求中,你添加了某些功能模块,但这些功能模块有可能在下一次需求中不在适用.或者你因为需求迭代与变更,使你原有的方法或者类变得臃肿,以及各个模块或者层次之间耦合度增加.此时,你要考虑重构了.   重构,在<重构,改善既有代码的设计>这本经典的书中给出了定义,大概就是:在不改变代码对外的表现的情况

代码重构(六):代码重构完整案例

无论做什么事情呢,都要善始善终呢.前边连续发表了5篇关于重构的博客,其中分门别类的介绍了一些重构手法.今天的这篇博客就使用一个完整的示例来总结一下之前的重构规则,也算给之前的关于重构的博客画一个句号.今天的示例借鉴于<重构,改善既有代码的设计>这本书中的第一章的示例,在其基础上做了一些修改.今天博客从头到尾就是一个完整的重构过程.首先会给出需要重构的代码,然后对其进行分析,然后对症下药,使用之前我们分享的重构规则对其进行一步步的重构. 先来聊一下该示例的使用场景(如果你有重构这本书的话,可以参

关于代码重构:是微修还是全部推倒重来

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 虽然不是很切题但还是放在Cocos2D的学习系列博文中吧,因为这是我写cocos2D代码中体会到的. RPG游戏码代码到现在已经写了不少行代码了. 最近在加入新功能的时候发现以前遗留的人物对话问题一直没有解决,游戏对话逻辑是RPG中重要的逻辑,而我的代码问题具体表现在: 对话代码逻辑及其复杂.因为以前从来没有写过类似的代码,要想支持游戏剧情的复杂性,必须将对话

代码重构(三):数据重构规则

在<代码重构(一):函数重构规则(Swift版)>和<代码重构(二):类重构规则(Swift版)>中详细的介绍了函数与类的重构规则.本篇博客延续之前博客的风格,分享一下在Swift语言中是如何对数据进行重构的.对数据重构是很有必要的,因为我们的程序主要是对数据进行处理.如果你的业务逻辑非常复杂,那么对数据进行合理的处理是很有必要的.对数据的组织形式以及操作进行重构,提高了代码的可维护性以及可扩展性. 与函数重构与类重构类似,对数据结构的重构也是有一定的规则的.通过这些规则可以使你更

推荐五款优秀的PHP代码重构工具

在软件工程学里,重构代码一词通常是指在不改变代码的外部行为情况下而修改源代码.软件重构需要借助工具完成,而重构工具能够修改代码同时修改所有引用该代码的地方.本文收集了五款出色的PHP代码重构工具,以帮助你完善更加优秀的项目. 1. Rephactor Rephactor是一款命令行重构工具,这是一款自动化工具,允许开发者以一种简洁的方式在不同的代码库中修改源码. 主要功能: 保证重构的可逆性-- 一旦发现问题,代码是可逆的,可以回溯到前一个版本. 查找替换功能-- 普通查找替换,方法重命名,类重

java中什么是代码重构,什么时候需要代码重构

问题描述 java中什么是代码重构,什么时候需要代码重构 java中什么是代码重构,什么时候需要代码重构 代码重构一般发生在地方,代码重构需要注意什么问题 解决方案 当你的代码不好维护,不好升级,不好管理的时候肯定是需要重新构造.每次重构都会学到很多东西.开始写代码如果质量高,需要重构的量就少.反之就多.参考这个:http://blog.mkfree.com/posts/30 解决方案二: 重构就是在不改变软件系统外部行为的前提下,改善它的内部结构.重构代码不仅仅限于java开发中,任何开发语言

代码重构 实体转换-求教关于代码优化重构的问题

问题描述 求教关于代码优化重构的问题 关于代码重构:问题如下 各个科目都对应一个"考试"的实体bean,各个对象里部分属性是一致的,也存在不同的属性.经常遇到的情况是要写好几套代码. 如下面的代码片段 if ("1".equals(subjectCode)) { LogUtil.info("获取数学"); TestM testM = new TestM(); testM.setTeachingCode(teachingVersionCode);

《圣殿祭司的ASP.NET4.0专家技术手册》----1-10 程序代码重构

1-10 程序代码重构 圣殿祭司的ASP.NET4.0专家技术手册 所谓重构(Refactoring),是指对软件程序进行重新改写或调配,那干嘛不直接叫Rewrite?意义当然不一样,因为Rewrite只是单纯地改写,不一定有什么了不得的意义,而重构是含有目的性的改写,或重新优化整个程序架构,其中甚至有"方法论"在里头,也就是有许多程序方法学的指导性方针,"重构"一词其实存在软件界已久,而Java的Eclipse或NetBeans开发工具对"重构"