青青子衿, 悠悠我心, 但为君故, 沉吟至今
« 百度奇艺网的Hulu模式在中国的生长写给新入IT的新人们 »

你有重构的勇气么?

  项目发展到一定程度,因为功能的增多,就会变得越来越臃肿,原来的架构,就会不能满足现有的需求,因为我们有很多最初规划的时候没有想到的事情,比如说在网站或者软件规模小的时候,我们并没有考虑到国际化,但随着发展,我们走出亚洲奔向世界了,这个时候我们需要全世界的人来用我们的产品,这个时候就需要重构了。

  有人会问,既然这样,为什么我们不在软件最初架构搭建的时候把这些东西都想进去呢?因为我们在产品的前期开发中,不会有这么多的人力财力投入进去。而且产品是慢慢进化的,不是一天想出来的,功能也会随着增多。还有一个个重要的原因,是技术不在停的进步,比如说原来没有OOP的概念,原来没有Web API的概念,原来没有AJAX的概念,所以我们可能会用一些老旧的技术。

  公司的发展也是一种重要的原因,在企业发展初期,公司往往是怎么快怎么来,前期主要是活下来,先生存再生活,一大早就想开个哈里法塔是不现实的,罗马不是一天建成的。我记得曾经有个这样的老板,一个小小的创业型公司,就想着要把系统打造成日访问量500万独立IP的系统(他当时说的是并发500万,呵呵,因为他不懂技术,我认为他想的是日访问量500万),这明显是不现实的,因为一方面,你的团队没有这个能力来盖这么高的房子,迫其而为之,而你又不懂技术,最终得到的只是欺骗。另一方面,我们退一步说,就算你真的有这样的团队,也没必要把资金浪费在这种不靠边的事上。除非你真的经过沙盘推演,有足够的信心和钱烧,让访问量很快达到这个水平,不过我觉得一个创业型公司达到500万独立IP不是一个很容易的事情。

  很多公司基本上是这样,在初创的时候,也没有统一的规划,找人是怎么便宜怎么来,结果可能是找一帮实习生来干的活,造成一个项目什么语言都有,完全没有OO的概念,比如我曾经在搜房呆过几天,他们的代码就是如此,Asp.Net的代码完全写在aspx的页面里,一行代码望不到头,没有文档。软通很多的项目也是如此。所以很多时候,你别看公司很大,其实他们的IT项目也不规范,因为真正规范起来的成本还是很高的,前期成本非常高。

  扯了这么多,我们该说说重构了,当项目一而再再而三地修改的时候,大家都会很烦,新手可能习惯Ctrl+V和Ctrl+C,我是最痛恨这种行为的,我本身比较懒,只要是在两个地方或者可能会在两个地方出现的代码,我就会提炼出来。面对着一团乱麻的代码,或者技术已经相当落后了的时候,我们就需要重构,重构是需要勇气的,我们需要去说服决策者,这很不容易,因为很多时候决策者不懂技术,你忽然说要重构就意味着大笔的投入,而对于决策者来说,投入就意味着要产出,这个时候技术负责人会面临着很大的压力,很多技术负责人会卡在这里,停滞不前,或者是采用折中的办法。

  我们技术负责人应该就决策者关心的事情和他谈,就是投入与产出的问题,这个是决策者都最想知道的问题,如果你能清楚地告诉决策者,投入一千万可以赚下(或者省下)五千万,那么我想他会考虑这个事情,但技术负责人往往不擅长于谈判,或者是说责任心不足。

  或者我们可以这样,把过去一年中,在IT中的投入列出,告诉决策都有哪些是通过重构生避免的,同时把过去一年中的机会列出,告诉他如果我们重构生哪些机会可以把握住。

  然而,是所有的项目都需要重构么?项目重构都会成功么?未必!但是——我们需要有勇气打破僵局,不破则不立,当原有的系统已经不能满足现在的需要时,我们就打破它,建立一个新的规则。

  来源:涂雅投稿,原文网址,转载请保留此链接,否则视为侵权。



  除非注明,月光博客文章均为原创,转载请以链接形式标明本文地址

  本文地址:http://www.williamlong.info/archives/2162.html
  • 文章排行:
  • 3.无损检测
  • 东西总不能等完美时再推向市场,不然微软就没有今天的实力了!呵呵~先上线了,再慢慢打补丁吧!
  • 2010/5/4 22:06:00   支持(19)反对(12) 回复
  • 5.月落天涯
  • 在系统分析师眼里 重构是在一定条件下必须进行的活动 不存在勇气的问题
  • 2010/5/1 22:17:15   支持(22)反对(16) 回复
  • 6.yukon
  • 并发500万。呵呵。百度都不大敢说这话。谷歌还有可能。
    个人认为使用轻量级框架+高水平人员写公用代码,才是比较好的解决方法。
  • 2010/5/1 2:06:48   支持(14)反对(9) 回复
  • 7.kaigo
  • 这是一件非常危险的事情。
    但是可以做。必须慎重。
  • 2010/5/1 2:04:19   支持(13)反对(9) 回复
  • 8.水上滚筒
  • 很苦恼 下次再来看看
  • 2010/5/6 17:04:44   支持(18)反对(14) 回复
  • 9.摩尔博客
  • 如果重构是必须的,就不要逃避.问题的关键在于如果让下次重构的周期变得更长
  • 2010/5/1 2:15:09   支持(14)反对(11) 回复
  • 11.雨碎江南
  • 我喜欢这篇文章...代码整洁度对项目后期的开发速度影响是决定性的,这点我亲身实践过--当你面对一个1000行的方法的时候根本无从下手.
  • 2010/5/1 8:34:26   支持(11)反对(9) 回复
  • 13.webcgo
  • “比如我曾经在搜房呆过几天,他们的代码就是如此,Asp.Net的代码完全写在aspx的页面里,一行代码望不到头,没有文档。软通很多的项目也是如此”

    呵呵,感同身受,本人现在供职的公司也是这样,现在网站PV 6000万以上,但是代码也是非常不规范!
  • 2011/1/4 23:18:49   支持(11)反对(9) 回复
  • 14.geox
  • 中国人从来都喜欢小打小闹,耍耍小聪明,总觉得老外这里傻那里笨,根本不知道规范是什么,规范对技术行业的重要性
    股票入门 于 2010-5-2 21:11:59 回复
    赞同。
  • 2010/5/1 10:16:39   支持(15)反对(14) 回复
  • 15.RayChow
  • 我相信,按照规范去开发,以后重构带来的问题会少很多。
  • 2010/5/1 13:41:58   支持(12)反对(11) 回复
  • 16.双鸭山
  • 不敢轻易弄啊,真的怕弄不好,结果是不好的,所以一切都得慎重再慎重
  • 2010/5/1 19:46:45   支持(15)反对(14) 回复
  • 17.gloomyblog
  • 重构非常痛苦的,其实个人看法船小好掉头~
  • 2010/5/2 1:06:29   支持(15)反对(14) 回复
  • 18.保健枕头
  • 顶一个!过来好好学习!
  • 2010/6/19 17:30:02   支持(12)反对(11) 回复
  • 19.ezsky
  • 一开始上规范化就是找死(早死), 一开始没有规范化就是等死.
  • 2010/10/12 1:13:45   支持(11)反对(10) 回复
  • 20.shell
  • 我非常讨厌不规范乱七八糟的代码。
  • 2011/6/10 0:08:34   支持(10)反对(9) 回复
  • 22.Jacse
  • 现在看新浪网的首页就让人很头疼,很喜欢腾讯首页的排版和内容提供。
  • 2010/5/1 14:09:42   支持(13)反对(13) 回复
  • 23.湖南塔吊
  • 重构确实是一件很苦恼的事情,成本与时间花费的问题,产出比例的问题都需要考虑
  • 2010/5/2 0:16:26   支持(13)反对(13) 回复
  • 24.DD
  • 慢慢改呗。LS说的很对,微型的可能会容易些。但是如果代码多的话,嘿嘿~~
  • 2010/5/2 15:11:25   支持(15)反对(15) 回复
  • 26.路人
  • 不仅仅是小公司的代码混乱,就连大公司还用这是十几年前开发的代码呢.开发也只是ctrl+c ctrl+v 拿现有的别人的写好的东西修改下.开发哪能想到后期维护的成本又有多高呢? 中国就是个守旧的国家.大多数老板又都比较守旧,迂腐.他们觉得这样使用稳定的东西 可以减轻压力,搞技术投入,不如把钱直接拿出来打通关系好.
  • 2010/5/1 8:51:30   支持(18)反对(19) 回复
  • 27.自由人
  • 说的很好。。。很多东西初期是考虑不到的、、、
  • 2010/5/1 21:15:02   支持(9)反对(10) 回复
  • 28.很多年没访问过新浪了
  • 很多年没访问过新浪了, 还有sohu, 不知道还有没有像我这种的
  • 2010/10/27 19:52:37   支持(13)反对(14) 回复
  • 29.网络人生
  • 对这方面不太了解,不过还是认真看完了。
    暮光博客 于 2010-5-1 12:16:00 回复
    真是隔行如隔山啊,我也看不懂~
  • 2010/5/1 0:18:46   支持(9)反对(11) 回复
  • 31.tunpishuang
  • 中国的很多软件的代码读起来确实。。。。。太没框架思想了。
  • 2010/5/1 19:42:01   支持(11)反对(14) 回复
  • 32.业余的
  • 最近编的一个本地程序也遇到了这个问题,鼓了三天还是没有足够的勇气...
    磨刀不误砍柴工,看到花三分之一的生命周期来做规划是值得的
  • 2010/5/1 0:41:23   支持(11)反对(15) 回复
  • 33.安庆法律人
  • 是IT人写的,这种困扰我也多次遇见
  • 2010/5/1 6:26:41   支持(11)反对(15) 回复
  • 34.hong
  • 月光最近结识了位Web前端达人?
  • 2010/5/1 23:50:31   支持(9)反对(14) 回复
  • 35.石头
  • 最近正在重构公司网站,累死了
  • 2010/5/3 9:50:50   支持(9)反对(14) 回复
  • 36.路人
  • 这的确需要一种魄力,不过貌似推崇技术的公司,大多都是杯具..在这个地方技术不值钱.
  • 2010/5/1 8:53:07   支持(8)反对(15) 回复
  • 37.现代魔术
  • 重构确实需要勇气和心思,相比之下,开启一种无限模块机制绑定在一个主轴上的做法更有利于长期发展。
  • 2010/5/1 19:19:29   支持(9)反对(17) 回复
  • 38.ColinHan
  • 月光的博客的内容似乎有点乱了,我还是更喜欢看月光原创的东西,即使投稿也应该和月光的主旨一致的文章。

    这一篇,有点穿越了。另外,从技术上来说,说的不痛不痒,软件开发技术论坛中这样的文章一抓一把。
    OurDearAmy 于 2010-5-1 23:59:30 回复
    我也是一样的观点
  • 2010/5/1 23:53:14   支持(11)反对(29) 回复

发表评论:

 请勿发送垃圾信息、广告、推广信息或链接,这样的信息将会被直接删除。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 关注新浪微博:关注新浪微博
  • 关注腾讯微博:关注腾讯微博
  • 关注认证空间:关注QQ空间
  • 通过电子邮件订阅
  • 通过QQ邮件订阅

站内搜索

热文排行


月度排行

本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享. 转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议.
This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.