日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MATLAB编程规范

發(fā)布時間:2025/4/5 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MATLAB编程规范 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

命名規(guī)范

命名不規(guī)范可能會引起異議。

變量

變量的名字需要體現(xiàn)其意義和用途。

變量名應該用小寫字母開頭的混合大小寫。

例如:

linearity, credibleThreat, qualityOfLife

另一種方法是使用下劃線分隔復合變量名的各個部分。

具有較大作用域的變量應該具有有意義的名稱。作用域較小的變量可以有較短的名稱。

用于臨時儲存的變量可以簡短一點。
一般來說,整型常見的初始變量是i,j,k,m,n;雙精度的是x,y和z.
(matlab中i,j是固定虛數(shù)單位,需要注意。)

前綴n應該用于表示對象數(shù)量的變量。

例如:

nFiles, nSegments

避免使用同一個變量名字的不同僅有一個s后綴的區(qū)別

例如:
point,points
但數(shù)組是可以的如
point,pointArray

表示單個實體號的變量可以用No作為后綴,也可以用i作為前綴i。

tableNo, employeeNo iTable, iEmployee

迭代變量的命名或前綴為i、j、k等

Ex:

for iFile = 1:nFiles: end

同時對于嵌套循環(huán),迭代變量按字母順序進行,同時是有意義的

for iFile = 1:nFilesfor jPosition = 1:nPositions:end: end

應該避免使用否定的布爾變量名。

避免使用 isNotFound

縮寫單詞也需要大寫首字母,即使其通常是大寫的。

通常使用: isUsaSpecific
不使用:isUSASpecific

避免使用關鍵詞或特別意義的詞,如內(nèi)置函數(shù)

常量

命名的常量(包括全局變量)應該全部使用大寫,單詞之間使用下劃線分隔。

例如:

COLOR_RED, MAX_ITERATIONS

可以使用類型名字作為前綴

例如:

COLOR_RED, COLOR_GREEN, COLOR_BLUE

結構體

結構名稱應以大寫字母開頭

結構的名稱是隱式的,不需要包含在字段名中。

例如:

Segment.length

函數(shù)

函數(shù)名應該用小寫書寫

最清晰的做法是讓函數(shù)和它的m文件名相同。
使用小寫可以避免潛在的文件名問題。
例如:

getname(.), computetotalwidth(.)

同時可以使用下劃線隔開,增強可讀性。

函數(shù)應該有有意義的名稱。

縮寫或首字母縮略詞在數(shù)學中廣泛使用是一個例外。

max(.)

可以根據(jù)輸出命名具有單個輸出的函數(shù)。

mean(.), standarderror(.)

沒有輸出參數(shù)或只返回句柄的函數(shù)應該根據(jù)它們的功能命名。

plot(.)

前綴get/set通常應該為訪問對象或屬性而保留。

getobj(.); setappdata(.)

前綴compute可以用于計算某些內(nèi)容的方法中。

computweightedaverage(.); computespread(.)

前綴find可用于查找某項內(nèi)容的方法。

findoldestrecord(.); findheaviestelement(.);

在建立對象或概念的地方可以使用前綴初始化。

initializeproblemstate(.);

前綴is應該用于布爾函數(shù)

isoverpriced(.); iscomplete(.)

有一些替代is前綴的方法在某些情況下更適合。這些前綴包括has、can和should:

hasLicense(.);canEvaluate(.);shouldSort(.)

互補名稱應用于對應操作

get/set, add/remove, create/destroy, start/stop, insert/delete, increment/decrement, old/new, begin/end, first/last, up/down, min/max, next/previous, old/new, open/close, show/hide, suspend/resume, etc.

避免無意義的重復。

函數(shù)命應該是唯一的。

一般規(guī)則

量綱化變量和常量的名稱通常應該有單位后綴。

添加單位后綴有助于避免幾乎不可避免的混合。
incidentAngleRadians

名稱中的縮寫應避免使用

減少模糊和歧義

computearrivaltime(.)(建議) comparr(.)(避免)
(注:除了特定短語)

文件和組織結構

M文件

模塊化

將大的整個程序化為一個個模塊,以便調(diào)用或復用。

明確交互接口

結構可用于避免輸入或輸出參數(shù)的長列表。

分區(qū)

劃分所有子函數(shù)和許多函數(shù)應該可以很好地完成一件事。每個函數(shù)都應該隱藏一些東西。

盡可能使用現(xiàn)有函數(shù)

反復出現(xiàn)的代碼應當模塊化到一個函數(shù)內(nèi)

子函數(shù)

只有一個其他函數(shù)使用的函數(shù)應該作為它的子函數(shù)打包在同一個文件中。這使得代碼更容易理解和維護。

測試腳本

為每個函數(shù)編寫一個測試腳本。這種做法將提高初始版本的質量和更改版本的可靠性??紤]到任何難于測試的函數(shù)可能難于編寫。

Boris Beizer: “More than the act of testing, the act of designing tests is one
of the best bug preventers known.”

輸入和輸出

輸入輸出模塊

格式化輸出方便使用。

表述

變量和常量

除非內(nèi)存限制,否則不應重用變量。

相同類型的相關變量可以在公共語句中聲明。不相關的變量不應該在同一語句中聲明。

它增強了對變量分組的可讀性。

persistent x, y, z global REVENUE_JANUARY, REVENUE_FEBRUARY

考慮在文件開頭附近的注釋中記錄重要的變量。

% pointArray Points are in rows with coordinates in columns.

考慮用行尾注釋來記錄常量賦值。

THRESHOLD = 10; % Maximum noise level found by experiment.

全局變量

應該盡量減少全局變量的使用。

應該盡量減少全局常量的使用。

循環(huán)語句

循環(huán)變量應該在循環(huán)之前立即初始化。

result = zeros(nEntries,1); for index = 1:nEntriesresult(index) = foo(index); end

應該盡量減少在循環(huán)中使用break和continue。

嵌套循環(huán)的結束行可以有注釋

條件語句

應該避免使用復雜的條件表達式。取而代之,引入臨時邏輯變量。

通過將邏輯變量賦給表達式,程序可以自動編寫文檔。構造將更易于閱讀和調(diào)試。

if (value>=lowerLimit)&(value<=upperLimit)&~ismember(value,… valueArray): end

替換為

isValid = (value >= lowerLimit) & (value <= upperLimit); isNew = ~ismember(value, valueArray); if (isValid & isNew): end

一般的情況應該放在if-part中,異常放在if else語句的else-part中。

fid = fopen(fileName); if (fid~=-1): else: end

除了臨時塊注釋外,應該避免條件表達式if 0。

switch語句應該包含otherwise條件。

switch (condition) case ABCstatements; case DEFstatements; otherwisestatements; end

switch變量通常應該是一個字符串。

一般情況

避免使用加密代碼

使用括號

表達式中數(shù)字的使用應該盡量減少??筛牡臄?shù)字通常應命名為常量。

浮點常量應該總是在小數(shù)點前加上一位數(shù)字。

THRESHOLD = 0.5;
不要使用 THRESHOLD = .5;

應該謹慎地進行浮點數(shù)比較。

shortSide = 3; longSide = 5; otherSide = 4; longSide^2 == (shortSide^2 + otherSide^2) ans =1 scaleFactor = 0.01; (scaleFactor*longSide)^2 == ((scaleFactor*shortSide)^2 + … (scaleFactor*otherSide)^2) ans =0

排版、注釋和文件

排版

內(nèi)容應保持在前80列內(nèi)。

線條應該在優(yōu)美的點上分開。

需要進行適當?shù)膿Q行

totalSum = a + b + c + … d + e; function (param1, param2,… param3) setText ([‘Long line split’ … ‘into two parts.’]);

基本的縮進應該是3或4個空格。

縮進應與MATLAB編輯器一致。

一般來說,一行代碼應該只包含一個可執(zhí)行語句。

短的單個語句if、for或while語句可以寫在一行上。

if(condition), statement; end while(condition), statement; end for iTest = 1:nTest, statement; end

留白

用空格環(huán)繞=、&和|。

simpleSum = firstTerm+secondTerm;

常規(guī)操作符可以被空格包圍。

simpleAverage = (firstTerm + secondTerm) / two; 1 : nIterations

逗號后面可以跟一個空格。

foo(alpha, beta, gamma) foo(alpha,beta,gamma)

一行中多個命令的分號或逗號后面應該跟一個空格字符。

if (pi>1), disp(‘Yes’), end

關鍵字后面應該跟一個空格。

塊內(nèi)的邏輯語句組之間應該用一個空行分隔。

塊之間應由多個空行分隔。

在能夠提高可讀性的地方使用對齊方式。

weightedPopulation = (doctorWeight * nDoctors) + …(lawyerWeight * nLawyers) + …(chiefWeight * nChiefs);

注釋

注釋的目的是向代碼中添加信息。注釋的典型用途是解釋用法,提供參考信息,證明決策的合理性,描述限制,提到需要的改進。經(jīng)驗表明,最好是在編寫代碼的同時編寫注釋,而不是打算在以后添加注釋。

注釋不能證明寫得很差的代碼是正確的。

注釋應該與代碼一致,但不僅僅是重申代碼。

注釋應該易于閱讀。

注釋通常應該與引用的語句具有相同的縮進。

函數(shù)頭注釋應該支持help和lookfor的使用。

函數(shù)頭注釋應該討論輸入?yún)?shù)的任何特殊要求。

% ejectionFraction must be between 0 and 1, not a percentage. % elapsedTimeSeconds must be one dimensional.

函數(shù)頭注釋應該描述任何副作用。

一般來說,函數(shù)頭的最后一個注釋應該重述函數(shù)行。

在函數(shù)頭中使用大寫寫函數(shù)名是有爭議的。

避免函數(shù)頭幫助打印輸出中出現(xiàn)不必要的信息。

將版權行和修改歷史記錄行與其他的注釋分隔開,避免在幫助文件中顯示出來。

文件

正式文檔

有用的文檔應該包括代碼應該做什么(需求)、如何工作(設計)、依賴于哪些功能以及如何被其他代碼(接口)使用,以及如何測試的可讀性描述。為了額外加分,文檔可以包括對替代解決方案的討論,以及擴展或維護的建議。

考慮先寫文檔

變化

管理和記錄代碼變更的專業(yè)方法是使用源代碼控制工具。對于非常簡單的項目,在函數(shù)文件中添加更改歷史注釋肯定比什么都沒有要好。
% date Month Year, Name, 。。。

[1] Johnson R. MATLAB Programming Style Guidelines[J]. 2002(October).

總結

以上是生活随笔為你收集整理的MATLAB编程规范的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。