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

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

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



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



目录
相关文章
|
9月前
|
Oracle Java 关系型数据库
程序员做开发工作必须要考证么?
众所周知,随着信息技术的迅速发展,程序员已经成为现代社会中不可或缺的一部分。与此同时,关于程序员需要考证的话题也越来越受到关注,以及现在互联网行业内卷严重,催生了程序员继续学习的渠道。随着行业寒冬的影响,互联网行业的程序员竞争越来越激烈,也让程序员再次审视了考证提高自身竞争力的设想。那么本文就来简单探讨一下程序员是否需要考证,以及衡量程序员能力的方式是什么?
134 2
程序员做开发工作必须要考证么?
|
10月前
|
人工智能 IDE 算法
【周末闲谈】新的编程方式,程序员的未来何在?
【周末闲谈】新的编程方式,程序员的未来何在?
77 0
|
消息中间件 敏捷开发 JavaScript
为什么说程序员是一个极度劳累的工作?
为什么说程序员是一个极度劳累的工作?
|
测试技术
初级软件测试面试题怎么找?提供的这两个地方你肯定用得上
最近几年,随着电子产品和互联网的蓬勃发展,各类科技公司如雨后春笋般出现,而软件公司作为科技类公司中的重要组成部分,在这支互联网大军中也占据了重要一席。因而,负责软件问题质检的软件测试岗位也逐渐成了这几年炙手可热的就业岗位之一。
108 0
|
测试技术
软件测试好学吗 只要选对了学习方式,就并不难学
我们都知道,如今互联网IT行业,在国内可是非常吃香的,尤其是近些年随着软件的普及,人们对软件的要求也是越来越高,因此国内各大互联网企业,也开始大量招聘软件测试人员,但由于这个岗位在我国的发展时间并不长,人员需求也是供应不求的。
171 0
软件测试好学吗 只要选对了学习方式,就并不难学
|
测试技术
软件测试怎么学 两种学习方式总有一个适合你
近几年随着国内互联网的快速崛起,IT行业也兴起了一个新的行业,叫做软件测试,因为各大企业越来越重视软件的测试了没,所以越来越多的人开始加入了测试大军中,但由于软件测试在我国的发展时间并不长,所以大家都想要知道如果要从事软件测试行业,该怎么学习呢?
138 0
软件测试怎么学 两种学习方式总有一个适合你
|
程序员
程序员工作中的三个锦囊
程序员工作中的三个锦囊
程序员工作中的三个锦囊
|
设计模式 IDE 测试技术
你是一名努力工作的程序员,还是懒惰的程序员?
当人们在进行一项体力工作时,你很容易评估他们工作的努力程度。你可以看到他们的身体动作,看他们流了多少汗水。也可以去看他们的工作成果:砖墙越砌越高,地上的洞越来越大。对努力工作的认可和奖励是人类一个非常基本的本能,这也是为什么我们对耐力运动如此着迷的原因之一。然而,在管理一些技术创造型的员工时,这种对体力上的努力工作的本能欣赏却变成了一个问题。高效率的知识工作者通常看起来并不像是在努力工作。
你是一名努力工作的程序员,还是懒惰的程序员?
|
Java 程序员 应用服务中间件
影响程序员生涯的三个错误观念,你千万不要犯!
程序员在社会上,到底是怎样一个生活群体?是否能找到自己方向?其实,路一直都在那里,只是你看不到而已! 当初的你,可能一直被一些技术牵着鼻子走,并不是自己在做着自己想做的,而是被技术推到了现在这样子。
1209 0
|
程序员 数据库
工作感悟
技术是为业务服务的。不结合业务使用场景单纯进行框架,语言优劣对比都是扯淡。 接上句,优化重构代码之前要先分析业务场景。 写组件时候要预留一些接口,考虑将来是否要求扩展,避免硬塞。
953 0