关于matlab编程设计的一点心得,指导性很强
从事科研过程中,难免需要用到matlab软件进行科学计算和仿真模拟。良好的编程习惯有利于缩短程序设计调试的时间,从而加快科研的进度。在编写若干程序之后,把我的个人心得总结如下:
1. 要有明确的逻辑再动手写
之前有过一次经历,感觉程序逻辑差不多了,就开始动手写程序。结果用了5个全局的表来存储信息,当工作进行到中期以后,发现维护这个表的一致性已经让人崩溃掉,最后全部代码推倒重来。软件工程绝不是在课堂上能学明白的东西,没有几次重写代码的经历是不会理解其中的奥义的。
2. 不怕声明的变量多,就怕变量没有明确的含义
以前写代码写着写着就不记得哪个数据存储在哪个变量里了,这样就希望尽量少的使用变量,可是这样写的时候容易了,但是如果需要修改,比如增加一部分功能,这样的结果会使得前后逻辑混乱,经常需要判断某个变量在不同的上下文中的含义是否一致,如果不一致就需要进行变量替换,工作量不亚于重写!
3. 容错处理要到位,尽早发现错误,不要怕程序效率低(否则更低:()
曾经在调试完一个模块后就把错误判定的代码删除或者屏蔽,目的是提高程序效率,并且避免大量的调试信息“淹没”新写的代码的输出信息。后来发现这样是错误的,因为我们很难对一段代码进行全面的测试,其中可能含有一些隐含错误,比如边界情况下的错误或者特定组合出现的错误,如果删除容错处理,在我们认为“正确”的模块中出现了bug,则调试开销极大,很有可能为了调试这样的bug我们把这些容错代码重写回来!
4. 每个m文件不要超过300行
这是经验之谈,当程序的逻辑不能在一个屏幕显示(就是代码的关联需要卷动才能看出来)的时候,一般正常人的智商无法处理每个细节,就容易犯错
5. 循环不要超过2层,至多4层
同样是为了简化逻辑,那如果非要处理很多层循环怎么办?我的建议是多谢一些函数,每个函数2层循环。
6. 永远不要用隐式变量声明或初值
变量使用前永远显示的声明并赋初值,否则由于变量残留的信息有可能使得矩阵操作失败,因为维数不正确
7. 向量要先清空在填入数据,否则容易残留上一次的数据
如题,不解释
8. 所有的函数最好是可重入的
可重入就是函数的调用没有状态依赖。如果必须有依赖,把维护状态的代码单独出来,然后用当前状态作为函数的一个输入参数
9. 程序逻辑尽量简单,把问题分解成若干步骤,即使牺牲效率
很多问题合并若干步骤以后可以提高效率,但是严重不建议这么做,这样对程序修改将十分吃力。但是影响全局效率的核心函数除外,这些函数的优化往往可以使程序提高3-10倍效率,而这种函数又有明确的含义,较少修改。 |