標籤:
代碼規範很重要,一個良好的代碼習慣要從一開始就養成 公用類和檔案的設計 (網路請求類、資料庫類、Model類、View類,Controller<根據流程圖>、Handle類<資料處理>、公用標頭檔<宏、介面的.h{URL}、常量const{通知中樞的名字、一些狀態代碼、枚舉、結構體}、全域配置(適配{螢幕適配、iOS系統適配}的宏、系統版本判斷、顏色值{參考圖片})>) 一、檔案 1、專案檔必須使用一個有意義的名字。 例如:TestDownImages 2、任何檔案的命名不要以中文命名。 3、檔案的目錄按以下結構 a、Document — 文檔所在路徑 b、Help — 協助檔案所在路徑 c、圖片等資源要放在單獨的目錄或組中 如:Images、Pic等。 d、Public檔案夾,存放公用類和第三方類庫,及工具類 Base檔案夾,自訂的父類 Thirds檔案夾,引用外部檔案或某個單獨的功能。例如:應用了第三方的json下載的功能,應該把所有的檔案放在單獨的Json組中。 Tools檔案夾,自訂的工具類(網路請求、資料庫類等),公用標頭檔(宏、介面的url、常量const{通知中樞的名字、狀態代碼、枚舉、結構體等},全域設定檔(螢幕適配、系統sdk適配、顏色值、圖片名字等))。 e、model、View或ViewController等檔案可以按照功能或檔案類型放在獨立的組中。 二、注釋 注釋是一個程式必不可少的一部分,它起到協助閱讀的重要作用。 並且一定要寫正確的注釋。注釋如果不正確比不寫還可怕。 1、注釋可以使用/*...*/和//兩種注釋符號,涉及多行注釋時盡量使用 /*...*/。 2、對與一行代碼的注釋可以放在前一行或本行的結束,不允許放在下一行,更不能在一行語句的中間(雖然這不會導致程式出錯)。 3、方法前面的注釋應按下面的格式 /** * @方法名稱 * @方法描述 * @輸入參數 * @輸出參數 * @傳回值 */ 4、不必每行都加註釋,在段落間加註釋要好於每行加。顯而易見的代碼加上的是無用注釋,所以不要加。 三、代碼的排版 程式員在代碼的編排上必須規範,如果排版格式混亂,別人就很難看懂你寫的是什麼,這將發費很多不必要的時間。 1、代碼的縮排應使用空格,且以兩個字元為單位。不能使用定位字元(tab)。 2、每行的長度最多不得超過100個字元 以15寸Macbook Pro的大小,每行100個字元時能最大化地同時容下編輯器和iPhone模擬器, 通過 “Xcode => Preferences => TextEditing => 勾選Show Page Guide / 輸入100 => OK” 來設定提醒 3、大括弧‘{}’的使用,最後一個括弧在來源程式中要單獨佔一行。 例如: for(int i = 0; i < 10; i++) { } 4、空格的使用 a、關鍵字和運算式之間要有空格 如:if(i = 0; i < 10; i++) b、單目操作符不能與運算元分開 如:!a c、除,外其他的雙目操作符應與運算元分開 如:i = i + 1; if(a > b) d、.h中協議<>前面要有一個空格。 e、成員聲明時,類型與變數之間至少有一個空格,*號要靠近變數。 f、@proprety()裡面,號緊跟前一個變數,與後一個變數之間留一個空格,()外先留一個空格再聲明屬性。 g、方法的+、-後面留一個空格。 h、方法的傳回型別與*之間留一個空格。參數中傳回型別與*之間留一個空格。 i、在多參數方法中,每個參數後面都有一個空格。 5、每行只能有一個語句 例如:NSInteger row = [indexPath row]; NSString *imgurl = [self.list objectAtIndex:row]; NSURL *url = [NSURL URLWithString:imgurl]; 6、空行 a、.h中的空行 import與interface之間加空行 成員變數與屬性間, 屬性與方法間 加空行 不同類型成員變數間, 不同類型的屬性間,不同類型的方法間 加空行 b、.m中 延展與implementation之間加空行 implementation與方法實現間加空行 方法與方法實現間加空行 方法內不同的邏輯代碼塊之間加空行 四、命名規範 1、保留字 o-c中保留字或關鍵字不能用於命名。 2、方法 a、方法的名稱應全部使用有意義的單片語成,且以小寫字母開頭。多單詞時,後面的單字首大寫(駝峰命名)。參數有別名時,參數別名與參數名一致, 但參數名首碼以_。參數別名與前一參數保留一個空格。參數無別名時,以有意義的字母命名。 例如:-(NameValue *) initWithId:(int)theId andName:(NSString *)theName; 3、變數 a、變數的名字要有意義,其他人能很容易讀懂其代表的意義。變數名可以採用同義的英文命名,可使用幾個英文單詞,第一個單詞首字母小寫,其他的單字首大寫。 如:NSString *userName; b、對於一些特殊類型的變數,命名時要帶上類型。 如、NSArray *cityArray; c、對於控制項命名時,尾碼要帶上特定的控制項名。 UILable *userNameLable; d、私人的執行個體變數前加一個底線 如:_myPrivateValue; 4、常量 a、避免在程式中直接出現常數,使用超過一次的應以宏定義的形式代替 b、常數的宏定義應與它實際使用時的類型一致。 c、常量的命名應該能表達出它的用途,並且用大寫的字母表示。 d、一些常量前加特殊首碼,可以作為不同常量的區分。 5、類 a、所有的類名,介面名都要以大寫字母開頭,多單詞時後面的單詞的首字母都大寫。類,介面名必須是有意義的。 c、繼承自UIView的類以View結尾,如:imageView。繼承自ViewController的類以viewController結尾 如:imageViewController 五、修改規範 1、新增行前後應有注釋說明 //修改人 修改時間 修改說明 新增的代碼 //修改結束 2、刪除代碼項的前後應有注釋 //修改人 修改時間 修改說明 刪除的代碼(將代碼注釋掉 並不是去掉) //修改結束 3、修改代碼以注釋舊代碼新增新代碼的方式進行。 六、嵌套語句的使用規則 在程式中使用嵌套語句,一定要使嵌套語句的階層清晰明了。不能 讓人看了半天還分不清你的層次,弄清你想要表達的意思。 1、if...else..條件陳述式的使用 a、判斷的結構要合理 例如:if(a) { .......(有很多行代碼) } else { ......(只有一行代碼) } 如上的代碼就不是很合理,可以修改為如下寫法 if(!a) { ......(只有一行代碼) } else { .......(有很多行代碼) } b、嵌套的if條件不要太多 例如:if(a) { if(b) { if(c) { ......(還有很多if條件) } else {} } else {} } else {} 如上代碼有好多層的if條件判斷的嵌套,給人的感覺就是太亂,而且不 太容易分清判斷的到底是什麼。那麼就要把減少嵌套的語句,將嵌套的 語句方法化或者做其他處理。
ios開發代碼規範