乾貨| 關於代碼對齊的探討,乾貨代碼對齊探討

來源:互聯網
上載者:User

乾貨| 關於代碼對齊的探討,乾貨代碼對齊探討

點擊上方“中興開發人員社區”,關注我們

每天讀一篇一線開發人員原創好文

1 為什麼要代碼對齊?

程式員的工作並不是僅僅編寫程式,程式只是實現業務的一種方式而已。但是能夠將實現業務的方式,變得藝術起來,就不是那麼簡單了。什麼叫藝術呢?藝術並不是複雜的,藝術反而是簡單的、清晰的、明了的。如同我們看到一幅畫,就能夠感受到美,這就是所謂的藝術最淺層的體現。在程式裡,我認為藝術就是,編寫簡單清晰、明了的代碼。說的再細一點,就是代碼一定要排列的整齊,像寫文章、設計平面作品一樣。最起碼保持等號的對齊,保持變數命名的規範。如果編程水平高一些,可以用一些更為簡便的方法,來更高快速更快捷的實現功能。再其次就是實現一個功能的各個模組之間,要像搭積木一樣,互相獨立,然後能夠保持模組功能重用性。每一塊合規合矩的積木,最後才能搭建出一座美麗的宮殿。

代碼像文章一樣,總是要維護的。你是否還記得你看別人代碼時候那種無名的煩躁心情。因為你看到了亂糟糟的代碼,看到了沒有注釋的代碼。你認為這一定是一個傻瓜寫的代碼。可是你自己寫代碼的時候,卻沉浸在自己實現功能的成就感裡,完全忘記了,多打幾個空格,多摁幾次tab鍵。

當你按幾次空格,為了給代碼的等號對齊。同事在一旁問你是不是有強迫症,你完全可以說,我有強迫症,並引以為豪。


2 代碼對齊的方式

是Tab?還是空格? 使用空格又是幾個空格?


2.1 Tab和空格的區別

Tab和空格其實只是兩個不同的符號,但在編程對齊中的意義卻大不一樣。一個Tab可以占空個格的位置,但一個空格就只有一個空格的位置。

在Keil開發環境中可以顯示出Tab和空格符,不妨看一下在Tab和空格交替編輯下,原本使用佔2空格Tab符號,實際在4隔空Tab下看代碼(和注釋)就淩亂了。

離譜的代碼中就會看見使用佔3個空格的Tab,以上舉例都還好,沒有使用佔用3個空格的Tab。

代碼前面的對齊都還好處理,很多工具都可以自動排版,像IAR,只要選中需要對齊的代碼,Ctrl + T就可以了。但代碼後面的注釋對齊就不是那麼好處理了,如果使用Tab + 空格混合方式,更是容易混亂。


2.2 關於Tab和空格的調查

有人針對 GitHub 上多種語言的熱門項目(star 數量高的),分析了代碼對齊使用Tab和空格,以及空幾格的使用方式。



關於代碼對齊,代碼編輯器既然支援Tab,也支援使用空格,所以個人覺得兩種方式都可以,只看個人習慣使用那一個了。

代碼對齊其實很好處理,選擇可以自動對齊的工具對齊就OK了,但在代碼後面的注釋就不是那麼容易對齊了(特別在Tab和空格混用情況下),我個人習慣在代碼後面把注釋也對齊,所以基本不用Tab符。

個人建議:對齊使用空格符,佔2空格或4空格(常用)。其優勢:1、方便跨平台使用;2、對齊注釋。


2.3 tab設定

一份工整對齊的代碼真的很重要!

現狀是:一份代碼多人維護,多種編輯器的混合使用,使得代碼觸目驚心,

關鍵原因是tab和空格鍵混合使用,加上各種編譯器對tab的不同顯示!

怎麼解決?當然是取消tab,所有tab用4個空格代替!怎麼操作?

在編碼的時候不用tab鍵,連續敲4個空格,不可能!帶來更差的效率!

統一使用一種編譯器,不可能!

那怎麼辦?

有!就是在你敲一個tab的時候,編譯器自動的用4個空格代替!

所以先把你手頭上所有編譯器的的tab 寬度設定為4,tab自動轉化為空白格。

Source Insight

開啟 [Options]->[Documnet Options] 在右下角[Editing Options]->[Tab width]中填4

開啟 [Options]->[Documnet Options] 鉤選右下角[Editing Options]->[Expand tabs]

 

PSPad

開啟 [設定]->[程式設定] 選擇 [編輯設定] 在[定位字元寬度]中填4

開啟 [設定]->[程式設定] 選擇 [編輯設定] 不鉤選 [真實定位字元]

 

EditPlus

開啟 [Document]->[Tab Indent] 在[Tab]下的編輯框中填4

開啟 [Document]->[Tab Indent] 鉤選[Insert spaces instead of tab]

 

Notepad++

開啟 [設定]->[定位字元設定]->[大小] 填4

鉤選 [設定]->[定位字元設定]->[用空格替換]

 

UE

開啟 [進階]->[配置]->[編輯] 在[定位字元寬度]中填4

開啟 [進階]->[配置]->[編輯] 鉤選[用空格代替定位字元]

 

VC

[tools]->[options] -> [tabs]-> [tab size] 填4


[tools]->[options] -> [tabs]-> [indent size] 填4

[tools]->[options] -> [tabs]-> [insert spaces] 選中


3 怎麼把代碼自動排版對齊

看到這裡,你可能已經對代碼的排版對齊有了深刻的認識,且想把自己的代碼作一下調整,那麼你是想一行一行的調整嗎?當然不用了,下面告訴你很好的方法。


3.1 先把代碼對齊

1)VC方法

假設有test.c

第一步:先用VC開啟檔案,如:

第二步:CTRL + A 選中所有的代碼。

第三步:CTRL+F8,看到沒有全對齊了。


2)VI方法

如果你沒有裝VC的話,就使用該方法

第一步:開啟test.c檔案,這個有人不會嗎?上網查查吧!

第二步:在瀏覽模式下輸入命令“1G=G”

注意:G一定得是大寫的,則變為:

第三步:最後記住儲存該檔案

輸入“:wq ”命令即可。

 

3)驗證是否tab鍵

 當你把代碼對齊之後不要竊喜,因為以上兩種方法對齊的時候都是用了tab鍵。

用UE開啟該檔案,

選中[視圖]->[顯示定位字元和空格],將看到如下請情況:

“>”表示tab ,“–”表示空格。

可以看出在自動對齊的時候產生了很多tab。

 

3)一次性將tab轉換為空白格

目前我只發現UE具有該功能。

選中[格式]->[全部定位字元轉為空白格]

5)手工調整

完成以上處理之後,還需要把代碼整個看看,有些地方可能處理有問題,主要是以下幾個地方:

l 對開原始碼中的部分風格會對齊得不是很理想。

l 一行代碼太長的情況,需要手工換行。

 

比如以下代碼,開原始碼中最喜歡這麼搞了。

用VC和VI自動對齊後都會出現以下的情況:

可能你希望的是這樣的吧,怎麼辦呢?手工調吧!不知道有沒有更好的工具一步到位。

3.2 Merge設定

現在大功告成了,記住這個時候,立馬作個簡單驗證後提單入庫,保證下次從最新版本中得到的是對齊的代碼了。

但是入庫的時候要千萬注意了,必須把空格作為差異入庫,否則你辛苦排版好的代碼,下次從庫裡看還是不對齊的。

 

選上 [檢視]->[選項]紅色圈圈的部分。

看看沒有選中的情況,這樣你去入庫,merge認為你什麼都沒有改哦。

選中的情況是這樣的,沒錯,就是調整了幾個空格而已,把這幾個空格入庫吧!還猶豫什麼呢?

3.3 S ource Insight 進階設定

1)Draft View選中

選中[View] ->[Draft View]

沒有選中的情況,本來很對齊的代碼,沒有tab鍵,看起來是以下的樣子,以為代碼本身不對齊。

選中的情況,一下子就全對齊了。

2)怎樣讓{}和if對齊

 寫代碼經常這樣 

你需要手動把 { } 向左移動四個空格,真鬱悶。

在[Options ]->[Documents Options] ,點擊 Auto Indent。請選擇左邊的Smart,並且把右邊的兩個勾都去掉。即可!

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.