Objective-C 命名規(guī)范淺談

Objective-C 命名規(guī)范淺談

對(duì)于易維護(hù)的代碼而言,命名規(guī)則非常重要。    
<br />                    --- by Google style guide

如開(kāi)篇那句話,遵循命名規(guī)范不僅使得代碼可讀性提高,更能體現(xiàn)一個(gè)合格程序員的素質(zhì)

為什么這么說(shuō)

  1. 程序員寫(xiě)代碼不是只為自己寫(xiě)(這點(diǎn)非常重要).很多人在開(kāi)始寫(xiě)代碼的時(shí)候只專注于功能,認(rèn)為完成功能就是完成了大部分的任務(wù),其實(shí)還差的很遠(yuǎn),且不說(shuō)代碼質(zhì)量,就蹩腳的命名方式,奇怪的函數(shù)名稱就夠維護(hù)人員,或調(diào)用者tou... 這也是大家為什么要統(tǒng)一命名,形成規(guī)范的最初原因。

  2. 好的命名,或者遵循了規(guī)范的命名除了可以幫助其他programmer更方便的閱讀和維護(hù)你的代碼,更能幫助開(kāi)發(fā)者本身認(rèn)識(shí)到你在開(kāi)發(fā)一項(xiàng)什么功能,是屬性相關(guān)還是動(dòng)作相關(guān),這些在命名OC規(guī)范里都有提及.其實(shí),當(dāng)開(kāi)發(fā)者清楚地知道自己在開(kāi)發(fā)一項(xiàng)什么功能的時(shí)候,利用自然語(yǔ)言中的動(dòng)詞,連詞就可以寫(xiě)出符合規(guī)范的名稱,這也是OC的一大優(yōu)勢(shì)。有的人嫌棄OC語(yǔ)法冗贅,這的確是事實(shí),有時(shí)候初始化一個(gè)變量就要3行代碼,但代碼塊讀起來(lái)就像散文一樣,不需要太多的代碼注釋。

  3. 作為一個(gè)有追求的程序員,應(yīng)該時(shí)時(shí)刻刻注意和官方文檔要求靠攏,apple中api的命名,class中delegate的命名都是有規(guī)范的,勤看,勤記,那樣一段時(shí)間下來(lái)你寫(xiě)的代碼就會(huì)向官方文檔一樣漂亮。其他開(kāi)發(fā)者調(diào)用時(shí)也會(huì)很舒服.

對(duì)待程序,如果你真正熱愛(ài),請(qǐng)培養(yǎng)你的代碼潔癖

====================分割線=====================

自己在程序里遇到的命名規(guī)范

命名的基本準(zhǔn)則相信大部分人都知道:清晰,一致,無(wú)自我參照。命名版式也一般遵循駝峰命名或者Pascal,這里我們都采用駝峰命名法.在我們的項(xiàng)目中,我遇到最多的就是函數(shù),類的命名問(wèn)題。

  1. 類的命名不需要的體現(xiàn)技術(shù)細(xì)節(jié),沒(méi)有人去關(guān)注你這個(gè)類到底是怎么實(shí)現(xiàn)的,調(diào)用者只關(guān)注暴露出的接口即可。例如現(xiàn)在寫(xiě)一個(gè)功能,是做照片瀏覽的,采用嵌套scrollview實(shí)現(xiàn),里面的那層scrollview命名該怎么命名呢?我一開(kāi)始寫(xiě)的是WQSingleScrollview,組長(zhǎng)說(shuō)命名很奇怪,我不關(guān)注你怎么實(shí)現(xiàn)的,邏輯上它是一個(gè)什么東西,就怎么命名.說(shuō)白了他就是個(gè)pageView,后來(lái)就改成WQPhotoPageView。

  2. 函數(shù)命名。第一,你必須清楚地知道這個(gè)函數(shù)是做什么的,是實(shí)現(xiàn)動(dòng)作或者事件的就用動(dòng)詞開(kāi)頭,例如是拉取數(shù)據(jù)就用build或update開(kāi)頭。初始化的就已init開(kāi)頭。如果參數(shù)多,還可以用and,with這些連詞或是副詞連接各個(gè)item。

說(shuō)明:由于Cocoa函數(shù)還分為存取函數(shù)(Accessor Methods)、委托函數(shù)(Delegate Methods)和集合函數(shù)(Collection Methods),每種函數(shù)都有其詳細(xì)的規(guī)范,請(qǐng)?jiān)敿?xì)參閱《Apple Coding Guidelines for Cocoa》。

    //關(guān)鍵字為屬性,不應(yīng)該使用and 
    - (int)runModalForDirectory:(NSString *)path andFile:(NSString *)name andTypes:(NSArray *)fileTypes; 
    //關(guān)鍵字為表示action,使用and 
    - (BOOL)openFile:(NSString *)fullPath withApplication:(NSString *)appName andDeactivate:(BOOL)flag; 
  1. 除了命名的規(guī)范,代碼的版式也非常重要。OC的語(yǔ)法給人冗長(zhǎng)的感覺(jué),所以排版很重要。例如:
    如果一行有非常多的參數(shù),更好的方式是將每個(gè)參數(shù)單獨(dú)拆成一行。如果使用多行,將每個(gè)參數(shù)前的冒號(hào)對(duì)齊。

    - (void)doSomethingWith:(GTMFoo *)theFoo
                       rect:(NSRect)theRect
                   interval:(float)theInterval
      {
         ...
      }                                             
    

當(dāng)?shù)谝粋€(gè)關(guān)鍵字比其它的短時(shí),保證下一行至少有 4 個(gè)空格的縮進(jìn)。這樣可以使關(guān)鍵字垂直對(duì)齊,而不是使用冒號(hào)對(duì)齊:
- (void)short:(GTMFoo *)theFoo
longKeyword:(NSRect)theRect
evenLongerKeyword:(float)theInterval
{
...
}

以上都是錯(cuò)的

雖然有代碼規(guī)范,但寫(xiě)代碼的畢竟是一個(gè)個(gè)活生生的個(gè)體,不可能被這些條框限制死,最終要還是養(yǎng)成自己的一套代碼規(guī)范,遵循了基本的守則,讓代碼整潔,易懂即可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容