你有重构的勇气么?
发布时间:2010-05-03 15:05:00
项目发展到一定程度,因为功能的增多,就会变得越来越臃肿,原来的架构,就会不能满足现有的需求,因为我们有很多最初规划的时候没有想到的事情,比如说在网站或者软件规模小的时候,我们并没有考虑到国际化,但随着发展,我们走出亚洲奔向世界了,这个时候我们需要全世界的人来用我们的产品,这个时候就需要重构了。
有人会问,既然这样,为什么我们不在软件最初架构搭建的时候把这些东西都想进去呢?因为我们在产品的前期开发中,不会有这么多的人力财力投入进去。而且产品是慢慢进化的,不是一天想出来的,功能也会随着增多。还有一个个重要的原因,是技术不在停的进步,比如说原来没有OOP的概念,原来没有Web API的概念,原来没有AJAX的概念,所以我们可能会用一些老旧的技术。
公司的发展也是一种重要的原因,在企业发展初期,公司往往是怎么快怎么来,前期主要是活下来,先生存再生活,一大早就想开个哈里法塔是不现实的,罗马不是一天建成的。我记得曾经有个这样的老板,一个小小的创业型公司,就想着要把系统打造成日访问量500万独立IP的系统(他当时说的是并发500万,呵呵,因为他不懂技术,我认为他想的是日访问量500万),这明显是不现实的,因为一方面,你的团队没有这个能力来盖这么高的房子,迫其而为之,而你又不懂技术,最终得到的只是欺骗。另一方面,我们退一步说,就算你真的有这样的团队,也没必要把资金浪费在这种不靠边的事上。除非你真的经过沙盘推演,有足够的信心和钱烧,让访问量很快达到这个水平,不过我觉得一个创业型公司达到500万独立IP不是一个很容易的事情。
很多公司基本上是这样,在初创的时候,也没有统一的规划,找人是怎么便宜怎么来,结果可能是找一帮实习生来干的活,造成一个项目什么语言都有,完全没有OO的概念,比如我曾经在搜房呆过几天,他们的代码就是如此,Asp.Net的代码完全写在aspx的页面里,一行代码望不到头,没有文档。软通很多的项目也是如此。所以很多时候,你别看公司很大,其实他们的IT项目也不规范,因为真正规范起来的成本还是很高的,前期成本非常高。
扯了这么多,我们该说说重构了,当项目一而再再而三地修改的时候,大家都会很烦,新手可能习惯Ctrl+V和Ctrl+C,我是最痛恨这种行为的,我本身比较懒,只要是在两个地方或者可能会在两个地方出现的代码,我就会提炼出来。面对着一团乱麻的代码,或者技术已经相当落后了的时候,我们就需要重构,重构是需要勇气的,我们需要去说服决策者,这很不容易,因为很多时候决策者不懂技术,你忽然说要重构就意味着大笔的投入,而对于决策者来说,投入就意味着要产出,这个时候技术负责人会面临着很大的压力,很多技术负责人会卡在这里,停滞不前,或者是采用折中的办法。
我们技术负责人应该就决策者关心的事情和他谈,就是投入与产出的问题,这个是决策者都最想知道的问题,如果你能清楚地告诉决策者,投入一千万可以赚下(或者省下)五千万,那么我想他会考虑这个事情,但技术负责人往往不擅长于谈判,或者是说责任心不足。
或者我们可以这样,把过去一年中,在IT中的投入列出,告诉决策都有哪些是通过重构生避免的,同时把过去一年中的机会列出,告诉他如果我们重构生哪些机会可以把握住。
然而,是所有的项目都需要重构么?项目重构都会成功么?未必!但是——我们需要有勇气打破僵局,不破则不立,当原有的系统已经不能满足现在的需要时,我们就打破它,建立一个新的规则。
来源:涂雅 原文网址


猜你喜欢
- Service Unavailable是一种系统的警告提示。如果一个网站的程序占资源太多或者发生太多的错误,系统日志就会提示:“应用程序池
- 我使用的是CentOS 6.5 ,由于卸载Solr 后发现内存占用挺多的,我想释放一下内存,就查阅了一些资料,分享给大家:1.free -m
- 说起电子邮箱,相信不少朋友都会有不下两三个吧?接下来我们将向你介绍如何用计算机来架设一个邮件服务器。一、下载安装WinMail1)首先有请我
- 精博的域名已经由 essentialblog.cn 改为 jingpin.org,下面介绍我是如何更换域名的。一、cPanel 上的操作:在
- 前言众所周知scrapy是Python中鼎鼎大名的爬虫框架,在安装scrapy过程中碰到了openssl某个文件找不到的问题,并进行了分析,
- 理论:分析流量统计报告,挑选核心关键词。实践:“阿江守候”网站已安装“51.la流量分析系统”,想知道网站的哪些关键词比较热门,并做出具有针
- dockerfile里或者在容器里执行yum,报错,找不到源(invalid baseurl xxx),但是宿主机上执行yum是没问题的啊,
- 一、实验环境 编号项目软件及版本1操作系统CentOS62环境软件VMware 123jdk环境jdk1.8.0_1814HadoopHad
- 人说在IT公司没有不忙的。你会发现每天RTX要闪烁几十个对话框是再正常不过的事情。可能你正好在写一个ppt,同时领导安排今天必须出一封邮件,
- 为什么要克隆多个 Linux 系统?因为要玩阿。其实也不是了,就是为了折腾嘛,玩个数据库主从啦、缓存集群啦、分布式消息集群啦、分布式各类服务
- 在Exchange环境中,信息不能被发送的原因有很多。例如,通信线路可能出现故障,或者域名解析器(DNS)可能出现了问题而不能解析接收域。在
- 备受业界关注的新浪分众合并案最终以失败告终。9月28日,新浪与分众传媒同时宣布,将不再延长去年十二月宣布的新浪与分众传媒合并交易的截止日。此
- 大家好,我是良许。在使用 Linux 时,你是否遇到过需要将一些命令串在一起,但是其中一个命令不接受管道输入的情况呢?在这种情况下,我们就可
- 关于做网站,我其实不算高手,只是经验相对来说可能多一些。2003年开始做网站,当时在中学,对电脑的爱好完全是疯狂痴迷,和站长网一起成长,看着
- 环境:1.Windows Server 2016 Datacenter 64位2.SQL Server 2016 Enterprise 64
- 上周,微软正式宣布了移动平台新品牌Windows Phone。从Windows Mobile 6.5系统开始,用该品牌取代之前的Window
- 全球最大的域名注册商Godaddy,继推出优惠码199DOMAIN, 299DOMAIN, 399DOMAIN注册.COM域名后,近日God
- 进入互联网是99年,开始建站是2003年,做过垃圾站,失败了,咱不是什么高手,这些年一直研究地方网站,付出一直大于回报,但我坚信沿着一条正确
- 前言lynis 是一款运行在 Unix/Linux 平台上的基于主机的、开源的安全审计软件。Lynis是针对Unix/Linux的安全检查工
- 如何使用.htaccess使非伪静态页面301跳转到伪静态页面然后再跳转?这是一个比较蛋疼的跳转。因为不小心就会搞成死循环导致页面无法打开。