C/C++中左花括號位置的爭論由來已久,本文分析了兩種寫法產生的歷史緣由,並提出現在我們應該采用的寫法和理由。
下面是引起爭論的兩種風格:
K&R風格:
if (a > 100) { //do somthing… }
(注:1978年貝爾實驗室正式發表了C語言。同時由B.W.Kernighan和D.M.Ritchie (K&R)合著了著名的《The C Programming Language》一書。書中推薦了一套代碼編寫標准,有人稱之為《K&R》標准。)
微軟風格:
if (a > 100) { //do somthing… }
網上的朋友有些支持K&R, 因為是它更經典,有的支持微軟,因為它更現代,有的認為只是一種習慣,哪種都可以,無須糾結。但我還是存在一個疑問:從觀感來看,微軟的風格顯然更悅目,更對稱,為什么K&R要推薦這種看上去有些怪異的風格?除了習慣之外,我想不出這樣做的哪怕是一個好處。
最近忽然想到,這可能和早期顯示器的分辨率有關:以1981年IBM推出的第一台計算機彩色顯示器標准CGA為例,它的最高分辨率為640*200。豎向分辨率居然只有200, 現在一台普通的22寸顯示器的豎向分辨率是1080,大約是它的5倍!在這種情況下,屏幕空間就金貴了,K&R的風格可以省一行的空間,否則一屏根本顯示不了幾行代碼。有時候令人非常困惑的問題,答案往往意想不到的簡單,不是嗎?
明白了這一點,爭論就可以結束了:今天當然是用微軟風格,因為K&R風格的理由已經不存在了,今天你能找到的再舊顯示器分辨率恐怕也不會低於1024*768吧?所以還是要知其所以然,不能死記硬背大牛的教條。
注意:剛開始我用的是 左括號換行,后面改成了 不換行,讓代碼緊湊些,詳情參考: