我們編寫代碼的目的是什么?除了能實現(xiàn)某個算法、完成要求的邏輯業(yè)務(wù)外,其實還需要注意代碼的可讀性、可維護性、可擴展性等,唯有滿足這些條件,我們的代碼才可以稱得上是合格的、優(yōu)秀、優(yōu)雅的代碼。我們寫的代碼除了自己看,可能別人也需要看。其實,編碼也是一門藝術(shù),要想寫出優(yōu)雅漂亮的代碼,需要我們平時的不斷積累和學習。
那么今天我們聊一聊在編寫MATLAB代碼時,需要注意的編碼風格,簡單的建議,但比較實用。
1 代碼的布局
1.1 縮進
雖然MATLAB代碼對縮進沒有要求,但這樣會顯得雜亂無章,代碼沒有層次感,MATLAB的IDE為我們提供了便捷的智能縮進,所以平時寫完代碼后,記得Ctrl+A, 再Ctrl+I
1.2 空格/Tab鍵
空格/Tab鍵對MATLAB是沒有影響的,用好空格很重要,會增強代碼的可讀性。
A 推薦用空格的地方
(1) 常用的二元運算符 +, -, *, /, ^, .*, ./, .^;比較、邏輯運算符<, >, <=, >=, ==, ~=, &&, ||;賦值運算符=以及類的繼承符號<等,在這些運算符的前后都加上一個空格,如a = b + c * d;要比a=b+c*d;更好些。
(2) 定義函數(shù)時,輸入?yún)?shù)和輸出參數(shù)之間建議加空格,如function [output1, output2] = myfunc(input1, input2)要比function [output1,output2]=myfunc(input1,input2)更好些
B 不推薦用空格的地方
以下地方不推薦出現(xiàn)空格:
(1) 緊挨著圓括號,方括號和花括號的地方,如[ x, y ],( x, y ), { x, y }是不推薦的。推薦[x, y], (x, y), {x, y}樣式。
(2) 緊貼著函數(shù)調(diào)用的參數(shù)列表前開式括號的,如magic (5)應該寫成magic(5)。
(3) 在賦值(或其它)運算符周圍的用于和其它并排的一個以上的空格,如:
x = 1;
y = 2;
longvariable = 3;
寫成
x = 1;
y = 2;
longvariable = 3;
1.3 行的最大長度
類似于函數(shù)中的行注釋、函數(shù)體等,如果某一行很長,則導致?lián)Q行折疊觀看,很影響美觀,而且還不利于閱讀。MATLAB IDE中那條豎直的參考線可以幫助我們適當?shù)睦m(xù)行,推薦長度限制在 75 個字節(jié)內(nèi) , ...咱們都懂得......
1.4 空行
空行的使用在平時應該也注意:
用兩行分割頂層函數(shù)和子函數(shù)的定義(或者頂層類定義和局部函數(shù)的定義)。
在類定義的內(nèi)部,成員方法之間用一個空行隔開。
在一個函數(shù)內(nèi)使用空行時請注意謹慎使用于一個邏輯段
1.5 注釋
注釋非常重要,良好的注釋不僅可以讓別人更容易看懂你的代碼,同時也對我們自己也是一種幫助,時間久了提供提示和回憶。
注釋必須跟代碼保持一致,當你想修改代碼時,建議優(yōu)先修改注釋。
注釋必須是完整的句子。
如果注釋是一個句子或者短語,請首字母大寫。
如果注釋很短,建議省略句末的句號。
注釋塊通常由一個或多個由完整句子構(gòu)成的段落組成, 每個句子應該以句號結(jié)尾。
注釋請使用英文。
約定使用統(tǒng)一的文檔化注釋格式有助于良好的習慣和團隊的進步。
單行注釋%
多行注釋%{ This is comment%}
分割注釋%%
關(guān)于注釋這塊,我們可以參考系統(tǒng)自帶的那些函數(shù)的作者是如何加注釋的,方法是在腳本或者命令窗口中輸入庫函數(shù)名稱,選中,然后Ctrl+D進行查看,比如我們查看svd這個函數(shù)是如何寫注釋的,演示如下:

1.6 項目文件
一般建議一個項目一個文件夾,相同作用的算法放在一個文件夾中,里面再按模塊分子文件夾,最好是層次分明。
2 命名約定
對于命名,只要符合MATLAB的標識符規(guī)定,隨心所欲的命名對代碼無任何影響,但是這樣做就與我們開頭所說的可讀性相違背了。一個總原則是我們的命名能盡量做到望文知意。
2.1 命名風格
一般的命名風格大家都清楚,這里說幾個特殊的注意點:
(1) 代碼中的命名不要使用拼音與英文混合的方式。
(2) 避免大幅度出現(xiàn)單個子母的命名,如a, b, c等,循環(huán)中可以(除了i或j)。
(3) 包名應該是不含下劃線的, 簡短的, 小寫的名字。
(4) 幾乎沒有例外,類名總是使用首字母大寫、駝峰命名單詞串的約定,即UpperCamelCase風格。
(5) 函數(shù)名、方法名、參數(shù)名、成員變量、局部變量都統(tǒng)一使用lowerCamelCase風格,第一個詞的首字母小寫,后面每個詞的首字母大寫。
(6) 常量命名全部大寫,單詞間用下劃線隔開,力求語義表達完整清楚。
(7) 抽象類命名使用Abstract或Base開頭;測試類命名以它要測試的類的名稱開始,以Test結(jié)尾。
(8) 避免生僻的縮寫,在命名時盡量使用完整單詞組合來表達其意。
(9) 如果是形容能力的接口名稱,取對應的形容詞為接口名(通常是–able的形式)。如AbstractTranslator實現(xiàn)Translatable接口。
(10) 枚舉類名建議帶上Enum后綴,枚舉成員名稱需要全大寫,單詞間用下劃線隔開。
(11) 對于表達邏輯的變量,可加上is或者has的前綴,如hasNoiseMap = true等
(12) 函數(shù)名應該為小寫、動賓短語, 可能用下劃線風格單詞以增加可讀性。
以上就是今天分享的內(nèi)容了,有什么問題請朋友留言。