美文网首页
Swift--规范编程

Swift--规范编程

作者: 优雅的步伐 | 来源:发表于2020-07-06 17:51 被阅读0次
    • 命名规范
    • 注释规范
    • 声明
    • 代码排版

    命名规范

    常用命名方法
    • 匈牙利命名,一般只是命名变量,原则是: 变量名 = 类型前缀 + 描述,如bFoo表示布尔类型变量,pFoo表示指针类型变量。匈牙利命名还是有一定争议的,在Swift编码规范基本不被采用。

    • 驼峰命名(Camel-Case),又称“骆驼命名法”,是指混合使用大小写字母来命名。驼峰命名又分为小驼峰法和大驼峰法。小驼峰法就是第一个单词是全部小写,如myRoomCount;大驼峰法是第一个单词的首字母也大写,如ClassRoom。

    Swift编码命名规范
    • 对类、结构体、枚举和协议等类型的命名应该采用大驼峰法,如 SplitViewController。

    • 文件名采用大驼峰法,如BlockOperation.swift。

    • 对于扩展文件,有时扩展定义在一个独立的文件中,用“原始类型名 + 扩展名”作为扩展文件名,如NSOperation + Operations.swift。

    • 变量和属性采用小驼峰法,如studentNumber。

    • 常量采用大驼峰法, 如MaxStudentNumber。

    • 枚举成员与常量类似,采用大驼峰法,如ExecutionFailed。

    • 函数和方法采用小驼峰法,如balanceAccount、isButtonPressed等。

    注释规范

    注释规范有:

    • 文件规范
    • 文档注释
    • 代码注释
    • 使用地标注释
    文件注释

    文件注释就是在每一个文件开头添加注释。文件注释通常包括如下信息:版权信息、文件名、所在模块、作者信息、历史版本信息、文件内容和作用等。
    如下图:


    image.png
    文档注释

    文档注释是指这种注释内容能够生成API帮助文档。文档注释主要对类型、属性、方法或函数等进行注释。

    • 单行文档注释(///)
    • 多行文档注释(/*.../)

    如下图:


    image.png
    代码注释

    程序代码中处理文档注释还需要在一些关键的地方添加代码注释,文档注释一般是给一些看不到源代码的人看的帮助文档,而代码注释是给阅读源代码的人参考的。

    • 单行注释( // )
    • 多行注释 ( /.../ )
    使用地标注释
    • MARK, 用于方法或函数的注释;
    • TODO, 表示这里的代码有没有完成或者还要处理;
    • FIXME,表示这里修改了代码。

    声明

    • 变量或常量声明
    • 属性声明

    1、变量或常量声明时,每行声明变量或常量的数量推荐一行一个,因为这样有利于写注释。

    推荐使用:

    let level = 0
    var size = 10
    

    不推荐使用:

    let level,   le2,   le3 = 0;   var size = 10
    

    2、还有变量或常量的数据类型,如果有可能应尽量采用类型推断,这样代码更简洁。
    推荐使用:

    let level = 0
    var size = 10
    

    不推荐使用:

    let level: Int = 0
    var size: Int = 10
    

    3、 如果不是默认数据类型,我们需要声明变量或常量的数据类型,示例代码如下:

    let level: Int8 = 0
    var size: Int64 = 10
    

    4、指定数据类型时需要使用冒号(:),变量或常量与冒号之间没有空格,冒号和数据类型之间要有一个空格。示例代码如下:

    推荐使用:

    let level: Int8 = 0
    var size: Int64 = 10
    

    不推荐使用:

    let level : Int8 = 0
    var size: Int64=10
    

    5、使用数据类型时应尽可能使用Swift本身的数据类型,例如:
    推荐使用:

    let width = 120.0
    let widthString = "Hello."
    var deviceModels: [String]
    var employees: [Int: String]
    

    不推荐使用:

    let width:  NsNumber = 120.0
    let widthString: NSString = "Hello."
    var deviceModels: NSArray
    var employees: NSDictionary
    
    • 如果是存储属性,声明规范与变量或常量声明的规范一样。
    • 如果是计算属性,声明规范类似于代码块,特别是在使用只读计算属性时,应尽量省略get语句。

    推荐使用:

    var fullName: String  {
        return firstName + "." + lastName
    }
    

    不推荐使用:

    var fullName: String  {
         get {
               return  firstName  +  "."  +  lastName
          }
    }
    

    代码排版

    • 空行
    • 空格
    • 断行
    • 缩进
    空行
    • 类型声明之前
    • import语句前后
    • 两个方法或函数之间
    • 块注释或单行注释之前
    • 一个源文件的两个片段之间
    空格

    1、赋值符号“=”前后各有一个空格。var 或let 与标识符之间有一个空格。所有的二元运算符都应该使用空格与操作符分开。一元操作符和操作数之间不应该有空格,如++、--等。
    示例如下:

    var a = 10
    var c = 10
    a += c + d
    

    2、(2)小左括号“("之后,小右括号“)”之前不应该有空。
    示例如下:

    a = (a + b) / (c * d)
    

    3、大左括号“{”之前有一个空格,示例如下:

    while a == d {
        n++
    }
    

    4、在方法或函数名与第一参数之间没有空格,后面的参数前应该有一个空格,参数冒号与数据类型之间也有一个空格。
    推荐使用:

     func tableView(_ tableView: UITableView, didSelectRowAt   indexPath: IndexPath) {
         ...
    }
    

    不推荐使用:

    func tableView ( _ tableView: UITableView, didSelectRowAt   indexPath: IndexPath) {
         ...
    }
    
    断行
    • 在一个逗号后面断开

    • 在一个操作符前面断开,要选择较高级别的运算符(而非较低级别的运算符)断开

    • 新的一行应该相对于上一行缩进两个级别(8个空格)。

    例如:

    (1)
     longName1 = longName2 * (longName3 + longName4 - longName5)
        + 4 * longName6
    

      (2)
     longName1 = longName2 * (longName3 + longName4 
      - longName5) + 4 * longName6
    

    //代码第(1)行的断开位置要比第(2)行的断开位置好。因为代码第(1)行断开位于括号表达式的外边,这是个较高级别的断开。

    (3)
     func tableView(_ tableView: UITableView, 
                                cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        ...
     }
    

    //代码第(3)行是方法名断开,函数名断开的规则与方法的一样。

    (4)
    if longName1 == longName2
            || longName3 == longName4 && longName3 > longName4
    && longName2 > longName5 {
            print(true)
    }
    

    //代码第4行是if判断语句,由于可能有很多长的表达式,断开的位置应在逻辑运算符处。

    (5)
    boolName1 = (longName3 == longNmae4)
            ? longName3 > longName4
            : longName2 > longName5
    

    //代码第(5)行是三元运算符的断开。

    缩进
    • 在函数、方法、闭包、控制语句、计算属性等包含大括号“{}”的代码块中,代码块的内容相对于首行缩进一个级别(4个空格)。

    • 如果是if语句中条件表达式的断行,那么新的一行应该相对于上一行缩进两个级别(8个空格),再往后的断行要与第一次的断行对齐。

    image.png

    如上图:代码第1行和第2行是if语句条件表达式的断行,代码第1行和第2行要对齐。

    相关文章

      网友评论

          本文标题:Swift--规范编程

          本文链接:https://www.haomeiwen.com/subject/adfjqktx.html