重构比特币代码英雄帖之广招天下英豪

-----SBTC团队

Jean.J.Labrosse先生在90年代的时候在设计一个基于Intel 80C188的产品的时候,需要一个实时内核。一开始为了能尽快完成开发任务,先是在廉价的内核上花了大量的时间来调试,因为问题太多而转到另一个昂贵的知名内核上进行开发,结果还是出现很多末知的bug,然后在上面修修补补,最终在发现花费了大量的时间和精力,产品的开发也耽误了,结果还是不尽如人意。这个时候他才明白问题的根源在于原始内核代码太差,于是他决定用自己的业余时间来重写一个实时内核,也就是重新写一套高质量的代码体系,后来大名鼎鼎的μC/OS(此内核在2000年得到美国航空管理局(FAA)的认证,可以用于飞行器)就此诞生了。

很多人认为重构浪费时间,影响项目进度,其实不然,重构不仅可以让我们的代码更加合理而且还可以加快我们的项目进度。这就好比现在盖一个高楼大厦,我们的架构和地基越好,那么建成的楼房就会越坚固和越牢靠。

首先,重构代码可以提高软件的扩展性和维护性。

重构就是通过调整程序代码,但并不改变程序的功能特征,达到改善软件的质量和性能的目的,使程序的设计模式和架构更趋合理,也更容易被理解,提高软件的扩展性和维护性。

其次,需求的不断变更是重构的最根本原因。

比特币的出现,无疑是一项重要的发明,张首晟教授说的“区块链是一个非常美妙的设计,用了人类所有知识的精华”,这句话用在比特币身上恰如其分。

我们不否认比特币是一项伟大而有意义的发明,但不可忽视的是其原生代码的结构看起来相当混乱。造成这一现象的主要原因是由于代码从一开始就没有从整体上进行好好规划,随着时间的推移、需求的剧增,必须不断的修改原有的功能、追加新的功能才能维持整个系统的运转,还避免不了有一些缺陷需要修改。为了实现变更,就必须要违反最初的设计构架。

这样经过一段时间的修改以后,软件越来越难维护,新的需求越来越难实现,最初的代码构架对新的需求渐渐的失去支持能力。而且原生代码中很多功能的实现都是过程式的编程,根本就没有使用面向对象的思想去实现。这样不但是为添加新特性时增加了工作量,同时也让代码显得相当的冗余繁杂,耦合性强,基于其基础之上的二次开发代价也相对比较大。

面对比特币原生代码的这些种种不合理性,却一直没有团队站出来对其进行重构,所以,SBTC团队决定把比特币原生代码做重构优化,让其结构更为合理。也为后面社区添加一系列新特性做更好的准备。

我们准备要做的事情:

1、用Web版钱包取代QT钱包

2、用Cmake取代maketool作为编译管理工具

3、用面向对象的思想,对代码中的各个模块进行分割

4、去除大量满天飞的全局变量,对代码进行有效封装

5、简洁灵活的程序框架

6、程序参数解析改用boost:option

7、模块之间的通讯用消息总线和直接调用相结合的模式

通过代码重构可以达到以下的目标 :

1、改进软件设计

2、使代码更容易被理解

3、帮助发现隐藏的代码缺陷

4、提高编程效率,加快项目进度

重构完成之后,希望代码可以合并到比特币的主分支,为比特币社区的发展略尽绵薄之力,同时我们也希望BCH,Bitcore,接受我们的Pull Request,号召更多的技术大牛加入我们的行列中,为社区贡献一分力量。

极客网企业会员

免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。

2018-02-06
重构比特币代码英雄帖之广招天下英豪
Jean J Labrosse先生在90年代的时候在设计一个基于Intel 80C188的产品的时候,需要一个实时内核。

长按扫码 阅读全文