从重构到重写

从重构到重写

1 由来

公司在4月份的时候一个团队整体离职(我最怕这个),他们的服务器代码交接是我组长去做的。由于新项目要给客户部署,所以我们需要熟悉上个团队的代码。之前的代码是用java写的,用了比较多的框架,而目前接手的组长和我对于java都不是很熟悉。所以摆在我们面前的有两条路:
1.熟悉Java代码、相关的框架以及开发工具,继续使用java开发。
2.根据业务流程和目前的java代码以及文档,采用C++重写。
领导决定采用方案2,因此重构和完善变成了重写。

2 开始重写

2.1 熟悉文档

我们最开始的工作是阅读留下来的文档,主要的阅读部分是接口文档。接口文档基本描述了各个模块交互的消息定义、字段含义以及交互流程。我跟组长也把目前的业务流程过了一遍,就开始了代码编写的工作。

2.2 代码编写

我们的C++代码的网络库采用的是asio,没有boost依赖。之前的项目都是采用这个库,所以这部分基本没有怎么花费时间。接下来就是编写对每一条消息的处理了,接口文档中没有对这部分的业务流程进行较为详细的描述,也没有对应的流程图之类,所以只能一边写,一边阅读java代码。

* 我们是翻译

因为对java框架不熟悉,刚刚开始的时候,往往需要好久才能找到消息处理的地方。后来就是根据java代码,编写对应的c++处理流程。在这个过程中对于我来说比较难的部分就是不要有处理流程的遗漏,这个部分在组长建议下,采用了一步一步来对比的方式,过程很痛苦,效果还不错。

 * 谁骗了我们

到底是代码在说谎,还是文档在骗人。
               ---昊哥

这个过程中比较郁闷的事情就是代码和文档的描述不一致,而只有等测试的时候才发现这个问题,原来昊哥有先见之明。记得在知乎上看到@左耳朵耗子 说的文档描述了Why,而代码描述了How,所以我们做的事情大约就是How(java)---->Why----->How(c++)。

2.3 代码测试

祝贺我们,终于编写完成了其中的一个服务程序,可以进行测试了。在收发短信的测试过程中,发现由于短信的消息定义不一致,导致每次发送的时间戳相同。客户端在收到短信消息以后,会检查时间戳,相同的不予以显示,因此每次只看到了一条。这个也是过了好久才发现,也说明了熟悉业务的重要性。

 3.写在最后

经历了一个半月的工作,终于完成了初步满足功能的程序,也是时候进行简单的总结了。

3.1 编程语言是相通的

学过《编译原理》之后,觉得自己了解了程序编译的过程,特别是自学了号称最难学的c++之后,就认为新的编程语言不在话下。接手这个开发任务半个月之后,才知道真的是too young,to naive。java的代码看起来云里雾里的,配置文件的对应关系,函数的调用流程...分分钟干翻我。所以还是Good good study,day day up吧。

3.2 技术栈的差别很大

每一个框架都在发明属于自己的语言。

就拿做Web开发举例吧。

编程语言Web框架
javaStructs、Spring、Hibernate、SpringMVC
PythonDjango、Flask
PhpLaravel、Phalcon、Symfony2
CCGI,apache模块
c++asio,muduo...

编程语言多,对应的框架多,还是可以理解的。但是每种框架的逻辑相差很大,导致的问题就是是你在换一种编程语言的同时,几乎所有的那个编程语言的框架的知识都被替换掉了,所以不能轻易的转换编程语言。

文章的最后,感谢侯俊杰老师《深入浅出MFC》带我走过了学习了MFC的最开始的时光,让我在使用这个框架的时候有迹可循。

转载于:https://www.cnblogs.com/Dennis-mi/p/7076279.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值