ios開(kāi)發(fā)規(guī)范文檔_第1頁(yè)
ios開(kāi)發(fā)規(guī)范文檔_第2頁(yè)
ios開(kāi)發(fā)規(guī)范文檔_第3頁(yè)
ios開(kāi)發(fā)規(guī)范文檔_第4頁(yè)
ios開(kāi)發(fā)規(guī)范文檔_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、命名命名規(guī)則對(duì)于維護(hù)代碼來(lái)說(shuō)是非常重要的,。Objective-C方法名往往很長(zhǎng),不過(guò)這也有好處,讓很多注釋變得毫無(wú)意義。本文推薦駝峰法,也是Objective-C社區(qū)的標(biāo)準(zhǔn)。 駝峰法分小駝峰法和大駝峰法。小駝峰法:除第一個(gè)單詞之外,其他單詞首字母大寫(xiě)。大駝峰法相比小駝峰法,大駝峰法把第一個(gè)單詞的首字母也大寫(xiě)了。1.基本原則1.1 清晰又清晰又簡(jiǎn)潔是最好的了,但簡(jiǎn)潔不如清晰重要。總的講不要使用單詞的簡(jiǎn)寫(xiě),除了非常常用的簡(jiǎn)寫(xiě)以外,盡量使用單詞全稱。API的名稱不要有歧義,一看你的API就知道是以什么方式做了什么事情,不要讓人有疑問(wèn)1.2 一致性做某個(gè)事情代碼通常都叫這個(gè)名字,比如tag

2、、setStringValue,那么你也這么叫。你在不確定怎么起名字的時(shí)候,可以參考一些常用的名字:Method Arguments2. 類命名類名(不包括類別和協(xié)議名)應(yīng)該用大寫(xiě)開(kāi)頭的大駝峰命名法。類名中應(yīng)該包含一個(gè)或多個(gè)名詞來(lái)說(shuō)明這個(gè)類(或者類的對(duì)象)是做什么的。在應(yīng)用級(jí)別的代碼里,盡量不要使用帶前綴的類名。每個(gè)類都有相同的前綴不能提高可讀性。不過(guò)如果是編寫(xiě)多個(gè)應(yīng)用間的共享代碼,前綴就是可接受并推薦的做法了(型如 MBAPhotoBrowser )。示例1:interface ImageBrowseView :UIViewend示例2:(帶前綴MBA)interface 

3、;MBAPhotoBrowser :UIViewend3. 類別命名類名+標(biāo)識(shí)+擴(kuò)展(UIImageView +HP+Web)例:如果我們想要?jiǎng)?chuàng)建一個(gè)基于UIImageView 的類別用于網(wǎng)絡(luò)請(qǐng)求圖片,我們應(yīng)該把類別放到名字是UIImageView+HPWeb.h的文件里。UIImageView為要擴(kuò)展的類名,HP為專屬標(biāo)識(shí),Web為擴(kuò)展的功能。類別的方法應(yīng)該都使用一個(gè)前綴(型如hp_myCategoryMethodOnAString ),以防止Objective-C代碼在單名空間里沖突。如果代碼本來(lái)就不考慮共享或在不同的地址空間(address-space),方法命名規(guī)則就沒(méi)必要恪守了。類別

4、HPWeb頭文件,UIImageView+HPWeb.h如下:interface UIImageView (HPWeb)- (void)hp_setImageWithURLString:(NSString *)urlStr;end4. 方法命名 方法使用小駝峰法命名, 一個(gè)規(guī)范的方法讀起來(lái)應(yīng)該像一句完整的話,讀過(guò)之后便知函數(shù)的作用。執(zhí)行性的方法應(yīng)該以動(dòng)詞開(kāi)頭,小寫(xiě)字母開(kāi)頭,返回性的方法應(yīng)該以返回的內(nèi)容開(kāi)頭,但之前不要加get。示例:- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObj

5、ect;(instancetype)arrayWithArray:(NSArray *)array;如果有參數(shù),函數(shù)名應(yīng)該作為第一個(gè)參數(shù)的提示信息,若有多個(gè)參數(shù),在參數(shù)前也應(yīng)該有提示信息(一般不必加and) 一些經(jīng)典的操作應(yīng)該使用約定的動(dòng)詞,如initWith,insert,remove,replace,add等等。5. 變量命名 變量名使用小駝峰法, 使變量名盡量可以推測(cè)其用途屬性具有描述性。別一心想著少打幾個(gè)字母,讓你的代碼可以迅速被理解更加重要。5.1 類成員變量:成員變量用小駝峰法命名并前綴下劃線,Objective-C 2.0,property 和 sy

6、nthesize 提供了遵守命名規(guī)范的解決方法示例:interface ViewController ()property (nonatomic,strong)NSMutableArray    *mDataArray;property (nonatomic,strong)UITableView       *mtableView;endimplementation ViewControllerend5.2 一般變量命名       

7、 示例:NSMutableArray  *ticketsArray = NSMutableArrayarrayWithCapacity:0;    NSInteger numCompletedConnections =3;5.3 常量命名 常量(預(yù)定義,枚舉,局部常量等)使用小寫(xiě)k開(kāi)頭的駝峰法,比如kInvalidHandle , kWritePerm 示例:#define kRunAnnotationStartPointTitle     “起點(diǎn)"typedef NS_EN

8、UM (NSInteger,RunGoalTypeE)    kRunGoalTypeNone       = 0,    /無(wú)目標(biāo)    kRunGoalTypeTime       = 1,    /以時(shí)間為目標(biāo)    kRunGoalTypeDistance   = 2,    /以距離為目標(biāo)    kRunGoalTypeCalori &#

9、160;   = 3,    /以消耗卡路里為目標(biāo);NSString *const kGroupInfoName ="name"6. 圖片資源文件命名 先看下新浪微博app圖片資源命名方式,下面是部分截圖:這個(gè)圖片資源命名方式,以功能為組織形式,是一個(gè)很好的習(xí)慣,有利于查看資源文件。原則:1)采用單詞全拼,或者大家公認(rèn)無(wú)岐義的縮寫(xiě)(比如:nav,bg,btn等)2)采用“模塊+功能”命名法,模塊分為公共模塊、私有模塊。公共模塊主要包括統(tǒng)一的背景,導(dǎo)航條,標(biāo)簽,公共的按鈕背景,公共的默認(rèn)圖等等;私有模塊主要

10、根據(jù)app的業(yè)務(wù)功能模塊劃分,比如用戶中心,消息中心等備注:建議背景圖采用以bg作前綴,按鈕背景采用btn作前綴(不作強(qiáng)制要求,項(xiàng)目實(shí)際負(fù)責(zé)人根據(jù)團(tuán)隊(duì)特點(diǎn)確定即可)公共模塊命名示例:導(dǎo)航條背影圖片:bg_nav_bar2x.png導(dǎo)航返回按鈕:bg_nav_back_normal2x.png,bg_nav_back_selected2x.png 標(biāo)簽item背景:bg_tabbar_record_normal2x.png,bg_tabbar_record_selected2x.png私有模塊命名示例:以Joggers APP的用戶中心圖片資源為例說(shuō)明,ucuser center用戶中心頭像默認(rèn)

11、圖:bg_uc_avatar2x.png用戶中心頂部默認(rèn)背景圖:bg_uc_top_defaut2x.png用戶中心底部背景圖:bg_uc_bottom2x.png這部分工作較為繁雜,并且在程序員心中會(huì)認(rèn)為是技術(shù)含量較低的一個(gè)工作,但圖片命名的嚴(yán)謹(jǐn)性同樣會(huì)反映出我們對(duì)細(xì)節(jié)的追求,細(xì)節(jié)決定成敗。文件組織結(jié)構(gòu)1. 類文件組織iOS工程文件結(jié)構(gòu)分物理結(jié)構(gòu)和邏輯結(jié)構(gòu),建議邏輯結(jié)構(gòu)和物理結(jié)構(gòu)保持一致,以便方便有效地管理類文件。類文件組織要遵循以下兩大原則:基于MVC設(shè)計(jì)模式原則,至少要保證controller與數(shù)據(jù)處理,網(wǎng)絡(luò)請(qǐng)求相對(duì)獨(dú)立基于功能模塊原則,功能模塊分包括數(shù)據(jù)/網(wǎng)絡(luò)處理,UI前端界面兩部分,

12、數(shù)據(jù)/網(wǎng)絡(luò)處理應(yīng)該在數(shù)據(jù)/網(wǎng)絡(luò)處理的框架下,而UI前端界面比如用戶中心,消息中心,它們的專有的controller,view等應(yīng)該在屬于文件夾。還會(huì)遇到一些公共的view,可以開(kāi)辟出公共的文件夾來(lái)管理在實(shí)際中使用中,項(xiàng)目實(shí)際負(fù)責(zé)人可以結(jié)合項(xiàng)目特點(diǎn)靈活使用,但基本的原則一定要保持,保持良好的類文件組織結(jié)構(gòu),對(duì)團(tuán)隊(duì)有益無(wú)害。2. 圖片資源文件組織圖片資源文件,強(qiáng)烈建議采用Images.xcassets管理,盡量少用自己創(chuàng)建的文件夾管理。使用Images.xcassets的優(yōu)勢(shì)很多,具體可以查閱讀相關(guān)文獻(xiàn)資料,這里只從工程管理上說(shuō)一點(diǎn),在Images.xcassets中添加圖片資源,不會(huì)對(duì)proje

13、ct文件造成改變,而直接在文件夾里添加圖片文件,每次都會(huì)對(duì)project文件造成改變,因此使用Images.xcassets管理圖片資源可以減少project沖突的次數(shù)。下圖是Joggers的文件組織結(jié)構(gòu):上圖嚴(yán)格按照上述討論組織文件結(jié)構(gòu),保持了物理/邏輯結(jié)構(gòu)的統(tǒng)一,方便團(tuán)隊(duì)間查閱代碼,以及共享資源。類代碼組織原則一個(gè)原則:析構(gòu)函數(shù)- (void)dealloc最好放到類最上面,第一眼就可以看到這個(gè)方法,可以方便看到是否remove了一些操作,對(duì)內(nèi)存的合理釋放等,controller,view的生命周期函數(shù)放到最上面,自己實(shí)現(xiàn)的方法在下面,相同/相近功能的方法采用#pragma mark -來(lái)

14、標(biāo)記,以便查看。示例:  第一部分主要對(duì)易把握的,易推廣的,并且對(duì)團(tuán)隊(duì)開(kāi)發(fā)中有實(shí)實(shí)在在幫助內(nèi)容作簡(jiǎn)要論述,主要集中在命名,文件組織原則方面,并給了相應(yīng)的示例。規(guī)范由各項(xiàng)目負(fù)責(zé)人具體執(zhí)行。好像忘記一件什么事,沒(méi)錯(cuò),注釋,上述沒(méi)有對(duì)注釋做專門(mén)的闡述,良好的代碼習(xí)慣就是一個(gè)好的注釋,因此這里不專門(mén)為注釋作討論,注釋要求由各項(xiàng)目負(fù)責(zé)人來(lái)約定。團(tuán)隊(duì)要求iOS代碼規(guī)范1 刪除多余的空行     * 所有方法與方法之間空1行     * 所有代碼塊之間空1行2 刪除多余的注釋     * 刪除注釋掉

15、的代碼     * 刪除沒(méi)有意義的注釋3 刪除多余的方法     * 如果方法沒(méi)有使用到,請(qǐng)刪除它     * 如果方法沒(méi)有執(zhí)行任何業(yè)務(wù)邏輯,請(qǐng)刪除它或者給出一定注釋4 刪除未被使用的資源文件5 添加必要的注釋     * 所有 .h 文件中的property 需要給出注釋     * 所有自定義的方法需要給出注釋     * 比較大的代碼塊需要給出注釋     * 所有代碼中出現(xiàn)的阿拉

16、伯?dāng)?shù)字需要給出注釋     * 程序中出現(xiàn)加密解密 邏輯的操作地方,需要給出注釋說(shuō)明過(guò)程(無(wú)論是系統(tǒng)還是自定義)6 整體代碼風(fēng)格需要統(tǒng)一     * 代碼后面的”“ 不需要單獨(dú)占用一行     * 邏輯運(yùn)算符 與 代碼之前空一格     * “#pragma mark -” 與下面的代碼之前不要空行     * 遵循一般性的代碼規(guī)范iOS通用規(guī)則1 下面所有規(guī)則對(duì)第三方類庫(kù)無(wú)約束     * 所有類、方法、屬性等命名

17、,做到見(jiàn)名知意,采用駝峰式命名規(guī)則     * 根據(jù)資源類型或者所屬業(yè)務(wù)邏輯對(duì)項(xiàng)目資源進(jìn)行分組,使得整個(gè)項(xiàng)目結(jié)構(gòu)清晰明了     * 整個(gè)項(xiàng)目保持一種代碼書(shū)寫(xiě)風(fēng)格(這個(gè)風(fēng)格由無(wú)錫團(tuán)隊(duì)根據(jù)自己編碼習(xí)慣來(lái)定),讓你的代碼變的優(yōu)雅!2. 命名規(guī)范     * 所有類名稱以項(xiàng)目工程開(kāi)頭命名,eg:“XP”、“ZJG”、“SZ”     * 針對(duì)不同視圖控制器,在末尾添加后綴,eg:     * UIViewController  后綴添加“Vi

18、ewController”     * UIView 后綴添加“View”     * UIButton 后綴添加“Button"     * UILabel 后綴添加“Label"3. 單頁(yè)代碼最好控制在800行以內(nèi),每個(gè)方法最好不要超過(guò)100行,過(guò)多建議對(duì)代碼進(jìn)行重構(gòu)4. 相同的邏輯方法定義避免在多個(gè)地方出現(xiàn),盡量將公用的類、方法抽取出來(lái)5. 刪除未被使用的代碼,不要大片注釋未被使用的代碼,確定代碼不會(huì)使用,請(qǐng)及時(shí)刪除6. 對(duì)其他項(xiàng)目中copy過(guò)來(lái)的代碼,根據(jù)具體需要更新代碼風(fēng)格,

19、及時(shí)刪除未被使用的代碼7. 項(xiàng)目中所有Group或者文件名稱(圖片名字等),不要使用漢字命名,盡量使用英文命名,國(guó)內(nèi)特有名詞可以使用拼音。8. 項(xiàng)目中所有Group都需要在項(xiàng)目目錄中存在一個(gè)真實(shí)的目錄,Group中的文件與真實(shí)目錄中文件一一對(duì)應(yīng)。9. 請(qǐng)?jiān)陧?xiàng)目中寫(xiě)必要代碼的注釋10. 請(qǐng)多使用 #pragma mark - Mark Name 對(duì)方法進(jìn)行分組 eg:     * #pragma mark - View lifeCycle     * #pragma mark - View lifeTerm    &

20、#160;* #pragma mark - Init methods     * #pragma mark - Action methods     * #pragma mark - Common methods     * #pragma mark - UIActionSheetDelegate     * #pragma mark - UIImagePickerControllerDelegate     * #pragma mark - U

21、ITableViewDelegate Methods     * #pragma mark - UITableViewDataSource Methods     * #pragma mark - UIScrollViewDelegate Methods     * #pragma mark - UITextFieldDelegate Methods     * #pragma mark - UITextViewDelegate Methods 1.代碼行度最大為1

22、00列2.聲明類或方法時(shí),注意空格的使用,參數(shù)過(guò)多時(shí)可換行保持對(duì)齊,調(diào)用方法時(shí)也是如此,參數(shù)都寫(xiě)在一行或換行冒號(hào)對(duì)齊, 3.命名規(guī)則    類名首字母大寫(xiě),方法首字母小寫(xiě),方法中的參數(shù)首字母小寫(xiě),同時(shí)盡量讓方法的命名讀起來(lái)像一句話,能夠傳達(dá)出方法的意思,同時(shí)取值方法前不要加前綴“get”變量名小寫(xiě)字母開(kāi)頭常量以小寫(xiě)字母k開(kāi)頭,后續(xù)首字母大寫(xiě) 4.關(guān)于注釋 注釋很重要,但除了開(kāi)頭的版權(quán)聲明,盡可能把代碼寫(xiě)的如同文檔一樣,讓別人直接看代碼就知道意思,寫(xiě)代碼時(shí)別擔(dān)心名字太長(zhǎng),相信Xcode的提示功能。 5.實(shí)例變量應(yīng)該在實(shí)現(xiàn)文件.

23、m中聲明或以property形式在.h文件中聲明,一定要直接在.h文件聲明,加上priavte,另外,使用private、public,前面需要一個(gè)縮進(jìn)空格。 6.盡可能保證 .h文件的簡(jiǎn)潔性,可以不公開(kāi)的API就不要公開(kāi)了,寫(xiě)在實(shí)現(xiàn)文件中即可。 7.Xcode支持Objective-C/C/C+混編,所以引用頭文件時(shí):#import Ojbective-C/Objective-C+頭文件(Objective-C+是Objective-C與C+混編的文 件),#include C/C+頭文件。 8.寫(xiě)delegate的時(shí)候類型應(yīng)該為weak弱引用,以避免循環(huán)引用,

24、當(dāng)delegate對(duì)象不存在后,我們寫(xiě)的delegate也就沒(méi)有存在意義了自然是需要銷毀的,weak與strong可以參考上一篇文章介紹。 9.實(shí)例變量聲明時(shí)變量名前面加下劃線“_”,局部變量不用加。  10.使用Block時(shí),內(nèi)容四個(gè)空格縮進(jìn),“”后帶有參數(shù)時(shí),參數(shù)與“”之間有一個(gè)空格縮進(jìn) 11.建議使用“#pragma mark”,方便閱讀代碼屬性命名描述性的單詞+變量類型 是最好的,一目了然 例如:UILabel* nameLabel;類命名前綴+描述+類型注:前綴可以是你的姓名/昵稱等主要用于團(tuán)隊(duì)開(kāi)發(fā)的時(shí)候避免文件名重復(fù)以下是我個(gè)人命名方式 例:

25、XJX             - 姓名/昵稱Message     - 描述性本類的功能Cell/Model  - 類型/模型方法命名方法使用小駝峰法命名一個(gè)規(guī)范的方法讀起來(lái)應(yīng)該像一句完整的話,讀過(guò)之后便知函數(shù)的作用。執(zhí)行性的方法應(yīng)該以動(dòng)詞開(kāi)頭,小寫(xiě)字母開(kāi)頭。返回性的方法應(yīng)該以返回的內(nèi)容開(kāi)頭,但之前不要加get。示例:-(void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;-(instancetype)arrayWith

26、Array:(NSArray *)array;常量命名通常與項(xiàng)目設(shè)置的類文件前綴相同,跟隨其后的命名應(yīng)采用駝峰命名法則,命名應(yīng)準(zhǔn)確表述常量表示的意義。示例:#define  kRunAnnotationStartPointTitle    “起點(diǎn)"typedefNS_ENUM(NSInteger, UITableViewStyle)     UITableViewStylePlain,        / regular table view    UITableViewSty

27、leGrouped   / preferences style table view;NSString*constUIApplicationLaunchOptionsRemoteNotificationKey;NSString*constUIApplicationLaunchOptionsLocalNotificationKey;圖片命名原則:1)采用單詞全拼,或者大家公認(rèn)無(wú)岐義的縮寫(xiě)(比如:nav,bg,btn等)2)采用“模塊+功能”命名法,模塊分為公共模塊、私有模塊。公共模塊主要包括統(tǒng)一的背景,導(dǎo)航條,標(biāo)簽,公共的按鈕背景,公共的默認(rèn)圖等等;私有模塊主要根據(jù)app的業(yè)務(wù)功能模塊

28、劃分,比如用戶中心,消息中心等備注:建議背景圖采用以bg作前綴,按鈕背景采用btn作前綴(不作強(qiáng)制要求,項(xiàng)目實(shí)際負(fù)責(zé)人根據(jù)團(tuán)隊(duì)特點(diǎn)確定即可)公共模塊命名示例:導(dǎo)航條背影圖片:bg_nav_bar2x.png導(dǎo)航返回按鈕:bg_nav_back_normal2x.png,bg_nav_back_selected2x.png標(biāo)簽item背景:bg_tabbar_record_normal2x.png,bg_tabbar_record_selected2x.png私有模塊命名示例:以土冒APP的首頁(yè)圖片資源為例說(shuō)明,首頁(yè)搜索背景圖:bg_home_search2x.png首頁(yè)消息默認(rèn)背景圖:bg_h

29、ome_info_normal2x.png首頁(yè)消息高亮背景圖:bg_home_info_highlight2x.png函數(shù)命名如果有參數(shù),函數(shù)名應(yīng)該作為第一個(gè)參數(shù)的提示信息,若有多個(gè)參數(shù),在參數(shù)前也應(yīng)該有提示信息(一般不必加and)一些經(jīng)典的操作應(yīng)該使用約定的動(dòng)詞,如initWith,insert,remove,replace,add等等。代碼注釋提及命名,不得不馬上提醒代碼的注釋問(wèn)題!很多同事的注釋過(guò)于粗糙,有些甚至都沒(méi)有注釋習(xí)慣,導(dǎo)致代碼可讀性差,版本迭代或是需求變更的時(shí)候不能及時(shí)定位到具體代碼以下已model類為例:/* 名字 */property(nonatomic,strong)NS

30、String* name;/* 年齡 */property(nonatomic,strong)NSString* age;/* 性別 */property(nonatomic)BOOL sex;注釋統(tǒng)一采用文檔注釋方式:/*  */這樣注釋的好處是:當(dāng)你調(diào)用這個(gè)屬性時(shí)會(huì)具有相關(guān)備注提示 例:題外話 - Xcode插件 - VVDocumenter這是一個(gè)文檔注釋插件,可以幫助開(kāi)發(fā)者快速的注釋,提高工作效率,這也是本人比較常用的一款插件,具體效果請(qǐng)前往github查看附上github鏈接:代碼組織在函數(shù)分組和protocol/delegate實(shí)現(xiàn)中使用#pragma mark -來(lái)分類方法:#pragma mark - Lifecycle-(id)init- (void)dealloc - (void)viewDidLoad - (void)viewWillAppear:(BO

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論