准备工作:
(0) 结构的分离
先画下流程图,验证没有问题再写程序,同时把不相关的模块分离开,避免一个程序做所有的工作,这样很恶心的
(1)目录结构
这个是个人喜好,但我习惯目录结构如下,供参考;
yourpath/project_name 项目名称
yourpath/project_name/bin/start.sh stop.sh clean.sh 启动与清理脚本
yourpath/project_name/config/conf.ini 程序需要的配置文件
yourpath/project_name/log/ 存放程序运行的日志
yourpath/project_name/src/程序需要的源文件,如c/c++, python, php等
yourpath/project_name/include/ 头文件
yourpath/project_name/lib/ 库文件
yourpath/project_name/automake/ makefile文件
yourpath/project_name/pkg/ 打包生成的文件
以上文件夹可能有的用不上,但希望大家养成习惯,当然可以按自己的结构写,但基本的文件夹还是要的
写程序注意的地方:
(一)完备性:
1,需要的数据信息是否支持动态获取(例如更换机器后程序是否可直接布在上面成功跑通)
2,程序中避免写固定的路径或文件等,把这些都提出来放在配置文件中,一旦改仅改配置文件一个地方
3,预处理的文件读取时避免用固定文件名(即使这个文件名称都是约定成的名称),可以用正则匹配来查找,同时应按创建时间做为参考来查找要处理的文件
3+,对应处理文件的已处理过的位置文件,以避免文件处理一半挂掉时可以接着处理而不是从头处理
4,处理后的文件更改名称(通常改名操作在有新的文件产生后操作,以避免此文件可能有他人使用的风险)
5,demon守护进程是否成功,即是否支持自动启动,多kill掉启动的进程好好测一下
6,既然是处理文件,难免用到fopen, fread ,fwrite, ftell ,fseek 等,应该针对每一个操作都判断其返回值状态并据此判断处理逻辑
7,一定要写程序的运行日志与错误日志,运行日志要具体到主要处理逻辑,错误日志要具体到判断的语句
8,主程序main()中要短而精,逻辑结构一定要清晰,复杂的地方放在单独的处理逻辑中体现
9,程序的监控报警一定要加上,例如程序自动的重启动了,或是数据源有问题等等,这些监控要加以保证自已写的程序的一举一动都知道
10,预运行跑一段时间看看效果是否正确再决定是否正式上线
(二)算法的正确性
1,写必要的验证脚本,即使验证步骤很多,要验证所有的结果是否正确,统计个数是个很好的验证方式(其次验内容)