知乎神回復(fù):代碼之間為什么要加空格?這個(gè)問題我是這樣理解的!
文章的由來,是我在知乎上看到的一個(gè)題目,感覺蠻清新的,說得似乎有理有據(jù)。原文是這樣子的:
據(jù)我觀察,大多數(shù)人寫代碼(C語言)喜歡在符號(hào)兩側(cè)加空格,而且還會(huì)嘲諷不加空格的人。這些支持者認(rèn)為,加空格可以讓代碼美觀,增強(qiáng)代碼的可讀性。但是我不喜歡加空格,因?yàn)檫@么寫對(duì)代碼含義沒有影響,浪費(fèi)空間還很麻煩。我不認(rèn)為多幾個(gè)空格就能讓原本凌亂的代碼清晰起來,反而會(huì)讓代碼看起來很松散,影響閱讀。

就好像在說,據(jù)我觀察,大多數(shù)人喜歡早晚刷牙,而且還會(huì)嘲笑不刷牙的人。這些支持者認(rèn)為,刷牙有益于牙齒健康,空腔清新。但我不喜歡刷牙,因?yàn)槲已例X沒壞,吃嘛嘛香。我不認(rèn)為刷牙能保護(hù)牙齒健康,反而很浪費(fèi)時(shí)間。
對(duì)吧?我敢保證,這世界上有不少人不刷牙。說出來不怕大家笑話,我上初中之前真沒刷過牙,就算是到現(xiàn)在,很多農(nóng)村的孩子仍然沒有刷牙的習(xí)慣。
在我寫代碼的前一兩年里,寫代碼也不習(xí)慣加空格,覺得很麻煩,并且加不加空格,真的不影響代碼的運(yùn)行效果。

想知道為什么后來我開始刷牙了呢?
記得小學(xué)五年級(jí)的時(shí)候,牙齒疼過一次,真的是喪心病狂地疼,什么東西也吃不了。那時(shí)候,哪有看牙科的,完全沒有,至少在我那時(shí)候的成長環(huán)境下。
沒辦法,疼了大概有一周的時(shí)間,終于打聽到鄰村有一個(gè)老先生,他那有秘方,父母就帶我去了。還真的見效,某一種秘制的液體滴在牙齒上,超級(jí)冰涼的那種,感覺整個(gè)牙齒完全失去了知覺。
有了這段痛苦的記憶,上初中后,看到很多同學(xué)都刷牙,于是我也就買了牙刷。初中的條件還是很差勁的,冬天,沒有熱水,洗臉的水和刷牙的水,都是前一天下午飯缸里接的水,放在課桌里。第二天早上到了教室,同學(xué)們就互幫互助,端著對(duì)方的飯缸倒水洗臉,臉沒凍壞,牙沒凍壞就是萬幸啊。
我在代碼里加空格,和開始刷牙有相似的經(jīng)歷。

哦,老天,上面這段代碼里就完全沒有空格,看起來密密麻麻,可讀性差到你感覺自己的雙眼受到了侮辱。
當(dāng)符號(hào)兩側(cè)的單詞很簡單的時(shí)候,簡單到只有 a 和 b 的時(shí)候,的確,不加空格好像看起來更緊湊一些。但考慮到實(shí)際的編碼中,命名要有意義,長度都不會(huì)太短,這時(shí)候,如果沒有空格的輔助,代碼就真的不堪入目了。

OK,現(xiàn)在加了空格,是不是觀感上就完全不一樣了。單詞與單詞之間,很清楚,很協(xié)調(diào),不拖泥帶水。
一般的 IDE 都有自動(dòng)格式化代碼的快捷鍵,寫完代碼來那么一下,立馬就會(huì)把該有的空格給加上。我現(xiàn)在已經(jīng)完全習(xí)慣手敲空格了,感覺自己很優(yōu)雅,甚至有點(diǎn)大師范的感覺,畢竟程序員還是要有點(diǎn)追求的,對(duì)吧?

說到這,不得不替古人感慨一下,由于紙張稀缺,所以大師們寫出來的文章都是沒有標(biāo)點(diǎn)符號(hào)的,要是沒點(diǎn)文化水平,密密麻麻一團(tuán)的字?jǐn)D在一起,真不一定能讀的懂,況且漢語是這么博大精深。
我們算是幸運(yùn)的,讀到的文言文都經(jīng)過了加工,編輯們幫我們加了標(biāo)點(diǎn)符號(hào),所以看起來不至于那么吃力。但我就特別討厭一些題目,讓加標(biāo)點(diǎn)符號(hào)斷句的那些,很無聊。
所以,別任性,該加空格就加空格,你寫的代碼可不只是給你一個(gè)人看的,負(fù)責(zé)任點(diǎn)。
換句話說,我也可以寫文章不換行,對(duì)吧?寫一行兩行文字真沒必要換行。但段落多了,還不換行,我保證你看不下去。
不過,需要注意一點(diǎn)的是,我看有些視頻課里,有些講課人習(xí)慣什么地方都加空格,我也是有點(diǎn)受不了的,比如說方法名和小括號(hào)之間——public void print (),這就有點(diǎn)不合時(shí)宜了。
按照規(guī)約來說,方法名和小括號(hào)之間是不需要空格的,因?yàn)闆]有空格看起來更自然,更像一個(gè)方法,而不是割裂的關(guān)鍵字和小括號(hào)。
寫代碼不是鉆牛角尖,就像有些人喜歡在 if 語句里使用 == false 一樣——if (isFlase == false) {},他覺得這樣的代碼更具有可讀性,這不是出來搞笑的嗎?
最次,你應(yīng)該寫成下面這樣子:

這都比在 if 條件中使用 == false 來得讓人舒服。
做程序員嘛,總得有個(gè)程序員的樣子,想優(yōu)雅點(diǎn)的話,把非“!”用上——if (!isFlase),搞那些無病呻吟的代碼,真的很掉檔次。
無規(guī)矩不成方圓,你如果不想遵守代碼規(guī)約的話,不想團(tuán)隊(duì)協(xié)作的話,請(qǐng)隨意處置你的代碼,誰也拿你沒辦法)

另外,UP在主頁上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會(huì)對(duì)你有幫助的~