




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、命名命名規(guī)則對于維護代碼來說是非常重要的,。Objective-C方法名往往很長,不過這也有好處,讓很多注釋變得毫無意義。本文推薦駝峰法,也是Objective-C社區(qū)的標準。 駝峰法分小駝峰法和大駝峰法。小駝峰法:除第一個單詞之外,其他單詞首字母大寫。大駝峰法相比小駝峰法,大駝峰法把第一個單詞的首字母也大寫了。1.基本原則1.1 清晰又清晰又簡潔是最好的了,但簡潔不如清晰重要??偟闹v不要使用單詞的簡寫,除了非常常用的簡寫以外,盡量使用單詞全稱。API的名稱不要有歧義,一看你的API就知道是以什么方式做了什么事情,不要讓人有疑問1.2 一致性做某個事情代碼通常都叫這個名字,比如tag
2、、setStringValue,那么你也這么叫。你在不確定怎么起名字的時候,可以參考一些常用的名字:Method Arguments2. 類命名類名(不包括類別和協(xié)議名)應(yīng)該用大寫開頭的大駝峰命名法。類名中應(yīng)該包含一個或多個名詞來說明這個類(或者類的對象)是做什么的。在應(yīng)用級別的代碼里,盡量不要使用帶前綴的類名。每個類都有相同的前綴不能提高可讀性。不過如果是編寫多個應(yīng)用間的共享代碼,前綴就是可接受并推薦的做法了(型如 MBAPhotoBrowser )。示例1:interface ImageBrowseView :UIViewend示例2:(帶前綴MBA)interface
3、;MBAPhotoBrowser :UIViewend3. 類別命名類名+標識+擴展(UIImageView +HP+Web)例:如果我們想要創(chuàng)建一個基于UIImageView 的類別用于網(wǎng)絡(luò)請求圖片,我們應(yīng)該把類別放到名字是UIImageView+HPWeb.h的文件里。UIImageView為要擴展的類名,HP為專屬標識,Web為擴展的功能。類別的方法應(yīng)該都使用一個前綴(型如hp_myCategoryMethodOnAString ),以防止Objective-C代碼在單名空間里沖突。如果代碼本來就不考慮共享或在不同的地址空間(address-space),方法命名規(guī)則就沒必要恪守了。類別
4、HPWeb頭文件,UIImageView+HPWeb.h如下:interface UIImageView (HPWeb)- (void)hp_setImageWithURLString:(NSString *)urlStr;end4. 方法命名 方法使用小駝峰法命名, 一個規(guī)范的方法讀起來應(yīng)該像一句完整的話,讀過之后便知函數(shù)的作用。執(zhí)行性的方法應(yīng)該以動詞開頭,小寫字母開頭,返回性的方法應(yīng)該以返回的內(nèi)容開頭,但之前不要加get。示例:- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObj
5、ect;(instancetype)arrayWithArray:(NSArray *)array;如果有參數(shù),函數(shù)名應(yīng)該作為第一個參數(shù)的提示信息,若有多個參數(shù),在參數(shù)前也應(yīng)該有提示信息(一般不必加and) 一些經(jīng)典的操作應(yīng)該使用約定的動詞,如initWith,insert,remove,replace,add等等。5. 變量命名 變量名使用小駝峰法, 使變量名盡量可以推測其用途屬性具有描述性。別一心想著少打幾個字母,讓你的代碼可以迅速被理解更加重要。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ù)定義,枚舉,局部常量等)使用小寫k開頭的駝峰法,比如kInvalidHandle , kWritePerm 示例:#define kRunAnnotationStartPointTitle “起點"typedef NS_EN
8、UM (NSInteger,RunGoalTypeE) kRunGoalTypeNone = 0, /無目標 kRunGoalTypeTime = 1, /以時間為目標 kRunGoalTypeDistance = 2, /以距離為目標 kRunGoalTypeCalori
9、160; = 3, /以消耗卡路里為目標;NSString *const kGroupInfoName ="name"6. 圖片資源文件命名 先看下新浪微博app圖片資源命名方式,下面是部分截圖:這個圖片資源命名方式,以功能為組織形式,是一個很好的習(xí)慣,有利于查看資源文件。原則:1)采用單詞全拼,或者大家公認無岐義的縮寫(比如:nav,bg,btn等)2)采用“模塊+功能”命名法,模塊分為公共模塊、私有模塊。公共模塊主要包括統(tǒng)一的背景,導(dǎo)航條,標簽,公共的按鈕背景,公共的默認圖等等;私有模塊主要
10、根據(jù)app的業(yè)務(wù)功能模塊劃分,比如用戶中心,消息中心等備注:建議背景圖采用以bg作前綴,按鈕背景采用btn作前綴(不作強制要求,項目實際負責(zé)人根據(jù)團隊特點確定即可)公共模塊命名示例:導(dǎo)航條背影圖片:bg_nav_bar2x.png導(dǎo)航返回按鈕:bg_nav_back_normal2x.png,bg_nav_back_selected2x.png 標簽item背景:bg_tabbar_record_normal2x.png,bg_tabbar_record_selected2x.png私有模塊命名示例:以Joggers APP的用戶中心圖片資源為例說明,ucuser center用戶中心頭像默認
11、圖:bg_uc_avatar2x.png用戶中心頂部默認背景圖:bg_uc_top_defaut2x.png用戶中心底部背景圖:bg_uc_bottom2x.png這部分工作較為繁雜,并且在程序員心中會認為是技術(shù)含量較低的一個工作,但圖片命名的嚴謹性同樣會反映出我們對細節(jié)的追求,細節(jié)決定成敗。文件組織結(jié)構(gòu)1. 類文件組織iOS工程文件結(jié)構(gòu)分物理結(jié)構(gòu)和邏輯結(jié)構(gòu),建議邏輯結(jié)構(gòu)和物理結(jié)構(gòu)保持一致,以便方便有效地管理類文件。類文件組織要遵循以下兩大原則:基于MVC設(shè)計模式原則,至少要保證controller與數(shù)據(jù)處理,網(wǎng)絡(luò)請求相對獨立基于功能模塊原則,功能模塊分包括數(shù)據(jù)/網(wǎng)絡(luò)處理,UI前端界面兩部分,
12、數(shù)據(jù)/網(wǎng)絡(luò)處理應(yīng)該在數(shù)據(jù)/網(wǎng)絡(luò)處理的框架下,而UI前端界面比如用戶中心,消息中心,它們的專有的controller,view等應(yīng)該在屬于文件夾。還會遇到一些公共的view,可以開辟出公共的文件夾來管理在實際中使用中,項目實際負責(zé)人可以結(jié)合項目特點靈活使用,但基本的原則一定要保持,保持良好的類文件組織結(jié)構(gòu),對團隊有益無害。2. 圖片資源文件組織圖片資源文件,強烈建議采用Images.xcassets管理,盡量少用自己創(chuàng)建的文件夾管理。使用Images.xcassets的優(yōu)勢很多,具體可以查閱讀相關(guān)文獻資料,這里只從工程管理上說一點,在Images.xcassets中添加圖片資源,不會對proje
13、ct文件造成改變,而直接在文件夾里添加圖片文件,每次都會對project文件造成改變,因此使用Images.xcassets管理圖片資源可以減少project沖突的次數(shù)。下圖是Joggers的文件組織結(jié)構(gòu):上圖嚴格按照上述討論組織文件結(jié)構(gòu),保持了物理/邏輯結(jié)構(gòu)的統(tǒng)一,方便團隊間查閱代碼,以及共享資源。類代碼組織原則一個原則:析構(gòu)函數(shù)- (void)dealloc最好放到類最上面,第一眼就可以看到這個方法,可以方便看到是否remove了一些操作,對內(nèi)存的合理釋放等,controller,view的生命周期函數(shù)放到最上面,自己實現(xiàn)的方法在下面,相同/相近功能的方法采用#pragma mark -來
14、標記,以便查看。示例: 第一部分主要對易把握的,易推廣的,并且對團隊開發(fā)中有實實在在幫助內(nèi)容作簡要論述,主要集中在命名,文件組織原則方面,并給了相應(yīng)的示例。規(guī)范由各項目負責(zé)人具體執(zhí)行。好像忘記一件什么事,沒錯,注釋,上述沒有對注釋做專門的闡述,良好的代碼習(xí)慣就是一個好的注釋,因此這里不專門為注釋作討論,注釋要求由各項目負責(zé)人來約定。團隊要求iOS代碼規(guī)范1 刪除多余的空行 * 所有方法與方法之間空1行 * 所有代碼塊之間空1行2 刪除多余的注釋 * 刪除注釋掉
15、的代碼 * 刪除沒有意義的注釋3 刪除多余的方法 * 如果方法沒有使用到,請刪除它 * 如果方法沒有執(zhí)行任何業(yè)務(wù)邏輯,請刪除它或者給出一定注釋4 刪除未被使用的資源文件5 添加必要的注釋 * 所有 .h 文件中的property 需要給出注釋 * 所有自定義的方法需要給出注釋 * 比較大的代碼塊需要給出注釋 * 所有代碼中出現(xiàn)的阿拉
16、伯?dāng)?shù)字需要給出注釋 * 程序中出現(xiàn)加密解密 邏輯的操作地方,需要給出注釋說明過程(無論是系統(tǒng)還是自定義)6 整體代碼風(fēng)格需要統(tǒng)一 * 代碼后面的”“ 不需要單獨占用一行 * 邏輯運算符 與 代碼之前空一格 * “#pragma mark -” 與下面的代碼之前不要空行 * 遵循一般性的代碼規(guī)范iOS通用規(guī)則1 下面所有規(guī)則對第三方類庫無約束 * 所有類、方法、屬性等命名
17、,做到見名知意,采用駝峰式命名規(guī)則 * 根據(jù)資源類型或者所屬業(yè)務(wù)邏輯對項目資源進行分組,使得整個項目結(jié)構(gòu)清晰明了 * 整個項目保持一種代碼書寫風(fēng)格(這個風(fēng)格由無錫團隊根據(jù)自己編碼習(xí)慣來定),讓你的代碼變的優(yōu)雅!2. 命名規(guī)范 * 所有類名稱以項目工程開頭命名,eg:“XP”、“ZJG”、“SZ” * 針對不同視圖控制器,在末尾添加后綴,eg: * UIViewController 后綴添加“Vi
18、ewController” * UIView 后綴添加“View” * UIButton 后綴添加“Button" * UILabel 后綴添加“Label"3. 單頁代碼最好控制在800行以內(nèi),每個方法最好不要超過100行,過多建議對代碼進行重構(gòu)4. 相同的邏輯方法定義避免在多個地方出現(xiàn),盡量將公用的類、方法抽取出來5. 刪除未被使用的代碼,不要大片注釋未被使用的代碼,確定代碼不會使用,請及時刪除6. 對其他項目中copy過來的代碼,根據(jù)具體需要更新代碼風(fēng)格,
19、及時刪除未被使用的代碼7. 項目中所有Group或者文件名稱(圖片名字等),不要使用漢字命名,盡量使用英文命名,國內(nèi)特有名詞可以使用拼音。8. 項目中所有Group都需要在項目目錄中存在一個真實的目錄,Group中的文件與真實目錄中文件一一對應(yīng)。9. 請在項目中寫必要代碼的注釋10. 請多使用 #pragma mark - Mark Name 對方法進行分組 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ù)過多時可換行保持對齊,調(diào)用方法時也是如此,參數(shù)都寫在一行或換行冒號對齊, 3.命名規(guī)則 類名首字母大寫,方法首字母小寫,方法中的參數(shù)首字母小寫,同時盡量讓方法的命名讀起來像一句話,能夠傳達出方法的意思,同時取值方法前不要加前綴“get”變量名小寫字母開頭常量以小寫字母k開頭,后續(xù)首字母大寫 4.關(guān)于注釋 注釋很重要,但除了開頭的版權(quán)聲明,盡可能把代碼寫的如同文檔一樣,讓別人直接看代碼就知道意思,寫代碼時別擔(dān)心名字太長,相信Xcode的提示功能。 5.實例變量應(yīng)該在實現(xiàn)文件.
23、m中聲明或以property形式在.h文件中聲明,一定要直接在.h文件聲明,加上priavte,另外,使用private、public,前面需要一個縮進空格。 6.盡可能保證 .h文件的簡潔性,可以不公開的API就不要公開了,寫在實現(xiàn)文件中即可。 7.Xcode支持Objective-C/C/C+混編,所以引用頭文件時:#import Ojbective-C/Objective-C+頭文件(Objective-C+是Objective-C與C+混編的文 件),#include C/C+頭文件。 8.寫delegate的時候類型應(yīng)該為weak弱引用,以避免循環(huán)引用,
24、當(dāng)delegate對象不存在后,我們寫的delegate也就沒有存在意義了自然是需要銷毀的,weak與strong可以參考上一篇文章介紹。 9.實例變量聲明時變量名前面加下劃線“_”,局部變量不用加。 10.使用Block時,內(nèi)容四個空格縮進,“”后帶有參數(shù)時,參數(shù)與“”之間有一個空格縮進 11.建議使用“#pragma mark”,方便閱讀代碼屬性命名描述性的單詞+變量類型 是最好的,一目了然 例如:UILabel* nameLabel;類命名前綴+描述+類型注:前綴可以是你的姓名/昵稱等主要用于團隊開發(fā)的時候避免文件名重復(fù)以下是我個人命名方式 例:
25、XJX - 姓名/昵稱Message - 描述性本類的功能Cell/Model - 類型/模型方法命名方法使用小駝峰法命名一個規(guī)范的方法讀起來應(yīng)該像一句完整的話,讀過之后便知函數(shù)的作用。執(zhí)行性的方法應(yīng)該以動詞開頭,小寫字母開頭。返回性的方法應(yīng)該以返回的內(nèi)容開頭,但之前不要加get。示例:-(void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;-(instancetype)arrayWith
26、Array:(NSArray *)array;常量命名通常與項目設(shè)置的類文件前綴相同,跟隨其后的命名應(yīng)采用駝峰命名法則,命名應(yīng)準確表述常量表示的意義。示例:#define kRunAnnotationStartPointTitle “起點"typedefNS_ENUM(NSInteger, UITableViewStyle) UITableViewStylePlain, / regular table view UITableViewSty
27、leGrouped / preferences style table view;NSString*constUIApplicationLaunchOptionsRemoteNotificationKey;NSString*constUIApplicationLaunchOptionsLocalNotificationKey;圖片命名原則:1)采用單詞全拼,或者大家公認無岐義的縮寫(比如:nav,bg,btn等)2)采用“模塊+功能”命名法,模塊分為公共模塊、私有模塊。公共模塊主要包括統(tǒng)一的背景,導(dǎo)航條,標簽,公共的按鈕背景,公共的默認圖等等;私有模塊主要根據(jù)app的業(yè)務(wù)功能模塊
28、劃分,比如用戶中心,消息中心等備注:建議背景圖采用以bg作前綴,按鈕背景采用btn作前綴(不作強制要求,項目實際負責(zé)人根據(jù)團隊特點確定即可)公共模塊命名示例:導(dǎo)航條背影圖片:bg_nav_bar2x.png導(dǎo)航返回按鈕:bg_nav_back_normal2x.png,bg_nav_back_selected2x.png標簽item背景:bg_tabbar_record_normal2x.png,bg_tabbar_record_selected2x.png私有模塊命名示例:以土冒APP的首頁圖片資源為例說明,首頁搜索背景圖:bg_home_search2x.png首頁消息默認背景圖:bg_h
29、ome_info_normal2x.png首頁消息高亮背景圖:bg_home_info_highlight2x.png函數(shù)命名如果有參數(shù),函數(shù)名應(yīng)該作為第一個參數(shù)的提示信息,若有多個參數(shù),在參數(shù)前也應(yīng)該有提示信息(一般不必加and)一些經(jīng)典的操作應(yīng)該使用約定的動詞,如initWith,insert,remove,replace,add等等。代碼注釋提及命名,不得不馬上提醒代碼的注釋問題!很多同事的注釋過于粗糙,有些甚至都沒有注釋習(xí)慣,導(dǎo)致代碼可讀性差,版本迭代或是需求變更的時候不能及時定位到具體代碼以下已model類為例:/* 名字 */property(nonatomic,strong)NS
30、String* name;/* 年齡 */property(nonatomic,strong)NSString* age;/* 性別 */property(nonatomic)BOOL sex;注釋統(tǒng)一采用文檔注釋方式:/* */這樣注釋的好處是:當(dāng)你調(diào)用這個屬性時會具有相關(guān)備注提示 例:題外話 - Xcode插件 - VVDocumenter這是一個文檔注釋插件,可以幫助開發(fā)者快速的注釋,提高工作效率,這也是本人比較常用的一款插件,具體效果請前往github查看附上github鏈接:代碼組織在函數(shù)分組和protocol/delegate實現(xiàn)中使用#pragma mark -來分類方法:#pragma mark - Lifecycle-(id)init- (void)dealloc - (void)viewDidLoad - (void)viewWillAppear:(BO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國閉環(huán)電流傳感器行業(yè)市場規(guī)模調(diào)研及投資前景研究分析報告
- 電子煙零售終端合規(guī)經(jīng)營及品牌授權(quán)合作協(xié)議
- 拼多多平臺帶貨分成比例調(diào)整補充協(xié)議
- 跨界合作:游戲IP與航空業(yè)聯(lián)合推廣協(xié)議
- 星球知識社區(qū)運營與用戶權(quán)益保障合伙合同
- 跨國投資公司海外分公司設(shè)立及投資管理合同
- 2025年中國半導(dǎo)體晶圓代工行業(yè)市場規(guī)模調(diào)研及投資前景研究分析報告
- 2025年中國辦公物業(yè)管理行業(yè)市場前景預(yù)測及投資價值評估分析報告
- 綠色快遞網(wǎng)點加盟環(huán)保合作協(xié)議
- 生態(tài)經(jīng)濟適用房回購權(quán)補償協(xié)議
- 火力發(fā)電廠安全培訓(xùn)課件
- 第八章-實數(shù)(單元復(fù)習(xí)課件)七年級數(shù)學(xué)下冊同步高效課堂(人教版2024)
- 浙江百順服裝有限公司年產(chǎn)100萬套服裝及135萬套床上用品生產(chǎn)線項目環(huán)境影響報告
- AI 技術(shù)在高中歷史教學(xué)中的應(yīng)用實例2
- 交通大數(shù)據(jù)的應(yīng)用試題及答案
- 2024年中石油招聘考試真題
- 企業(yè)環(huán)保與健康安全管理體系的構(gòu)建與實施
- 《抽水蓄能電站樞紐布置格局比選專題報告編制規(guī)程 》征求意見稿
- 廣東省深圳市2025年高三年級第二次調(diào)研考試數(shù)學(xué)試題(含答案)
- 山東省山東名??荚嚶?lián)盟2025年高三4月高考模擬考試物理試卷+答案
- 供應(yīng)商維保管理制度
評論
0/150
提交評論