matlab编程建议(转)

原文:

简介

有关MATLAB代码的建议通常强调的是效率,譬如说有关“不要用循环”等的建议,本指南与之不同。本指南主要考虑的是代码(格式)的正确性、清晰性与通用性。本指南的目的在于帮助写出更可能正确、易于理解、更具有共享性与更利于维护的代码。正如Brian Kernighan 写道:“Well-written programs are better than badly-written ones--they have fewer errors and are easier to debug and to modify――so it is important to think about style from the beginning.”(良好的写作规范的程序比糟糕的写作规范的要好,因为他们具有较少的错误、易于调试与修改,因此,从一开始就考虑风格是很重要的)。

本指南列举的MATLAB代码编写的建议在软件开发小组实际工作中得到一致性的认可。本指南与C、C++与Java的同类手册在整体上是相似的,但是针对MATLAB的特征与历史进行了修正。指南中的建议是基于多种其他代码语言的指南与个人经验而来的。指南主要是针对MATLAB而写的,但是它对于相近的语言,如Octave、Scilab和O-Matrix等的编程也有所帮助。

指南不是戒律,其目的在于简洁易懂地帮助程序员写出好的代码。许多组织有理由偏离这个目的。

“You got to know the rules before you can break 'em. Otherwise it's no fun.”

                                      ――Sonny Crockett in Miami Vice

MATLAB是MathWorks公司的注册商标,在本指南中,缩写TMW指The Mathworks公司。

本著作献给那些致力于仔细提高进步的人们。

命名规则

Pathrick Raume:“A  rose by any other name confues the issue。”(?玫瑰如果以其他名字则会导致事情的混乱)

一个开发团体建立一个命名规则可能会成为一个可笑的争议性问题。本节描述了一个常用的规则。它对于单个的程序员理解命名规则特别有用。

变量

变量的名字应该能够反应他们的意义或者用途。

 变量名应该以小写字母开头的大小写混合形式

譬如:linearity ,credibleThreat,qualityofLife等。

这在C++开发团体中是普遍实用的。TMW有时候以大写字母开头命名一个变量名,但是这种用法在其他的语言中通常作为类型或者结果的保留用法。

分割复合变量名的各个部分中间通常有两种做法,前面例子的这种(以大写字母分割)是其中的一种,虽然可读性比较好,但是在其他语言变量名中并不很常用。另外一种考虑的方法是在变量名中采用下划线,但是下划线在MATLAB的Tex 解释程序中会将其 翻译为下标转换符。

 应用范围比较大的变量应该具有有意义的变量名,小范围应用的变量应该用短的变量名

 实际上,大多数变量都应该具有有意义的变量名,短变量名通常作为结构申明时候必须阐明意义的情况下的变量的保留用法。当然,作为“草稿变量”的的临时存储空间或者索引可以用短名字。程序员在读到这样的变量的时候,可以假定这个变量的值在没有几行之后的代码中就不会再用到。通常的“草稿变量”整数的时候用i,j,k,m,n(不过我认为最好少用i,j,因为他们作为MATLAB中的永久性常量表示虚数单位的。译者注),双精度数的时候常用x,y和z。

 前缀n应该用在作为数值对象的申明的时候

     这一符号来自于数学,在数学中这被作为标明数值对象的建立规则。

     例如: nFiles,nSegments

     MATLAB一个附加的特别之处在于用m来表明行数(来源于matrix 符号),例如变量名: mRows

 应该遵循的一个有关复数(pluralization)变量的惯例

此处的复数应该是指包含多个个体的变量,相对于单数(singular)而言――译者

一个实用的建议是将所有变量名要么为单数形式,要么为复数形式。两个变量只是最后相差一个字母s加以区别的情况应该避免。一个可以接收的选择是对于复数利用后缀Array。例如:

point, pointArray    (前者为单数,后者为复数)

 只代表单个实体数据的变量可以加以后缀No或者是前缀i

符号No来自于数学在表明实体数据的时候的建立规则。例如:

     tableNo,empolyeeNo

前缀i使得变量命令可以循环进行。例如变量名:

iTable,iEmployee

 循环变量应该以i、j、k等为前缀

该符号来源于数学在表明一个循环的时候的变量建立规则。例如:

for  iFile = 1:nFiles

      …

end

注意:当应用中有复数数据的时候,应该禁用i、j,因为他们都是作为虚数单位使用。

对于嵌套循环,循环变量应该以字母表的顺序。

对于嵌套循环,循环变量应该命名为有帮助意思的变量名。例如:

for  iFile = 1:nFiles

 for  jPosition = 1:nPositions

        …

 end

end

 否定式的布尔变量命名是应该避免的

当采用否定式的布尔变量命名法时,如果采用逻辑运算取非的操作符号对变量进行链接运算的时候,将出现双重否定的情况。例如,用~isNotFound 没有采用 isFound直观。因此避免使用 类似于 isNotFound 这样的变量名。

 缩写形式,即使是通常的大写缩写,也应该于小写字母混合使用

全部使用大写字母作为基本的变量名与上面给出的命名规则相冲突。这种类型的变量只有被命名为类似于 dVD,hTML等形式的变量名,很显然这将使得其不具有可读性。当这样的变量名与其他的相联合的时候,其可读性严重降低;下面的单词的缩写很难看出他们的本来代表的意思了。

采用: html,isUsaSpecific,checkTiffFromat()

避免使用:hTML,isUSASpecific,checkTIFFFormat()

 避免使用一个关键字或者特殊意义的字作为变量名

     当它的保留字或者内建的特殊值被重新定义的时候,MATLAB会给出一个模糊的出错信息或者是奇怪的结果。保留字在命令关键字中列出,特殊值在文档中列出了的。

常数

  命名常数(包括全局变量)应该采用大写字母,用下划线分割单词

  这个规则在C++开发团体中是非常普遍的。尽管TMW的代码中可能会出现一下小写字母命名常数的情况,例如:pi,这种内建常数事实上是函数。

示例:  MAX_ITERATIONS,COLOR_RED

  参数可以以某些通用类型名作为前缀

  这样命名

你可能感兴趣的:(matlab,编程,文档,语言,测试,documentation)