{eval=Array;=+count(Array);}
使用空格的話一個是看著不明顯,還有就是會有沖突啊,代碼為了規范易讀,一般一行代碼,每個變量,邏輯運算,中間都會用空格隔開,要是其他也都用空格,豈不是都沖突了,甚至直接錯誤。
或許是我達不到你的高度,但我覺得你提的這是個錘子問題,空格替代下劃線,誰替代空格?
原本的變量名: user_first_name = "zhou"
替代后變量名: user first name = "zhou"。
只要你能替代的牛逼,讓美國人書寫英文時摒棄之前的觀念,讓他們接受空格兩邊的單詞是同一個單詞。
結論:程序員也想用空格,可是程序不允許。本文帶你了解深層次原因。
本文嘗試從多種語言的規范角度,說明程序代碼,或者命令行內為什么不提倡用空格。
本段從各個語言的角度,說一下。
1 - C語言
C語言是上帝賜給人類的禮物。他有很明確的規范,最新的也就是 ANSI-C 標準。
在定義變量時,變量名可以是字母、數字和下劃線的組合。但是也不是隨便的組合,要注意以下幾個命名規則:
變量名的開頭必須是字母或下劃線,不能是數字。
變量名中的字母是區分大小寫的。
變量名絕對不可以是C語言關鍵字。
變量名中不能有空格。
看到了嗎,變量名只能在 a-z, A-Z, 0-9,_,之間選擇,沒有其他項。
第四條,因為上述限制,也絕對不允許出現“空格”。
2 - Java語言
Java用途廣泛,使用眾多。
其命名規則(Naming rules)如下。
變量名稱區分大小寫。
變量的名稱可以是任何合法標識符。
可以包含Unicode字母、數字和另外兩個特殊字符,如下劃線(_)和美元符號($)。
變量名的長度任意。
變量名以字母開頭(也可以使用下劃線,但一般不用)。
某些自動生成的變量可能包含“$”符號。
盡量避免使用“$”符號。
不允許使用空格。
不允許使用特殊字符。
不允許以數字開頭。
后續字符可以是字母、數字、$符號或下劃線。
變量名不能是關鍵字或保留字。
看到了嗎,空格是不允許使用的。
3 - Python語言
上面兩種都是強類型語言,我們看看以python為代表的解釋型腳本語言規范如何。
python命名規則如下:
變量名僅支持數字、字母和下劃線。
變量名只能以字母,或下劃線開頭。
變量名不能以數字開頭。
變量名區分大小寫。
變量名內不允許有空格。
不允許其他特殊字符。
變量名不能是關鍵字。
可以看到,python受C語言的影響痕跡很重,基本保持了C的命名規則。
4 - 比較新的語言GO
我們再拿go語言做比較,go是一門現代化的語言,融合了編譯型和解釋性語言的優秀設計理念,便于開發使用。
go語言的變量命名規則:
名稱必須以字母開頭,并且可以包含任意數量的其他字母和數字。
變量名不能以數字開頭。
變量名不能包含空格。
如果變量的名稱以小寫字母開頭,則只能在當前包中訪問該變量,這被視為未導出的變量。
如果變量的名稱以大寫字母開頭,則可以從當前包之外的包訪問該變量,該包被視為導出的變量。
如果一個名稱由多個單詞組成,則第一個單詞之后的每個單詞應按如下方式大寫:empName、EmpAddress等。
變量名區分大小寫(cAR、CaR和CAr是三個不同的變量)。
變量名不能是關鍵字。
從上面的四種語言舉例中,可以看到每種語言都明確寫到“不允許變量名包含空格”。
因為無論是靜態編譯型語言,還是解釋型語言,都是要將代碼解析為機器碼執行。空格、換行符、空行是沒有意義的,會被編譯器忽略。如果使用了帶空格的變量,語法就會出錯。
說完編程語言代碼層面的內容,我們把目光轉向命令行,主要介紹一下widnows平臺和linux平臺中,空格的特殊用途。
1 - windows dos
widnows平臺主要說一說dos指令,因為它是bat批處理文件的基礎。
空格是位置分隔符,也就是命令行傳入參數argvs用于區分位置參數的分隔符。
例如下面這個創建文件夾指令:
md path ofile
如果加上空格:
md path tofile
則會創建兩個目錄 path,和 tofile。這不是我們想要的結果。
2 - linux shell
linux命令行下,功能幾乎是一樣的,空格是默認的位置參數分隔符。
例如創建如下目錄:
mkdir -pv a/b/c
如果加上空格:
mkdir -pv a/ b/c
結果也不是我們想要的。
我們知道,空格在多數語言內,或者命令行內,是保留關鍵詞,是“占位符”,“分隔符”。
如果與系統命名沖突,造成程序不可控運行,這是非常危險的。
我是@程序員小助手,持續分享編程與程序員成長相關的內容,歡迎關注~~
0
回答5
回答10
回答0
回答0
回答10
回答0
回答0
回答0
回答0
回答