重构——让程序员快乐的工作

简介:
重构几乎是每一个软件工程都会碰到的事情,每当人们提到“重构”的时候总会这样描述:使用各种手段重新整理一个对象设计的过程,目的是为了让设计更加灵活并且/或者更可重用。你可能有几个理由来做这件事情,其中效率和可维护性可能是最重要的原因。 
关于如何进行重构和进行重构给我们带来的种种益处,不是本文想要述说的内容,本文是想通过重构来谈谈,如何才能让每一个程序员都快乐的工作。 
米卢蒂诺维奇给中国足球带来了源自欧洲的先进足球理论,除了这些理论还有一个很重要的理念,那就是“快乐足球!”。他教导他的中国球员是因快乐而踢足球,更因足球而快乐。同样我的一个Leader也常常这样告诉我们,我们每天工作八个小时,如果在这一天最重要的时间里你过得不快乐,那么你的工作还有什么意义呢? 
代码太容易变坏。代码总是趋向于有更大的类、更长的方法、更多的开关语句和更深的条件嵌套。重复代码随处可见,特别是那些初看相似细看又不同的代码泛滥于整个系统:条件表达式,循环结构、集合枚举….信息被共享于系统一些关系甚少的组成部分之间,通常,这使得系统中几乎所有的重要信息都变成全局或者重复。你根本不能看到这种代码还有什么良好的设计。(如果有的话,也已经不可辨识了。) 
这样的代码难以理解,更不要说对它加以修改。如果你关心系统体系结构、设计,或者是一个好程序,你的第一反应就是拒绝工作于这样的代码。你会说:"这么烂的代码,让我修改,还不如重写。"然而,你不大可能完全重写已经能够甚至是正在运作的系统,你不能保证新的系统能够实现全部的原有功能。更何况,你不是生活在真空,还有更多的投资、交付、竞争压力。 
于是你使用一种quick-and-dirty的方法,如果系统有问题,那么就直接找到这个问题,便当地修改它。如果要增加一个新功能,你会从原来的系统中找到一块相近的代码,拷出来,作些修改。对于原来的系统,你想,既然我不能重头写过,而且它们已经在运作,让它去吧。然后,你增加的代码变成了下一个程序员咒骂的对象。系统越来越难以理解,维护越来越困难、越来越昂贵。系统变成了一个十足的大泥球。 
不难看出程序员的工作有些时候无疑是繁重和枯燥的,如何让程序员摆脱这些不快呢,作为程序员出身的我,有一个很重要的方法,就是对代码执行重构。 
由于成功地重构之后,提高了开发效率。程序员有了时间可以看一看书或者新闻,给自己的朋友回一封Email,而不是每天埋头于无休无止的复制和调试。维护一份陌生的代码的时候也不再会去诅咒先前的设计人员的糟糕设计,能够轻松的面对日程表上的进度安排。 

很多时候设计很难一次作得很好,要保证软件的活力,注定要经常的修改需求,面对如此多的迭代,作为设计师和程序员,必须充分的重视重构给一个软件产品带来的活力。



本文转自茄子_2008博客园博客,原文链接:http://www.cnblogs.com/xd502djj/archive/2010/09/05/1818302.html,如需转载请自行联系原作者。



目录
相关文章
|
Oracle 网络协议 关系型数据库
ORA-12541TNS无监听程序解决方案——orcal基础
ORA-12541TNS无监听程序解决方案——orcal基础
5890 0
ORA-12541TNS无监听程序解决方案——orcal基础
|
4月前
|
Java Maven 数据安全/隐私保护
虚拟视频替换摄像头,抖音快手微信QQ虚拟相机,替换相机照片视频虚拟视频【jar】
这个项目使用JavaCV库处理视频文件 包含视频读取、处理和保存的基本功能
|
缓存 资源调度 Kubernetes
阿里云云效产品使用合集之如何将两个独立的代码仓库构建并部署到同一个容器内
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
10月前
|
边缘计算 运维 安全
出海浪头之上,共探CDN进化新支力
出海浪头之上,共探CDN进化新支力
193 0
|
Web App开发 Java iOS开发
webp详解
WebP是一种由谷歌开发的图像文件格式,旨在提供更高效的图像压缩方法,以加快网页加载速度。它支持有损和无损压缩模式,并且在相同的视觉质量下,相比JPEG和PNG等格式,文件大小更小,从而优化了网络传输效率。此外,WebP还支持透明度和动画图像。
|
安全 网络安全 数据安全/隐私保护
|
Java 网络安全
解析connectionReset异常的原因与解决方案
解析connectionReset异常的原因与解决方案
5742 0
|
存储 SQL 缓存
阿里华为等大厂的本地缓存、分布式缓存解决方案详解(中)
阿里华为等大厂的本地缓存、分布式缓存解决方案详解
519 0
|
缓存
计算机组成原理实验一 运算器实验
计算机组成原理实验一 运算器实验
664 0