中国软件业真的到了该反思的时候了


中国五千年文化造就了我们诸多的性格,当中之中的一个就是好大喜功。这尤其反映在中国的软件产业。

不错。我们确实拥有数量巨大的网民,拥有无与伦比的庞大市场与用户需求,但这并不足以让我们的步入世界率先行列。在巨大的市场优势面前经常让我们有些迷离,有些飘飘然,有些盲目地民族自豪感,喊出诸如“赶英超美”的口号。然而,客观地讲,我们如今却是差距巨大。

或许你认为我这话有些崇洋媚外,但静下心来细致分析我们自己设计的软件。我们注重了软件质量了吗?我们在如履薄冰地进行每一次设计了吗?我们的每个系统都在编写高质量的代码了吗?或许每个项目的第一个版本号我们做到了。但随着软件生命周期的延续,与软件需求的不断变更。我们真的越来越难以拍着胸口说,我做到了。这就是当今中国软件之殇:没有高质量的软件设计。哪来高质量的软件系统?

所以,作为中国软件业中的一员。你应该细致反思了。

以下这篇文章,一个真实的故事,或许能够给你很多的感悟:

2012年,我接到一个任务,对公司一个执行了十年之久的软件系统开展课题研究,使其可以由现有的省集中的运营模式。改为全国集中的运营模式。

将原有的,每一个省一台server的运营模式,改为将全部业务都集中于一台server进行运营,毫无疑问。这是一个性能问题。通过增加缓存、分布式处理、数据库分区、读写分离等技术,从而解决大并发訪问与大数据量处理,问题就攻克了。

起初。我也是这样觉得的。但我真正深入到这个软件系统的程序代码中时却发现。问题不是想象中那么简单。

尽管之前也有所耳闻,但我真正深入到代码中时,还是感到十分的震惊。

整个项目中,一个类数百个方法。一个方法数千行代码的地方。比比皆是。

当你游走于数百个方法。或者数千行代码中时。即使像我这样工作了十多年的老手,要读懂也是相当困难,更别说那些刚毕业的新同学。此时,我意识到,假设不改变现有的代码结构,这个系统真的无法承载不论什么的技术改造。

我造訪了參与这个系统多年的老员工,那些“元老”们。他们告诉我。这个系统事实上在最开初设计上还是非常不错的。然而。经历是十年的维护。各种功能需求。加加减减。不断更新,版本号升级上百次,问题就变得越来越大。

随着人员的流动,一些代码变成了盲区。谁都不明确它的意思,同一时候谁都不敢去对它有不论什么改动,除非迫不得已。每一个新员工加入。都不敢轻易改动原有不论什么代码,而是在原有代码的基础上不断加入代码。这样,随着功能的不断变更,新添的代码就想肿瘤一样不断膨胀,最后由数百行代码扩展成数千行代码,由数十个方法扩展成数百个方法,代码质量不断减少。

慢慢地。程序猿越来越看不懂代码了,但他们又要完毕自己手头的工作,因此开发工作变成了一种冒险。那么公司怎么能保证每次上线的新程序是正确的呢?那就是測试,投入巨大人力与时间的測试。因为程序越来越复杂。每次改动的測试成本都变得巨大。而这时,因为开发者认为。測试人员总数能測出问题来,所以自己仅仅负责开发就能够了。全部的验证工作统统交给測试人员。毫无疑问。这个项目已经陷入了一阵难于自拔的恶性循环之中。维持现状已然疲于奔命。何谈不论什么技术改造?

然而,我觉得这不是一个个案,而是一种普遍现象。大家想想。哪个软件公司没有运营数年的遗留系统?哪个系统不是遭遇频繁变更?在这些系统经历了数十次变更以后,谁还敢拍着胸脯说,我们的设计依旧非常清晰。我们的代码依旧非常优质,恐怕不能。

“就这样吧。好死不如赖活着!”或许大多数人都会这样想,然而却不包含我。我从业数十年就一直是一个救火队员,去解救那些无法再执行下去的软件系统。我非常少开发新的系统,总是在半途去接手一个老系统。这些系统起初代码都十分凌乱,维护十分困难。可是在我接手之日起,事情開始变得好转。我总是在不断改造它们,优化它们的代码。使它们慢慢变得易于阅读、easy维护、easy变更。

慢慢地,我们的维护工作变得越来越轻松,我们開始喝着咖啡,听着音乐,享受编程生活。

我採用的方法就叫“重构”。

重构不是高端大气上档次的华丽名词。也不是病入膏肓才拿出来唬人的终极杀招。

它不是将原有系统改得面目全非,更不是拿着代码一阵瞎改的鲁莽之举。

而是一种科学而稳健的持续改善。经过多年的工作实践,我深深的感到,这样的方法是解决中国软件之殇的最有效方法,由于:

  1. 假如你在维护遗留系统,这个遗留系统本身的设计并不好,代码质量存在问题,那么你能够採用这样的方法,持续而稳健地改造,最后将软件的维护纳入到一个良性的循环中来。

  2. 假如你是一个设计者,你在设计一个新系统。但你的设计能力不足够优秀,不知道如何适应今后的变更,那么没有关系,思考今天的设计。由于有了重构,我们不用操心日后的变更。这样每一个人都能够编写出高质量的程序代码;

  3. 假如你是一个遗留系统的维护者,你发现原有的程序不能适应新的需求,那么没有关系,通过重构先改造原有系统,以适应新的需求,再加入新的需求。这样做,你会发现你非常easy设计出高质量的代码,使得新功能的加入不会减少原系统的质量。

当全部软件企业都做到了这些。那么中国软件的质量就開始提高。中国软件业才真正可以腾飞。

本文作者:范钢。系统架构师。參与过国内数十个大型软件研发项目。

《大话重构》一书的作者。



posted @ 2016-01-23 15:55  mengfanrong  阅读(274)  评论(0编辑  收藏  举报