1、必须熟知的知识体系
通用技术
- TCPIP协议
- 操作系统
设计与编码
- 设计模式
- 网络编程(ACE,TAO)
- 编程技术细节(数据结构,性能等)
逻辑推理
- 通用算法
2、技术提升
除了tcpip和操作系统需要日复一日的学习外,其他能力可以通过总结+实践的方式来提升。
设计模式|途径:看书+阅读优秀代码+手动实践
- 总结设计原则应用的场景->什么场景应用什么原则。在实践的时候要用所有的设计原则来修正、折中程序的实现方式。
- 总结设计模式应用的场景,设计模式与场景应用关联性更强,一定要总结出所有设计模式的优势与劣势,然后才能正确的和应用场景结对。在完成程序之前就需要将所有的设计模式与需求场景对应起来,然后选择一、多种模式来完成编码。
网络编程(ACE)|途径:阅读优秀代码+手动实践
- 总结各种网络编程代码的示例,形成一套网络编程实现体系,包括socket,accept,select,poll等等,这些自己总结的代码范例可以成为一个自己测试代码集的动态库,有朝一日,源码+动态库形成规模,关于网络编程的测试代码可以迅速出炉。另一方面,这种方法可以让自己更加理解设计模式与数据结构中的一些应该注意的细节。
- 尝试各种模板编程,将自己的实现代码尝试整合为各种模板。
- 整理文件操作与字符串操作接口集。
编程技术细节|途径:阅读书籍+手动实践
- effective C++总结与注释,总结各种原则,并对各种原则的原因进行注释。
- 总结各种数据结构(包括stl相关数据结构)的优势与劣势,适用场景,争取在使用的时候直接查询相关内容即可知道应该使用且如何使用数据结构。
- 总结各种代码可能导致的性能问题,此问题可能和第一条重复了,看学习情况。
通用算法|途径:看书+手动事件+从优秀代码中找算法影子
- 算法现在基本已经成熟,需要总结各种算法适用的条件与场景并将算法实现,在使用的时候可以直接copy,要用算法的时候根据场景和条件去查询,这一条总结起来有些难度。
3、代码自检要点
- 逻辑不检查
- 检查多线程问题
- 检查多平台问题
- 检查锁问题
- 检查变量的生命周期
- 检查入参
- 检查返回值
- 检查所有的指针使用
- 检查库依赖与头文件包含问题
- 检查Trace是否易于定位
- 最后一条,检查各个代码语句操作系统是怎么运行的,以此推断是否会产生性能,初始化等各种问题
- 确定任何函数如果操作的是多个对象,且这些对象有可能是同一个对象时,其行为仍然正确
4、如何实践
阅读代码
阅读代码的(基本原则就是从大到小的阅读)同时应该想起多少事情:
- 从大的方面阅读首先要将当前代码往设计模式与设计原则上套,看看哪点成功运用了各种设计。这样一条或多条成功应用设计模式的案例就有了。
- 从小的方面就可以查看代码使用的网络编程方法、设计的数据结构(是否缺一不可,数据集是否完备,使用了哪个数据结构,为什么?),模板类在什么条件下可以使用,文件与字符串操作时怎么使用的,各种实现算法中是否有优秀算法的影子、
看书
看书有感,随时总结。
手工实践
实际代码规范保存,注释以及背景介绍要多。
时间管理
每日14:00~14:40 看书时间
每日9:20~10:00 看书时间