ios開發代碼規範

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