从华为的遭遇看代码重构

大家都知道,最近以美国为首的西方国家正在打压华为,想把华为的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个测试用例失败......

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

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

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

640?wx_fmt=png

个人广告时间, 知识星球“码农翻身”特价优惠中,原价128元/年, 优惠价:99元(截止到2月28号)。

星球详细介绍猛戳: 码农翻身知识星球

对于加入知识星球的同学提供特别的福利,即 编程提高群第一季第二季的部分“加餐”视频:

漫谈计算机组成原理和计算机编程语言

程序的机器级表示

漫谈操作系统之虚拟内存

进程和线程

新人在职场

Java 并发编程

如何用 Antlr 实现自定义的简单脚本语言

缓存

BTree 及其在数据库的应用

分布式文件系统 FastDFS

今年会再额外送5个

Web安全

字节码和AOP

Web SSO

微服务入门

漫谈文件系统

相信这些视频就能值回大部分票价了。 

640?wx_fmt=jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值