从华为的遭遇看代码重构

企业动态
大家都知道,最近以美国为首的西方国家正在打压华为,想把华为的5G排挤出西方市场,作为应对措施,华为的高管尤其是任正非,密集地接受了国内外媒体的采访。

 大家都知道,最近以美国为首的西方国家正在打压华为,想把华为的5G排挤出西方市场,作为应对措施,华为的高管尤其是任正非,密集地接受了国内外媒体的采访。

今年1月3号, 网络上还流出一封任正非致全体员工的信, 《全面提升软件工程能力与实践,打造可信的高质量产品》, 初始投入是20亿美元,这是相当大的手笔。

我在知识星球做了一点解读, 其中最感到疑惑的就是这封信的前面主要讲了安全和隐私,达到可信的目标,让客户可以放心购买,放心使用华为的产品。

后面笔锋一转,主要讲要提高代码质量,和腐化的架构/代码做斗争,这和安全和隐私扯不上关系啊。

这中间肯定少了点东西!

今天又看到了英国媒体对华为轮值董事长徐志军的采访,豁然开朗,原来华为最早跟英国政府合作成立HCSEC,华为的源代码是要拿过去,让具备权限的人进行审查,以此证明没有后门,客户可以放心、安全地使用。

现在HCESC提出的问题居然是:华为的代码不够漂亮!

我大胆揣测一下,这句话的潜台词是:你们的代码太多太烂了,我们都看不懂了,怎么能确定有没有后门?

这些代码是华为在通信行业三十年的时间积累起来的,像windows几十年的积累一样,可以想象,这里边得有多少遗留代码。

这要求我觉得确实挺过分的,一般来说,一个软件对外的功能和性能能达到要求就可以了,客户是不去管你内部实现成什么样子,现在人家不但要求功能实现,还要求代码漂亮、易读、易修改。 不但要求结果是高质量的,可信的,连过程也要是可信的。

华为最初的方案是先关注新增代码,对新增代码达到优雅漂亮的要求,别动历史代码,这是很现实的策略,但人家不同意。

没办法,那就开始重构吧, 投入20亿美元,全面提升软件工程能力与实践,打造可信的高质量产品。

要想去重构这样的代码,谈何容易!

首先得理解现有的业务,因为遗留代码虽然烂,但是他能工作!看起来很简单的bug fix是无数人熬夜的结晶,你去重构,能保证这些功能不变吗? 能保证这些bug 不出现吗? 如何用自动化的功能测试,单元测试去覆盖这些代码,让大家去安全重构,真的需要勇气和智慧。

华为这么做,是被形势所迫,也是为未来着想,那其他公司呢?

我在IBM的时候也遇到过很多遗留代码,尤其是那个长达几千行的JSP, 充当了MVC中的Controller角色。代码中充斥这isOK, flag, success 这样的控制变量,搞得程序员痛不欲生。

之前网上流传这一个Oracle数据库开发人员的日常,在Fix一个Bug的时候,需要先花两周的时候去理解20个flag, 理清他们之前的关系, 然后再添加一个新的flag,提交到由100-200台服务器的集群去测试20-30小时,运气好的话有100个测试用例失败,运气不好的话有1000个测试用例失败......

还有很多人吐槽自己公司的烂代码, 可见遗留代码是一件非常普遍的事情,和公司的大小强弱没有关系。

想想也正常,国内互联网行业竞争极为惨烈,工期这么紧,任务这么多,加班加点都干不完, 很多时候简单、快速地完成工作是***要务,根本顾不上优美的设计,漂亮的代码。即使是曾经拥有过的优雅代码, 也会被越来越多的垃圾代码所覆盖。

问题是这样发展下去,早晚要出问题,什么时候去重构代码呢?

【本文为51CTO专栏作者“刘欣”的原创稿件,转载请通过作者微信公众号coderising获取授权】

 

戳这里,看该作者更多好文

责任编辑:武晓燕 来源: 51CTO专栏
相关推荐

2018-03-25 09:18:02

IT

2021-08-03 08:13:48

重构API代码

2015-08-17 10:42:13

2014-12-01 11:15:40

2019-11-26 10:50:47

代码编程语言重构

2014-01-02 10:50:03

华为2014新年致辞任正非

2012-05-28 10:01:19

2019-10-08 09:29:41

架构代码业务逻辑

2017-09-28 10:49:24

数据中心网络重构

2012-07-27 10:30:12

重构

2014-10-08 15:23:09

华为HCC华为云计算大会云计算

2018-08-22 16:43:20

华为

2018-12-20 13:02:02

2011-08-16 09:47:58

编程

2017-01-13 15:25:33

2022-12-29 12:33:20

2022-12-26 00:02:24

重构代码软件

2019-04-03 08:10:17

代码架构信息

2024-02-22 10:27:00

Python开发

2015-08-26 11:02:17

全球主流供应商华为
点赞
收藏

51CTO技术栈公众号