我所在部门也不是 IT 部门,职位也不是开发职位,但平时工作还是需要大量处理和分析数据、计算和开发各种指标等,还是需要写很多程序,语言以 VBA 和 Matlab。但同时,部门里像着我这种写程序的人并不多,别人并不看我的代码而只关心我提交的结果(说实话,大多数时候即便我写错了也不会有人知道),工作环境也不像专业的 IT 公司或部门,有严格的流程控制和工作平台。我这里没有版本控制、没有自动测试环境、没有代码格式和注释要求,也不需要去 Linux 下干活。我相信国内金融行业有不少人与我处于同样的状态。
这样的状态下,代码质量很难得到保障。这里谈论下我个人维护代码质量的一些做法(目前我已经在维护超过两万行的 Matlab 代码),只针对 Matlab 语言:
1、类封装。这个对很多程序员来说是显然的事情,但类在 Matlab 里面是个新鲜玩意儿,我相信像我这么做的人并不多。类在 Matlab 里效率较低,但我觉得在多数情形下是值得的,比如有下列好处
- Matlab 的类是唯一可以传引用的数据类型,可避免多次的变量复制。
- 类里可内置缓存和传递数据,适用于有大量金融数据的情况。
- (与语言无关)类的重用性相当高,用起来也非常直观。
2、单元测试机制:所在部门并没有一个公共的测试平台,测试只能靠自觉。我是这么操作的:所有的测试文件都以test_
开头,里面写了不少测试案例,一般对每个类或者一类相同类型的函数维护一个共同的测试文件。然后我有一个测试专用文件testfolder.m
,在命令行上输入命令testfolder(directory_path)
,将自动运行 directory_path 目录下所有以test_
开头的.m
文件。directory_path 参数默认为当前工作目录,所以我在写代码时会不断运行 testfolder 或者testfolder('..')
检查代码正确性。
3、版本维护:通常本机只维护一个工作版本,在工作过程中不断进行单元测试,以保证当前代码能正确进行。同时我会定期将代码同步到一台公共机器,可以让同事在上面使用。
4、代码备份:每次启动 Matlab 时会自动运行备份脚本,该备份脚本将上次备份之后修改过的文件重新备份。
5、代码式样:尽量与MATLAB Programming Style Guidelines(中文版)保持一致。
Q. E. D.