Posted on 2006-09-29 18:56
chenger 閱讀(425)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
Programming Stuff
Ruby中的名字約定
歷史:高級(jí)程序語(yǔ)言的老祖宗,F(xiàn)ortran,對(duì)源程序中的名字,或者叫標(biāo)識(shí)符(identifier)有很嚴(yán)格的規(guī)定,譬如首字母代表變量的類型等等。個(gè)人認(rèn)為這是當(dāng)年編譯技術(shù)還未成熟時(shí)的權(quán)宜之計(jì)。后來(lái)主流的程序設(shè)計(jì)語(yǔ)言都放松了對(duì)名字的限制,像C/C++/Java,只有一點(diǎn)點(diǎn)小小的約束(對(duì)所用字符的限制:只能使用英文字母、數(shù)字、下劃線,必須以下劃線或英文字母開頭。這也容易理解,完全是為了寫詞法分析器的方便)。而和Fortran同時(shí)代的Lisp,這方面更是大開綠燈,愛怎么定義怎么定義。然而到了現(xiàn)在,似乎有點(diǎn)復(fù)古的潮流,有些語(yǔ)言開始對(duì)名字設(shè)立一些規(guī)則,比如Haskell,Erlang,包括Ruby。
言歸正傳。Ruby中的名字規(guī)則主要是根據(jù)名字的第一個(gè)字母來(lái)決定這個(gè)名字的使用方式。具體來(lái)說,
- 局部變量,方法名,方法參數(shù):以小寫字母或下劃線開頭,以'_'連接。
Example:i,note_controller - 常量:全部大寫,以'_'連接
Example:A_NUM - 類,模塊(module):都是開頭大寫(因?yàn)轭惷侨肿兞浚渌懖⑶抑苯舆B接在一起
Example:ActiveRecord - 全局變量:以'$'開頭(肯定是跟Perl學(xué)的,我覺得不怎么好)
- 實(shí)例變量(instance variable):以'@'開頭(同上)
- 類變量(class variable):以'@@'開頭(詭異)
有點(diǎn)Perl的味道,但Perl更加變態(tài),居然要以首字母區(qū)分標(biāo)量、數(shù)組和Hash表,這就不太人道了。相比起來(lái),Ruby的設(shè)置還是可以接受的,它只不過是把有些約定俗成的規(guī)則直接變成了語(yǔ)言規(guī)則。每個(gè)程序員基本上都會(huì)有自己的一套命名規(guī)則,比如寫C++程序時(shí),類名通常用大寫字母開頭,宏名則通常由大寫字母組成,而下劃線開頭的(特別是雙下劃線)往往留給庫(kù)開發(fā)者等等。Ruby的想法可能是:干脆統(tǒng)一了這些命名規(guī)則,免得人們?yōu)檫@種風(fēng)格(Style)問題爭(zhēng)論不休。也是挺有道理的。