由面向过程编程转向面向对象编程
收获
对变量作用域有了更深的了解,不在是简单地写全局变量,而是通过C++类的封装机制,控制数据的作用范围;通过仿真网关代码中的UserRunner类继承TThread类,覆盖TThread类中的Run()方法实现一个线程,在外部通过UserRunner类所继承TThread类的Start()方法启动该线程;通过CTapServiceApi类的纯虚函数,了解多态,即父类对象的指针可以调用子类的成员
遗憾
没有仔细阅读过TThread类的代码,该类还提供锁机制和信号量,自己没有去看,损失啊
C++容器
收获
学习了string,vector,queue等容器的使用
遗憾
也就仅仅是会用而已
回调函数机制
通过APIDemo初步认识了回调函数机制,CTapServiceSpi加深了对回调函数的理解:只需在代码中设置回调,就可以等待异步数据的传入,而主进程不用做任何附加的操作
学习使用vs2013
学习vs2013IDE的使用,新建C++ 项目,导入项目所需库,通过类视图观察项目结构,通过调用层次结构查看函数的相互调用关系;学会调试C++ 项目,明白了调试的重要性与优势:可以更清楚地了解代码真实的执行流程,通过设置断点观察是否被触发可以更快更准确地定位问题,远远优于机械地用打印的方法定位错误
Linux C++编程
学习Linux多线程编程,启动线程,终止线程,学习使用NetBeans,在NetBeans上构建C++项目,向项目中导入so库,添加库目录,添加编译选项、Xshell链接远程主机,手动检查发送到远程主机上的项目和本地项目是否一致,NetBeans调试C++ 项目;NetBeans代码对齐;NetBeans代码补全
网关服务模块
在总线连接类的OnMessage方法的实现中,一开始并不理解为何要加状态判断,并没能领会到精髓,后来在此时过程中明白了,加上状态判断是多么的明智,因为总有一些意外情况出现,也就是说自己的代码并不是在自己的可预测的环境中运行,应对各种突发事件都应有一个策略,不然只能等着陷入:修改代码–>编译代码–>重启程序的深坑;学习了类的层次结构,从管理类到功能实现类从高层到底层为金子塔型
监控服务模块
在做监控服务项目过程中,学习了CURL,在Linux环境下编译CURL库并使用,由于做了网关服务,在一些流程上更熟悉了,因此进度明显比做网关服务快,基本完成了要求的功能,但是在数据统计、类结构设计上还是有待提高
整体总结
在仿真测试工具项目中,历经撰写需求文档,编码,测试单个类,测试模块,代码走查,项目联调,详细设计文档,编写测试用例等过程。体会到做项目和之前自己写小程序有很大不同:自己写小程序输入是特定的,有严格要求的,所以只需关注算法实现;而做项目所面临的输入环境真可谓千变万化,作为编程人员必须考虑到各种突发情况,并做出应对,而不仅仅是考虑算法的实现。当然,一个高效率的算法在这两种情况下都是必须的。重新认识了编程。
接下来的学习计划
学习设计模式,书籍《大话设计模式》《MySQL必知必会》《计算机程序的构造和解释》《编译原理(龙书)》