matlab-代碼-規范
1. 標識符命名原則 標識符的名字應當直觀,其長度應當符合“最小長度,最大信息量”原則。 1) 非矩陣變量: ? 變量名應該以小寫字母開頭的大小寫混合形式 譬如:shadowFadingTable,servingSector, rxBufferForRe userID,userPriorityProfile,mcsOneRetri等 ? 循環變量應該以i、j、k等為前綴,如 for i_File = 1:nFiles for j_Position = 1:nPositions ? 避免僅用最后的字母s(表示單復數)區別兩個變量, 例如point和points. 可以用類似pointArray的形式加以區別。 ? 避免使用一個關鍵字或者特殊意義的字作為變量名 ? 結構體的命名應該以一個大寫字母開頭,結構體的命名應該是暗示性的,并且不需要包括字段名(fieldname)應采用Segment.length,避免用Segment.SegmentLength 2) 常數: ? 命名常數(包括全局變量)應該采用大寫字母,用下劃線分割單詞,如MAX_ITERATIONS,COLOR_RED ? 參數可以以某些通用類型名作為前綴,如COLOR_RED,COLOR_GREEN 3) 草稿變量,含矩陣,結構體,元胞: ? 應用范圍比較大的變量應該具有有意義的變量名,作為“草稿變量”的的臨時存儲空間或者索引可以用短名字。程序員在讀到這樣的變量的時候,可以假定這個變量的值在沒有幾行之后的代碼中就不會再用到。通常的“草稿變量”整數的時候用i,j,k,m,n(最好少用i,j,因為他們作為MATLAB中的永久性常量表示虛數單位的)。雙精度數的時候常用x,y和z。m表示矩陣,沒有m表示標量 ? 命名上將cell, struct與MATLAB中最常見的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.1 M文件函數說明 function [ 函數輸出參數] = 函數名( 函數輸入 ) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %此處為函數名,如果不是函數文件就取消此行 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %創建人: %日 期: %修改人: %日 期: %函數變量及功能的簡單描述 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --函數主體 2.1.2 編碼設計 本部分說明了M文件編碼的設計,包括以下幾個方面: 垂直間隔,水平間隔,縮進與對齊,注釋。 2.1.2.1 垂直間隔 1、空行 空行起著分割塊或段落的作用,塊(段落)之間一般留一個或兩個空行。 空行使用規則: ? 邏輯塊之間要留空行; ? 結構體定義之間要留空行; ? 函數定義體之間要留空行; ? 函數體內,完整的控制結構和單獨的語句塊之間要留空行; ? 邏輯上密切相關的語句序列之間不要留空行; 2、換行注意事項 ? 不在一行使用多個語句。唯一的例外是for語句。For語句的初始化,條件和循環都可以在一行中。例如 for (bcnl_num = 0; bcnl_num count) bcnl_num = count; ? {}與case總是獨占一行。 2.1.2.2 水平間隔 ? 逗號后面要有空格,但是不要在結構的成員與指針操作符前后有空格。例如: foo.index ? 在 =, } 2.1.2.4 代碼行及行內空格 (1) 代碼行中不運行出現中文。 (2) 關鍵字后要留空格。像const、inline、case等關鍵字后要留空格,以辨析關鍵字;像if、for、do、while、switch等關鍵字后要留空格再跟左括號“(”,以突出關鍵字。 (3) “(”若不在一行的開始,應與前面的字符空格。例如,if、while、do-while、switch、for語句等控制結