如何寫出讓人看不懂的MATLAB代碼?

最近呢有不少好奇的伙伴私下問咱這是怎么實(shí)現(xiàn)大幅度降低matlab代碼可讀性。于是咱準(zhǔn)備將相關(guān)的資源分享給大家,這個(gè)工具的根來源于大神thrynae (Rik)公開分享一款名叫minify的小工具圖片。
咱也不藏著掖著,其實(shí)大家用minify作為關(guān)鍵詞檢索,不僅能檢索出大神的這款工具,還可以檢索到降低python、JavaScript、R等編程語言代碼可讀性的其他實(shí)用性代碼。
那有小伙伴不禁要問了圖片要是沒有記錯(cuò)的話,你這個(gè)可打自己臉的行為呀(PS:30多個(gè)實(shí)用matlab編程技巧)。前面教人寫出排版工整的代碼,后面又教人寫出讓人看不懂的代碼,這不是神經(jīng)錯(cuò)亂嗎?
答案顯然是否定的。雖寫出可讀性強(qiáng)的代碼是作為程序員最基本的素養(yǎng),對(duì)代碼的維護(hù)也是大有裨益,但有些情況下寫出讓人看不懂的代碼顯然也是很有必要的。比方說您將代碼分享給其他人,不想讓別人能很快掌握您代碼中的關(guān)鍵技術(shù),那這個(gè)時(shí)候就很有必要了。
那有人就要問了,matlab寫得代碼不是可以用pcode加密后再分享嗎?那咱可以肯定告訴您,如果您認(rèn)為pcode加密是安全的,那就大錯(cuò)特錯(cuò),相關(guān)的反編譯工具網(wǎng)上一搜一大把。那把代碼用pcode加密之后,再封裝成exe發(fā)布分享,那不就安全了。恐怕又要讓您失望了,目前matlab的封裝工具并不支持直接封裝pcode加密的文件(PS:咱目前找到一種解決方案可以封裝pcode加密后的文件為exe文件,不久后就會(huì)分享給大家,敬請(qǐng)期待)。即便是您把代碼封裝成了exe文件,還是有辦法把您的exe反編譯為m文件,這樣的工具網(wǎng)上也是存在的。就如同python封裝一樣,不管您用什么工具進(jìn)行封裝,總是能在網(wǎng)上找到一種工具把封裝好的可執(zhí)行文件反編譯成源代碼,這絕對(duì)不是危言聳聽。
那既然不管怎么做,只要有人想要獲得源代碼它總是能夠獲得,那咱們還不如從寫代碼本身入手。如果分享的源代碼讓人看都看不懂,更別說后面的封裝之后的代碼了,這也是寫出可讀性極差代碼的必要性之所在。
其實(shí)寫出可讀性差的代碼其實(shí)是非常容易且與生俱來的,咱們可以想想咱們最開始寫代碼的時(shí)候那種意氣風(fēng)發(fā)、行云流水,就要那種感覺,那種自己寫的過兩天來看就看不懂那種。廢話扯得夠多了,還是直接上硬菜回到咱們的主題上來。
代碼的可讀性的好壞與四個(gè)因素息息相關(guān):一、代碼注釋;二、變量命名;三、代碼中一切可讀的文本字符信息;四、代碼塊的布局。
咱今天分享的minify就能幫大家完成四個(gè)因素中的三個(gè),即一、二、四。下面是用ChatGPT隨便生成一段示例代碼:

接下來咱用minify對(duì)其進(jìn)行降可讀性處理,處理后的代碼如下:
不難發(fā)現(xiàn),注釋、變量和代碼塊都被混淆了。大家是否覺得這個(gè)也太小兒科了?這個(gè)代碼一眼就能看明白的嘛。大家別忘這僅僅是幾行代碼,如果100行,一萬行,一萬個(gè)一萬行這樣的文件呢?您還能看明白嘛?比如就咱們那張封面圖:

怎么樣?是否清晰透明?
想要獲取minify源代碼及相關(guān)測(cè)試文件的伙伴,點(diǎn)此獲取。
參考資料:
[1] github.com/thrynae/minify
[2] matlabcentral/fileexchange/84717-minify