為什麼很多人不建議使用駝峰命名法,有什麼弊端么?

最近在看CI Framework 官方文檔認為不應使用駝峰命名法。


事實上規範這種東西本來就不是討論有什麼弊端,有什麼優勢,有什麼道理的。你要融入一個用某種規範的團隊,那你就必須用這種規範寫代碼,或者寫完了用格式化工具處理下。


我以前也天真的認為每種規範都有自己的道理而且按照規範寫出來的代碼不論是可讀性,可維護性甚至是逼格方面都會得到極大的提升。

直到我知道了GNU C風格這種規範,我決定這輩子都不會想要寫這種規範的代碼

For the body of the function, our recommended style looks like this:

if (x &< foo (y, z)) haha = bar[4] + 5; else { while (z) { haha += foo (z, z); z--; } return ++x + bar (); }

http://www.gnu.org/prep/standards/standards.html#Formatting


宗教這種東西別管他們亂扯,你自己寫的話你高興怎麼來就怎麼來,和別人一起寫的話統一就好了。


駝峰一般也就是跟下劃線比較的。缺點是:
1,閱讀困難,加下劃線之後詞距拉大,相對來說閱讀起來輕鬆些。
2,為了做全文搜索,駝峰你必須忽略大小寫。而下劃線命名法做全文搜索可以區別大小寫。很少有人在用駝峰命名時,編輯器搜索區分大小寫。而一旦你習慣了不分大小寫的設定,會在區分大小寫的場合感到不習慣。

當然,其實也沒有絕對的好壞,只是一個取捨而已。項目一致性始終很重要。人家那個項目不建議用駝峰你就別用,人家那個項目規定用駝峰你就用。


你可以去試試 Nim ,我記得這個語言的變數名除了首字母以外是忽略大小寫和下劃線的。也就是說這樣的代碼是符合語法的:

var a_variable_name = 1
echo aVariableName

你再也不需要擔心是使用駝峰法還是下劃線了。


有幾個原因

1、微軟的新項目很喜歡它。

2、他用的不是C/C++或類似的語言。C/C++的符號除了@$以外全都用上了,你這個時候在名字裡面混進一大堆下劃線(見標準庫和stl),那代碼豈不是成屎了,哪裡到哪裡是一個名字都看不清楚了,還讓人怎麼寫代碼啊。


我個人習慣用駝峰,但是碰到全大寫詞有點麻煩,比如 numOfID, lastUIInStack, MD5GUIOfGFW


類型,函數用駝峰,變數統一下劃線,妥妥的,清晰直觀一目了然。


可讀性差,類似於斜體字。


駝峰表示函數的時候辨識速度慢,這方面肯定比不過下劃線。當然他有他的有點,就是緊湊,這在表示對象的時候非常合適。
下劃線在表示函數的時候非常清晰,而且辨識速度很快。但是表示對象就有些不舒服。

沒有完美的方案,取決於你的選擇

我用下劃線的原因有兩點:1.多用小寫字母,可以和標準庫寫法保持一致 2.在腳本語言中,下劃線的寫法是很方便的,可以很容易的拆分,組合
這兩點都能保持一致,對眼睛好


啊?er。。。我對命名其實沒有啥要求的,駝峰也好、帕斯卡也好,下劃線也好,唯獨匈牙利太長了不好。。。。


SimpleHTTPServer


以前大家噴下劃線命名法,因為微軟用下劃線命名。
現在微軟改用駝峰法了。


下劃線配大寫我才不能忍,駝峰感覺名字不長還好.
但是我要水一下下劃線,有人這麼寫程序也蠻有趣的:

#define _ int
#define __ ;
#define ___ (
#define ____ )
#define _____ if(
#define ______ return
#define _______ else
#define ________ *
#define ____________ -
#define _____________ ==

_ _________(_ __________)
{
_____ __________ _____________ 1 ____
{
______ 1 __
}
_______
{
______ __________ ________ _________ ___ __________ ____________ 1 ____ __
}
}


因為PHP是世界上最好的語言


我是這樣的,寫C/Python的時候用下劃線,寫Java/C++的時候就不用下劃線用駝峰了。


可能因為駝峰命名習慣了就會所有地方都使用駝峰命名,然後有些地方會忽略大小寫,比如mysql的欄位,然後就悲劇了、、


比如有個表叫to(id,name),另一個表say里有個外鍵用to.id,命名為toId,你能肉眼區分told和toId么?

say(id,toId,told)和say(id,to_id,told) 那個更清晰易懂呢?


其實就一個問題:
像HTTP這樣的詞究竟該怎麼寫?


朋友,你看過objc的代碼或者文檔嗎?


跟API編碼習慣一致就行,讓自己代碼和系統的一致。說別的都是扯淡。


推薦閱讀:

一個主修語言學的女生想要學一些計算機語言和編程,學什麼比較好?
設計RPC框架時,客戶端調用出錯是直接拋出異常好,還是返回errcode好?
我國的 IT 培訓機構是否坑?
程序員所積累的編程知識在十年後將有多少變得沒用?
為什麼程序語言會存在解釋型或編譯型的限制?

TAG:編程 | 命名系統 |