Matlab 开发准则

作者: , 共 987 字 , 共阅读 0

我所在部门也不是 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.

类似文章:
编程 » Matlab
Matlab 在启动时会自动运行脚本startup.m。在这个脚本里可以自动修改当前目录,修改显示方式等等。比如
基于将工作文件在家里电脑和公司电脑上的转移、Kindle 上电子书的管理的需求,我用 Matlab 写了几个函数,用来实现这些需求。
相似度: 0.129
编程 » Matlab
写了一个统计代码量的函数,函数已上传到 Matlab Central File Exchange下载地址,使用方法:
上次大规模使用 Matlab 还是本科的时候,当时还是 5.3 版,现在重新尝试它,已经是 7.8 ( R2009a ),而且 R2010b 版都已经发售。而这些版本引入的一个新玩意儿便是面向对象化编程( object-oriented programming , OOP )。
本文结论:不要过度担心 Matlab 的传值调用的效率问题。
相似度: 0.093
最近写了一些 Matlab 程序,想起以前想过的一个东西,记录一下。
编程 » Matlab
第一步,which函数可用来获取 Matlab 函数的全路径(包含路径和文件名)。
现在相机的像素实在是太高了,上次去泰山玩,朋友的 1200 万像素的 D90 照出来的照片分辨率高达 4288×2848 ,即使转为 jpg 格式,每张都在 5M 以上。而现在电脑屏幕的分辨率最高也在 1920 以下吧,超高分辨率的照片除了打印大照片之外没什么用处,反而不方便传输、流通、保存。
编程 » Matlab, 编译器
现在比较新的电脑基本上都是 64 位的 CPU , Matlab 也是 64 位的版本,但 64 位的 Matlab 没有自带编译器,需另行安装编译器。下面是方法之一:
编程 » Matlab, 并行计算
parfor适用于
前一篇:
CAPM 公式是指一个组合的预期收益率可以用它的不可分散风险大小所刻画,在数学上,它可以表示为一个组合$ p$ 的收益率$ r_p$ 的表达式:
风险管理 » VaR, VaR Primer
不管受到多少质疑,各大商业银行和投资银行的财务报表显示, VaR 框架已是现代风险管理的事实标准。我打算用接下来三个月的时间,对 VaR 框架进行一个全面的介绍,从历史到未来、从原理到算法、从逻辑框架到技术细节。这是酝酿了将近一个月的文章,原本打算写一个长篇文章,但随着资料的积累,也有了一些雄心,打算将这个领域彻底梳理一篇,到最后将完成若干篇文章,所有文章都将位于VaR Primer系列下。