LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资讯 > 英国人说看不懂华为的源代码,那谁看得懂币圈的那些代码呢?

英国人说看不懂华为的源代码,那谁看得懂币圈的那些代码呢?

2019-10-20 岩浆桶 来源:区块链网络

英国人说看不懂华为的源代码,那谁看得懂币圈的那些代码呢?

XNYU37CxFWfOXXkpqLFyumIH1JjJq4Gpu3CD1xar.png

今天看了一篇旧文,大意是说前段时间华为把自己的源代码交给了英国的代码审计机构进行安全性评估,后来英国的网络安全中心给出了代码的评估结果。

华为的代码是一场噩梦,非常复杂,以「不安全」的方式编写,使用「不安全」的代码。考虑到代码的规模和复杂性,导致无法分析代码以寻找错误,更不用说发现隐藏的后门了。即使有后门,也无法跟bug相区分。

英国人说的意思其实很简单,华为的代码太复杂了,看不懂,完全不知道安全不安全,也分不清Bug和后门。

我刚毕业的时候做过大概2年多的程序员,我深深的理解看别人代码过程中,那种痛苦和折磨,有时候看别人写的代码会绝望到怀疑人生,所以此刻我读这篇文章的时候,也能深深理解英国佬的痛苦。

这里不是说华为的代码写的渣,也不是说我曾经看过的代码写的渣(我看过的很多代码都不乏精品),而是有些代码的产出过程并不是严格按照软件工程的规范化流程来的,所以读代码的过程就相当于你在没有说明书的情况下,去尝试使用一个你没有用过的机器设备一样。而当你试图去猜测别人思路的时候,这个过程就会非常痛苦,就像猜谜一样。

如果严格按照软件工程的方法来指导开发过程的话,必须严格遵循软件的设计、开发流程,这样会比较规范,这是刚毕业的大学生都知道的简单道理。那为什么还有那么多团队不按照这个规范的流程来呢?道理也一样简单,就是因为这样做可以节省成本,代价是会降低开发的质量,提高运维的成本,但是,who care呢?

一个相对比较标准的传统软件开发过程大概是这样的:

1、需求人员收集客户需求,形成《需求规格说明书(含原型设计)》,并完成与客户的需求确认工作。

2、系统设计阶段,需要做概要设计和详细设计,整体的界面、技术架构、接口体系和数据库都要做好相应的设计,并输出相应的文档,主要是《概要设计说明书》和《详细设计说明书》,有些时候两者会合二为一。

3、开发阶段,程序员根据设计文档完成开发过程,并同时编写程序注释,但是很多团队输出的代码并没有严格的代码审查机制,所以大量的代码没有注释,后来人想看懂前辈的代码,估计只能靠运气了。这种情况在产品类的开发过程会略好于项目类的开发过程,毕竟产品是需要多次复用的,所以只要研发团队有一个明白人,就会想尽办法抓好相关的工作。

4、测试阶段,其实测试方法有很多种,包括单元测试、交叉测试、集成测试、压力测试、用户接受性测试等等,每种测试手段侧重于不同的需要,目的就是保证代码足够健壮、安全、高效。

5、代码联调阶段主要是在测试环境和生产环境部署代码,并完成联调和测试工作。

6、代码上线一般会集中在系统使用率最低的时段,由团队完成上线工作,测试没有问题后,正式进入运维阶段。

注:互联网应用由于普遍采用敏捷开发的方式,所以开发过程会略有差异,此处不展开讨论。

其实一个严谨的软件开发过程要做的工作还是很多的,至少不仅仅只是写代码,需要很多人参与,也会消耗很多成本进去,所以有时候、有些团队会因为各种各样的原因和目的,会去做一些偷工减料的事情,这一点软件行业和传统行业一样,一点也没有想象中的那么高级。

我曾经看过一些币圈项目托管在Github上的代码,有些团队的代码真的是惨不忍睹,更不用说完善齐备的各种设计文档了。而且有些团队的代码都不是简单的“蠢”可以形容的了,各种显而易见的抄袭和错误。

所以,我有时候看到很多项目方把代码更新频度作为宣传推广的一个重要的数据,我确实觉得无法理解,一包垃圾是垃圾,一堆垃圾依然是垃圾,一堆被频繁搬来搬去的垃圾,它就不是垃圾了?

但是,很多没有过开发经历和代码概念的人,就相信这个指标,而且深信不疑。所以对于很多不懂代码的外行来说,即使项目方把所有的骗局都摆在你眼前,你也无法看穿,这也是为什么很多项目方明目张胆诈骗的原因所在。

—-

编译者/作者:岩浆桶

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...