簡體   English   中英

Cocoa中的實例變量命名約定

[英]Instance variable naming conventions in Cocoa

這個問題是關於目標c和cocoa中的變量命名風格。 我只想強調,我不是在尋找一個“正確”的答案,只是好主意。

我已經閱讀了Apple和Google的客觀c風格指南,我對它們中的任何一個都不滿意。 Apple的指南沒有關於實例變量和局部變量的任何真實樣式建議。 事實上,Cocoa庫本身似乎非常高興擁有與實例變量完全相同的函數參數。 這讓我個人感到畏縮。

谷歌指南指定實例變量應使用尾隨下划線表示。 好吧,一切都很好,但它表明我們然后用@synthesize property = property_合成每個公共屬性。 我不知道其他任何人,但如果我要為我的項目中的每個實例變量做這件事我都會被詛咒。 我認為這是一個浪費和混亂的解決方案。

我很想用對象屬性的myX(例如“myInstanceVariable”)命名樣式,但我很少在目標c中看到這種風格。

所以是的,你用的是什么? 任何風格約定,我不知道你發現有用嗎? 您是否認為與實例變量同名的函數參數是危險的,尤其是在多個開發人員環境中? 謝謝你們和gals!

注 - 正如許多人所指出的那樣,我的術語在OP中沒有。 如果原始措辭損害了清晰度,請道歉,但我認為這一點仍然很明確。

我傾向於使用非前綴的實例變量名稱(注意“成員變量”是C ++主義,因為它暗示結構和類主要是可互換的,而在Objective-C中卻不是這樣,並且在模糊性的情況下)出現,我使用Smalltalk約定命名參數的類型用“a”或“an”,例如:

- (void)setFoo:(SOFoo *)aFoo;
{
    foo = aFoo;
}

(當然,在現代的ObjC中你會使用一個屬性。)

使用theFoo而不是aFoo也有點常見; 看到這個問題的答案。

如果你真的擔心沖突,谷歌會議是有道理的。 如果您使用Xcode文本宏完成字典Accessorizer之類的工具來生成指令,則采用它非常簡單。

請注意, Cocoa鍵值編碼指南幾乎假定(a)您沒有為實例變量名添加前綴/后綴,或者(b)為它們實現(或合成)非前綴/后綴訪問器。 正如其他人提到的,不要使用_前綴; 它保留給Apple在其框架中的使用。

第一:Objective-C中沒有“成員變量”,有“實例變量”或“ivars”。

Google對Objective-C編碼或Mac開發沒有任何權威。 谷歌地球是一個Qt應用程序:'努夫說。

我似乎記得看過Apple的Objective-C官方編碼風格指南,目前我還沒有找到。 不過,本文是一個非常好的總結:

http://cocoadevcentral.com/articles/000082.php

找到了! 這是Apple針對Cocoa的官方編碼指南:

http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html

在Cocoa中,風格是有pascalCased(或者是camelCased?我永遠不記得)的名字; 並且成員變量的名稱與訪問者方法相同。 (例如NSInteger anInteger- anInteger- setAnInteger:

它可能不是最好的風格,但是如果你要使用Cocoa進行任何工作,那么習慣它可能是一個好主意,因為許多機制都假定這種特殊的命名約定。

m_variableName對於成員變量也很常見。 就個人而言,大多數情況下,我只是為兩個變量使用相同的名稱,並區分this.varnamevarname

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM