標籤:

2017年,你用Matlab寫了多少行代碼

前不久,看了知乎上的一個問題,蠻有意思的,是關於程序員的代碼量,有興趣的朋友可以看一下這篇帖子《程序員代碼量過20萬行,是一種什麼體驗?》

雖然寫代碼不屬於我的工作範疇,最多只是下班後的一種消遣,但是我還是挺好奇這一年來我到底寫了多少代碼。

接下來就來聊一聊,如何通過寫腳本來統計自己的代碼量。

1. Matlab腳本注釋的形式

首先,在計算代碼量的過程中,注釋行不應該算在代碼量中。那麼,就先來聊一聊Matlab中注釋的那些事。

相信接觸過Matlab腳本的朋友都知道,如果我想對一行命令或是一段命令進行注釋時,會寫一個%,然後在百分號後面寫下注釋,比如:

其中第一行並不屬於代碼行,而第二行屬於代碼行。因此在判斷是否為有效代碼行時的一個標註就是,每一行的第一個非空格字元是否為百分號。

在這裡說一個關於注釋的題外話,選取幾行代碼,按鍵ctrl + R,所選行就會變成注釋,然後按鍵ctrl + T,所選注釋就會減少一個百分號。

除了上述這種注釋的方法之外,還有另外兩種注釋的方式:

一種是使用兩個連續的百分號,正如下面這幅圖所展示的,滑鼠所在模塊顏色會加深,通過這種形式的注釋,代碼層次感更強,更有助於代碼的管理。

判斷這種注釋形式的邏輯與第一種相同,都是去判斷每一行的第一個非空字元是否為百分號

另一種方式是通過%{%}將一整段代碼變成注釋。判斷這種注釋的邏輯是,判斷該行非空字元串是否為%{%}。這其中可以參考的函數為strcmp函數。

2. Matlab腳本中的續行符

除了注釋行會影響代碼量之外,還有續行符也會影響。關於續行符,通過一個簡單的例子來說明:

顧名思義,通過續行符,能將一行代碼多次換行來寫,以避免單行代碼過長,不便閱讀的情況。判斷一行代碼是否有續行符的邏輯也非常簡單,去判斷每一行的末三位字元串是否為續行符,同樣可使用的函數為strcmp。

3. 讀取一個文件夾下所有.m文件

在理清了代碼量的影響因素之後,就可以著手開始寫腳本了。

在開發一個工具的過程中,有一些代碼會被大量的重複使用,因此,這部分代碼會單獨作為一個function函數文件,通過主腳本調用的形式進行使用。這就意味著對於一個工具,存在多個.m文件。

為了避免人為手動的去累加每個.m文件的代碼量,在這裡建議通過腳本的形式去讀取該工具所在文件夾下所有的.m文件。對此,可以考慮使用以下的函數:

dirOutput=dir(fullfile(filepath,*.m));nfileNames={dirOutput.name};n

其中filepath為工具所在文件夾的路徑,而dir(fullfile(filepath,*.m))表示獲取該路徑下所有拓展名為.m的文件,而fileNames={dirOutput.name}表示獲取每個.m文件的文件名。

然後通過一個for循環,例遍每一個.m文件,而在循環過程中,以讀取txt文件的形式去讀取每一個.m文件,並且以.m文件中的行數為導向,例遍每一行,結合之前兩點所介紹的,去判斷每一行是否為注釋行或者是否存在續行符,計算該.m文件最終的有效代碼量

以上就是統計代碼量的主要邏輯,接下來看一下,今年我所寫的幾個主要的小工具的代碼量

1. Simulink建模工具

代碼量:3008行

相關介紹:Matlab如何大規模修改Simulink模型

當初寫這個工具,純屬自己太懶,不想自己動手去改Simulink模型,結果這工具,一寫就是兩個月。這個工具目前仍然在開發中,正如先前所言,我正在開發Learn Mode。此後,我將會陸續開發模擬功能(Simulation),資料庫管理功能(Database),以及模擬數據分析功能(Analyse)。

說來實在是慚愧,本來說好的要儘快通過公眾號上線的,但是我懶。。。請有需求的朋友耐心等耐,我會加把勁的

2. 項目評估工具

代碼量:1790行

相關介紹:【一個被斃掉的作品】如何評估一隻股票的買點

最初寫完這個工具之後,真的挺興奮的,因為解決了幾個技術難題,包括Word報告的自動生成,雷達圖的分析。不過這個工具出來之後,反響並不盡如人意,為此那個禮拜,我尤其的沮喪。不過很感謝有這個機會來開發這個工具,這個工具是我在技術點上收穫最多的一個工具。

3. 曲線原始數據獲取工具

代碼量:491行

相關介紹:Matlab如何從曲線圖中提取原始數據

當初想寫這個工具,是因為在網上找了一張鋰離子電池的電壓電量的曲線圖,想扒原始數據下來做模擬,於是就有了這個工具。其中可再開發的點還是有挺多的,比如發動機、電機的一些特性圖。

除此以外,包括動圖製作工具,dcm文件讀取標定量,Simulink模型加密工具,網路爬蟲等,2017年用MATLAB一共寫了9672行代碼,老實說,離專業的程序員還差好幾萬行代碼量的距離。

以上

祝大家周末愉快!

如果你有興趣,歡迎關注我的微信公眾號"打浦橋程序員",謝謝!


推薦閱讀:

Cleve Moler 的複數步長數值微分方法
MATLAB代碼提速技巧之In-place Optimizations
如何自學Matlab
Matlab如何製作滑鼠精靈
即將出版!《數學建模與數學實驗》書稿目錄

TAG:MATLAB |