程式碼之間為什麼要加空格?

沉默王二發表於2020-06-17

據我觀察,大多數人寫程式碼喜歡在符號兩側加空格,而且還會嘲諷不加空格的人。這些支持者認為,加空格可以讓程式碼美觀,增強程式碼的可讀性。但是我不喜歡加空格,因為這麼寫對程式碼含義沒有影響,浪費空間還很麻煩。我不認為多幾個空格就能讓原本凌亂的程式碼清晰起來,反而會讓程式碼看起來很鬆散,影響閱讀。

以上,是我在知乎上看到的一個題目,感覺蠻清新的,說得似乎有理有據。就好像在說,據我觀察,大多數人喜歡早晚刷牙,而且還會嘲笑不刷牙的人。這些支持者認為,刷牙有益於牙齒健康,空腔清新。但我不喜歡刷牙,因為我牙齒沒壞,吃嘛嘛香。我不認為刷牙能保護牙齒健康,反而很浪費時間。

對吧?我敢保證,這世界上有不少人不刷牙。說出來不怕大家笑話,我上初中之前真沒刷過牙,就算是到現在,很多農村的孩子仍然沒有刷牙的習慣。

在我寫程式碼的前一兩年裡,寫程式碼也不習慣加空格,覺得很麻煩,並且加不加空格,真的不影響程式碼的執行效果。

// 加空格的寫法
int a = 5;
int b = 3;
a = a + b;

// 不加空格的寫法
int a=5;
int b=3;
a=a+b;

想知道為什麼後來我開始刷牙了呢?

記得小學五年級的時候,牙齒疼過一次,真的是喪心病狂地疼,什麼東西也吃不了。那時候,哪有看牙科的,完全沒有,至少在我那時候的成長環境下。

沒辦法,疼了大概有一週的時間,終於打聽到鄰村有一個老先生,他那有祕方,父母就帶我去了。還真的見效,某一種祕製的液體滴在牙齒上,超級冰涼的那種,感覺整個牙齒完全失去了知覺。

有了這段痛苦的記憶,上初中後,看到很多同學都刷牙,於是我也就買了牙刷。初中的條件還是很差勁的,冬天,沒有熱水,洗臉的水和刷牙的水,都是前一天下午飯缸裡接的水,放在課桌裡。第二天早上到了教室,同學們就互幫互助,端著對方的飯缸倒水洗臉,臉沒凍壞,牙沒凍壞就是萬幸啊。

我在程式碼里加空格,和開始刷牙有相似的經歷。

Thisisavarofthings=yourfuckingtype+otherdamnedresult*me;
oh=mygodblessedsweetheart-thesaintangel/cursedcorpsehere;

哦,老天,上面這段程式碼裡就完全沒有空格,看起來密密麻麻,可讀性差到你感覺自己的雙眼受到了侮辱。

當符號兩側的單詞很簡單的時候,簡單到只有 a 和 b 的時候,的確,不加空格好像看起來更緊湊一些。但考慮到實際的編碼中,命名要有意義,長度都不會太短,這時候,如果沒有空格的輔助,程式碼就真的不堪入目了。

Thisisavarofthings = yourfuckingtype + otherdamnedresult * me;
oh = mygodblessedsweetheart - thesaintangel / cursedcorpsehere;

OK,現在加了空格,是不是觀感上就完全不一樣了。單詞與單詞之間,很清楚,很協調,不拖泥帶水。

一般的 IDE 都有自動格式化程式碼的快捷鍵,寫完程式碼來那麼一下,立馬就會把該有的空格給加上。我現在已經完全習慣手敲空格了,感覺自己很優雅,甚至有點大師範的感覺,畢竟程式設計師還是要有點追求的,對吧?

說到這,不得不替古人感慨一下,由於紙張稀缺,所以大師們寫出來的文章都是沒有標點符號的,要是沒點文化水平,密密麻麻一團的字擠在一起,真不一定能讀的懂,況且漢語是這麼博大精深。

我們算是幸運的,讀到的文言文都經過了加工,編輯們幫我們加了標點符號,所以看起來不至於那麼吃力。但我就特別討厭一些題目,讓加標點符號斷句的那些,很無聊。

所以,別任性,該加空格就加空格,你寫的程式碼可不只是給你一個人看的,負責任點。

換句話說,我也可以寫文章不換行,對吧?寫一行兩行文字真沒必要換行。但段落多了,還不換行,我保證你看不下去。

不過,需要注意一點的是,我看有些視訊課裡,有些講課人習慣什麼地方都加空格,我也是有點受不了的,比如說方法名和小括號之間——public void print (),這就有點不合時宜了。

按照規約來說,方法名和小括號之間是不需要空格的,因為沒有空格看起來更自然,更像一個方法,而不是割裂的關鍵字和小括號。

寫程式碼不是鑽牛角尖,就像有些人喜歡在 if 語句裡使用 == false 一樣——if (isFlase == false) {},他覺得這樣的程式碼更具有可讀性,這不是出來搞笑的嗎?

最次,你應該寫成下面這樣子:

if (isTrue) {

else {

}

這都比在 if 條件中使用 == false 來得讓人舒服。

做程式設計師嘛,總得有個程式設計師的樣子,想優雅點的話,把非“!”用上——if (!isFlase),搞那些無病呻吟的程式碼,真的很掉檔次。

無規矩不成方圓,你如果不想遵守程式碼規約的話,不想團隊協作的話,請隨意處置你的程式碼,誰也拿你沒辦法。逃逃逃)

如果覺得文章對你有點幫助,請微信搜尋「 沉默王二 」第一時間閱讀。

本文已收錄 GitHub,傳送門~ ,裡面更有大廠面試完整考點,歡迎 Star。

我是沉默王二,一枚有顏值卻靠才華苟且的程式設計師。關注即可提升學習效率,別忘了三連啊,點贊、收藏、留言,我不挑,嘻嘻

相關文章