我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。
这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。
源码指引:github源码指引_初级代码游戏的博客-CSDN博客
谈谈项目开发中的几个关键环节,都是软件开发的基础内容。
目录
1,裸机环境
包括刷机包用来恢复硬件、干净的带有标准编译环境的虚拟机用来研发。
做大型项目、大型机、小型机上的项目的人常常是依赖专职管理员部署开发环境,在单一主机上共享开发,环境特殊、必须如此的当然无话可说,只是很多人因此遗留下毛病,只要可以让别人去部署自己就绝不动手,只要跟unix/linux沾边就说要用服务器。运行在小盒子里的linux也要管理员去部署?——还真这样干。
这些都是毛病。自己部署虽然花点时间,但极大提高了开发方便性,减少了互相冲突。
还有人说目标设备有特殊性什么的,细微差异稍微动动脑子就能用代码解决了。
2,一键编译和打包,一键部署
这是个复杂工程,需要【核心开发者】亲自操作,反复修改脚本直到一次执行成功,一键部署在所有裸机环境可以正常运行基本功能。如果没有经验,搞这个可能得好几天甚至一两个星期,越早做越容易,搞的时候辛苦,搞好之后就太爽了。搞的过程中你会发现很多细节问题是之前没有考虑的,其实都是坑。
以上是研发提交测试之前要完成的,程序跑不起来是A级BUG,遇到A级BUG测试就要终止,继续测试没有意义。
比如某系统的基本功能:新增一个协议-运行协议-收到上报数据,这些完成不了就不要提交测试,没设备用程序内部模拟一个设备就行(可用的模拟器很多,而且很多库自身就支持充当服务器)。
3,有BUG就要分析
操作不对还是程序不健壮,操作不对是文档问题,文档问题也是BUG,程序不健壮就要出修改方案来预防。
如果只着眼于把缺陷标记为“已修复”,其实解决不了真正问题,相当一部分问题是设计缺陷,要有勇气怼领导,多花点时间解决设计缺陷。
4,主干功能稳定性优先
还不能稳定运行的时候先解决稳定性问题,把不确定性高的部分都砍了(用模拟协议驱动,有问题直接修改源码,直到基础架构稳定)。
主干功能稳定了才好说别的,主干功能能稳定运行就可以忽悠领导了,别的枝节问题以后慢慢做,实际使用的时候如果有替代方法也是可以的(也就是说很多枝节功能其实没有也没关系)。
另:
编译时间问题
用点脑子啦!不需要每次都编译第三方库,编译环境不变、第三方库没有修改就不需要重复编译,正确组织源码结构,方便全量编译和单独编译某个模块。cmake其实对开发很不友好,开发过程中经常需要增加文件,每次都要重新cmake一把,搞不好就要全量编译。
核心开发者负责从不同库拉取源代码构建完整源码,然后从完整源码编译,完整源码和编译产物要保存在一起(同一个库或者打包成一个压缩包保存)。一个项目搞几十个库是咋想的?
(这里是文档结束)