matlab-代码-规范

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.标识符命名原则

标识符的名字应当直观,其长度应当符合“最小长度,最大信息量”原则。

1)非矩阵变量:

➢变量名应该以小写字母开头的大小写混合形式譬如:shadowFadingTable,servingSector,rxBufferForRe userID,userPriorityPro等

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

for i_File = 1:nFiles

for j_Position = 1:nPositions

➢避免仅用最后的字母s(表示单复数)区别两个变量, 例如point和points. 可以用类似pointArray的形式加以区别。

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

➢结构体的命名应该以一个大写字母开头,结构体的命名应该是暗示性的,并且不需要包括字段名(fieldname)应采用Segment.length,避免用Segment.SegmentLength 2)常数:

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

➢参数可以以某些通用类型名作为前缀,如COLOR_RED,COLOR_GREEN

3)草稿变量,含矩阵,结构体,元胞:

➢应用范围比较大的变量应该具有有意义的变量名,作为“草稿变量”的的临时存储空间或者索引可以用短名字。程序员在读到这样的变量的时候,可以假定这个变量

的值在没有几行之后的代码中就不会再用到。通常的“草稿变量”整数的时候用i,

j,k,m,n(最好少用i,j,因为他们作为MA TLAB中的永久性常量表示虚数单

位的)。双精度数的时候常用x,y和z。m表示矩阵,没有m表示标量➢命名上将cell, struct与MA TLAB中最常见的numeric array, 即数值矩阵区分开来.

➢n用于整数变量, 如n_File.

➢m用于一般的矩阵,如matrix_channelHFResponse;

➢c用于cell array, 如cell_temp= cell(1, 4);

➢s用于struct array, 如stuct_user= struct('field', {});

➢matrix,cell,stuct后面的channelHFResponse,user用来表示有特定含义的中间变量,比如matrix_channelHFResponse,用来表示计算channelHFResponse时中间变量。4)函数:

➢函数名应该采用小写字母,函数名应该是具有意义的,下划线分割单词

如采用:compute_total_width()避免compwid()

➢前缀get/set 应该作为访问对象或者属性的保留前缀,如getobj(.)。

➢前缀compute应该用在计算某些量的函数的地方computespread()。

➢前缀is应该用在布尔函数的命名的地方,如iscomplete()。

➢Find,initialize类似。

2.编码及文档注释要求及实例

2.1代码版式

2.1.1M文件函数说明

function [ 函数输出参数] = 函数名( 函数输入)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %此处为函数名,如果不是函数文件就取消此行

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %创建人:

%日期:

%修改人:

%日期:

%函数变量及功能的简单描述

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --函数主体

2.1.2编码设计

本部分说明了M文件编码的设计,包括以下几个方面:

垂直间隔,水平间隔,缩进与对齐,注释。

2.1.2.1垂直间隔

1、空行

空行起着分割块或段落的作用,块(段落)之间一般留一个或两个空行。

空行使用规则:

➢逻辑块之间要留空行;

➢结构体定义之间要留空行;

➢函数定义体之间要留空行;

➢函数体内,完整的控制结构和单独的语句块之间要留空行;

➢逻辑上密切相关的语句序列之间不要留空行;

2、换行注意事项

➢不在一行使用多个语句。唯一的例外是for语句。For语句的初始化,条件和循环都可以在一行中。例如

for (bcnl_num = 0; bcnl_num < count; bcnl_num++)

或者还有switch语句,如果动作很短并且相同的话(后面有详细描述)。

If语句并不是例外:执行语句总是另起一行。例如:

if (bcnl_num > count)

bcnl_num = count;

➢{}与case总是独占一行。

2.1.2.2水平间隔

➢逗号后面要有空格,但是不要在结构的成员与指针操作符前后有空格。例如:

foo.index

➢在=,&&,+,-,>, <与|| 前后加上空格,包括:如

simpleAverage = (firstTerm + secondTerm) / two;

1 : nIterations

➢另起一行时,后面一行和前面一行中要继续的地方对齐:

weithedPopulation = (doctorWeight * nDoctors) + …

(layerWeight * nLawyers) + …

(chiefWeight * nChiefs);...

function (param1,param2,…

param3)

2.1.2.3长行拆分

一行代码不能超过180个字符。长行拆分时,在逻辑断点处分行。拆分时,运算符放在被拆分行的尾部,而不是新行的首部。拆分后的新行应与被拆分行采用能够表现出逻辑关系的对齐方式。

示例:

if (((new_shape.x > left_border) &&

(new_shape.x < right_border)) &&

( (new_shape.y > bottom_border) &&

(new_shape.y < top_border))) {

d raw(new_shape);

}

2.1.2.4代码行及行内空格

(1)代码行中不运行出现中文。

(2)关键字后要留空格。像const、inline、case等关键字后要留空格,以辨析关键字;像if、for、do、while、switch等关键字后要留空格再跟左括号“(”,以突出关键字。

(3)“(”若不在一行的开始,应与前面的字符空格。例如,if、while、do-while、switch、for 语句等控制结构块的“(”应与这些关键字语句之间空格。

(4)“,”之后要留空格;若“;”不是一行的结束符,后面也要留空格。

(5)“?”、“:”前后都要留空格。

(6)“(”、“[”向后紧跟,“]”、“,”、“;”、“)”向前紧跟,紧跟处不留空格。

(7)一元运算符与所作用的操作数之间不要加空格,如“!”、“~”、“++”、“&”、“*”等。(8)“.”、“->”这类运算符前后都不要留空格。

相关文档
最新文档