公司在4月份的时候一个团队总体离职(我最怕这个),他们的服务器代码交接是我组长去作的。因为新项目要给客户部署,因此咱们须要熟悉上个团队的代码。以前的代码是用java写的,用了比较多的框架,而目前接手的组长和我对于java都不是很熟悉。因此摆在咱们面前的有两条路:
1.熟悉Java代码、相关的框架以及开发工具,继续使用java开发。
2.根据业务流程和目前的java代码以及文档,采用C++重写。
领导决定采用方案2,所以重构和完善变成了重写。java
咱们最开始的工做是阅读留下来的文档,主要的阅读部分是接口文档。接口文档基本描述了各个模块交互的消息定义、字段含义以及交互流程。我跟组长也把目前的业务流程过了一遍,就开始了代码编写的工做。c++
咱们的C++代码的网络库采用的是asio,没有boost依赖。以前的项目都是采用这个库,因此这部分基本没有怎么花费时间。接下来就是编写对每一条消息的处理了,接口文档中没有对这部分的业务流程进行较为详细的描述,也没有对应的流程图之类,因此只能一边写,一边阅读java代码。apache
由于对java框架不熟悉,刚刚开始的时候,每每须要很久才能找到消息处理的地方。后来就是根据java代码,编写对应的c++处理流程。在这个过程当中对于我来讲比较难的部分就是不要有处理流程的遗漏,这个部分在组长建议下,采用了一步一步来对比的方式,过程很痛苦,效果还不错。编程
究竟是代码在说谎,仍是文档在骗人。
---昊哥服务器
这个过程当中比较郁闷的事情就是代码和文档的描述不一致,而只有等测试的时候才发现这个问题,原来昊哥有先见之明。记得在知乎上看到@左耳朵耗子 说的文档描述了Why,而代码描述了How,因此咱们作的事情大约就是How(java)---->Why----->How(c++)。网络
祝贺咱们,终于编写完成了其中的一个服务程序,能够进行测试了。在收发短信的测试过程当中,发现因为短信的消息定义不一致,致使每次发送的时间戳相同。客户端在收到短信消息之后,会检查时间戳,相同的不予以显示,所以每次只看到了一条。这个也是过了很久才发现,也说明了熟悉业务的重要性。框架
经历了一个半月的工做,终于完成了初步知足功能的程序,也是时候进行简单的总结了。编程语言
学过《编译原理》以后,以为本身了解了程序编译的过程,特别是自学了号称最难学的c++以后,就认为新的编程语言不在话下。接手这个开发任务半个月以后,才知道真的是too young,to naive。java的代码看起来云里雾里的,配置文件的对应关系,函数的调用流程...分分钟干翻我。因此仍是Good good study,day day up吧。函数
每个框架都在发明属于本身的语言。工具
就拿作Web开发举例吧。
编程语言 | Web框架 |
---|---|
java | Structs、Spring、Hibernate、SpringMVC |
Python | Django、Flask |
Php | Laravel、Phalcon、Symfony2 |
C | CGI,apache模块 |
c++ | asio,muduo... |
编程语言多,对应的框架多,仍是能够理解的。可是每种框架的逻辑相差很大,致使的问题就是是你在换一种编程语言的同时,几乎全部的那个编程语言的框架的知识都被替换掉了,因此不能轻易的转换编程语言。
文章的最后,感谢侯俊杰老师《深刻浅出MFC》带我走过了学习了MFC的最开始的时光,让我在使用这个框架的时候有迹可循。