溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux內(nèi)核編碼風(fēng)格分析

發(fā)布時(shí)間:2022-04-01 11:01:45 來(lái)源:億速云 閱讀:172 作者:iii 欄目:編程語(yǔ)言

這篇文章主要介紹了Linux內(nèi)核編碼風(fēng)格分析的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇Linux內(nèi)核編碼風(fēng)格分析文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

為什么要豎向?qū)R代碼?

舉一個(gè)簡(jiǎn)單的例子:

int robert_age = 32; int annalouise_age = 25; int bob_age = 250; int dorothy_age = 56;

相較而言,下面的寫法更易讀:

int robert_age     = 32; int annalouise_age = 25; int bob_age        = 250; int dorothy_age    = 56;

只要用眼睛一掃,我們就能發(fā)現(xiàn)”bob_age”數(shù)字異常。我可以去輕松的識(shí)別這些變量都是數(shù)字,不需要拿眼睛一個(gè)個(gè)對(duì)比。

這種編碼風(fēng)格并不是被廣泛的接受。所以,我需要解釋一些這種風(fēng)格的好處。

代碼的可讀性

90%的編程活動(dòng)是為了解決問題。另外90%是用來(lái)理解代碼是如何解決問題的。

閱讀代碼跟閱讀小說(shuō)沒多大區(qū)別。我們希望作者能把他的想法寫明白,不需要陳詞濫調(diào)長(zhǎng)篇累牘,但同時(shí)要遵守所使用的語(yǔ)言的語(yǔ)法。

事實(shí)上,Linux內(nèi)核編碼風(fēng)格里十分強(qiáng)調(diào)這一點(diǎn)。你給變量的命名同它的作用同等重要。

看一下下面的這段代碼:

var thinG=doIt(thestuff,MORE_sTuff); /* LOL! */

就算你是十分解這段代碼,你讀起它來(lái)也十分費(fèi)勁。

var totalBill = apply_tax(initialBill, taxRate);

通過(guò)給予變量有意義的命名,空格,大小寫區(qū)分,我們能讓這段代碼更清晰。這意味著接手我們的代碼的下一位程序員能更容易的理解它。

為什么要使用Monospace字體?

關(guān)于代碼編輯器應(yīng)該使用monospace字體還是proportional字體的爭(zhēng)論,從未停息也不會(huì)停息,兩派人各有所好。

有些異教徒會(huì)告訴你proportional 字體是最好的——忽略這些人吧。

最終是為可讀性。什么方法能最簡(jiǎn)單的幫助我們理解代碼?所以IDE才會(huì)有代碼高亮配色,這樣你就能輕松的分辨“foo”究竟是一個(gè)函數(shù),是一個(gè)變量,是一個(gè)常量,還是一個(gè)注釋。只要是能幫助我們理解代碼的東西都是好東西!

編輯器的問題

有趣的是,我遇到的很多批評(píng)的聲音不是說(shuō)代碼豎向?qū)R的好壞,而是批評(píng)我的代碼編輯器不行。

你這樣做會(huì)破壞使用diff對(duì)比版本差異時(shí)的可讀性和有效性。比如,本來(lái)只是一行是有一個(gè)變量有bug,你能為了對(duì)齊變量改動(dòng)了很多行,影響了查看關(guān)鍵修改處。也有能夠忽略空格的diff技術(shù),但至少你這樣做得不償失。
Andreas van Cranenburgh

…還有…

假如說(shuō),你有50行代碼要豎向?qū)R,你把所有的值對(duì)對(duì)齊距離最遠(yuǎn)的那一行,而增加一個(gè)更大距離的行,你需要修改50行。我就遇到過(guò)這樣的問題,最終發(fā)現(xiàn)這樣做是錯(cuò)誤的。
scrollaway

他們說(shuō)的是對(duì)的——在某些情況下。但關(guān)鍵是他們不會(huì)使用更好工具。

我記得Elastic Tabstops提供的一個(gè)技巧——如何自動(dòng)對(duì)齊代碼塊:

Linux內(nèi)核編碼風(fēng)格分析

正確的工具能輕松的完成這樣的任務(wù)。計(jì)算機(jī)就是用來(lái)為我們干這些枯燥、重復(fù)的事情的-CPU的工作很廉價(jià),我們可以“浪費(fèi)”CPU的工作來(lái)讓我們的代碼更清晰可讀。

在Linux 內(nèi)核代碼中還有大量的例子能說(shuō)明豎向?qū)R代碼能讓代碼更適合人類閱讀。

豎向?qū)R代碼并不是在所有情況下都適用——但對(duì)于大多數(shù)情況,它的好處是大大的。

代碼是我們表達(dá)我們的思想的媒介。如果你的工具使得理解這些思想更困難,那說(shuō)明工具需要改變,而不是我們。

關(guān)于“Linux內(nèi)核編碼風(fēng)格分析”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“Linux內(nèi)核編碼風(fēng)格分析”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI