博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从重构到重写
阅读量:6758 次
发布时间:2019-06-26

本文共 1522 字,大约阅读时间需要 5 分钟。

从重构到重写

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框架
java Structs、Spring、Hibernate、SpringMVC
Python Django、Flask
Php Laravel、Phalcon、Symfony2
C CGI,apache模块
c++ asio,muduo...

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

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

转载地址:http://cfweo.baihongyu.com/

你可能感兴趣的文章
DataTable
查看>>
随题而学(一)
查看>>
[转] 前后端分手大师——MVVM 模式
查看>>
NuGet -- 如何创建及发布自己的程序包
查看>>
显示应用名称
查看>>
mac显示隐藏文件
查看>>
阅读《构造之法》2
查看>>
TPS、并发用户数、吞吐量关系
查看>>
jquery.nicescroll完美滚动条使用方法
查看>>
如何灵活的运用before和after
查看>>
人人都能学会的python编程教程15:高级特性2
查看>>
[BZOJ 2330][SCOI2011]糖果(差分约束系统)
查看>>
【NOIP】提高组2014
查看>>
【Atcoder】ARC 080 F - Prime Flip
查看>>
【CodeForces】671 C. Ultimate Weirdness of an Array
查看>>
Android Studio DDMS无法查看文件树问题
查看>>
QPS,用户平均等待时间,服务器平均请求处理时间
查看>>
uni-app · 支付宝小程序踩坑
查看>>
Wndows server 2008 R2 总是卡住 “Applying computer settings”
查看>>
序列化解决方案,就是采用二进制通信协议(数据报文格式)
查看>>