zoukankan      html  css  js  c++  java
  • 中国软件业真的到了该反思的时候了


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



  • 相关阅读:
    记录一下最近面试的总结
    网络模块相关面试题
    JVM 之类加载器
    一段简单的关于字符串的 Java 代码竟考察了这么多东西
    LeetCode 链表题 ( Java )
    MD5 加盐加密
    SpringMVC 学习笔记
    [redis]dict和rehash
    [redis]SDS和链表
    [go]包和工程管理
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5153464.html
Copyright © 2011-2022 走看看