我曾在某大学实验室做了两年研究助理,对此深有感触。
我当然理解,matlab是给那些非软件专业的研究人员,提供各种工具,减少其工作量的。不应以软件专业人员的要求来审核其代码。
但这是有条件的。如果项目是有产品,并且是多人合作,那么用matlab产生一堆别人不懂也用不了的代码,就是不合理的。
————————
我当年的项目需要做一个实时图片分析。负责算法的博士就写了一个大约500行的函数给我。里面充满了各种a,b,c,d,aa1,a2,zzz之类的变量名。注释等同于没有。看得我一头雾水。
要说这算法能正常工作也行,但实际上不是。用matlab运行的时候,大约每3张图片就会有1张给出错误的结果,大约100张图片之后就有很高的概率内存出错(泄漏)。
他也不给我讲解。我花了一个多星期,才把这500多行代码弄得有结构并且可读。发现那个出错的结果是某一步的输入没有验证,也排除了内存泄露。
然后把修改好的代码发回给他,让他之后在我修改的基础上改。
几个月后,在教授的催促下,他发了这段代码的改进版给我,说是提高了准确率。我一看立刻就生气了。他压根就没在我的代码上改,而是在他原来的代码上改的,也可能是从某处抄来后修改的,总之是同样的混乱,并且和他之前的代码用的变量都不尽相同。
问他为什么不在我那段代码上改,他竟然说看不懂我写的代码。我那段代码至少提出了常用的几个函数,变量名也修改成了有意义的英文,还加了段落注释,再怎么说也比那些aaazzz要强。
我不得不又花了一个星期去整理新的代码,最终发现他修改了一个参数(当然是硬编码的),又多调用了一个内置函数进行预处理。还引入了一个新的下标越界错误。
————————