程序代码中到处都是自己定义的名字,取一个有样并且符合规范的名字非常重要。

命名方法很多,但是比较有名的,广泛接受命名法有:

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

  • 驼峰命名(Camel-Case),又称骆驼命名法,是指混合使用大小写字母来名字。驼峰命名又分为:小驼峰法和大驼峰法。

    1. 小驼峰法是第一个单词是全部小写,后面的单词首字母大写,如:myRoomCount;

    2. 大驼峰法是第一个单词的首字母也大写,如:ClassRoom。

驼峰命名是Swift编码规范主要的命名方法,更加所命名的内容不同,可以选择小驼峰法还是大驼峰法。下面分类说明一下:

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

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

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

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

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

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

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

=================================

前面说到Swift注释的语法有两种:单行注释(//)和多行注释(/*...*/)。这里来介绍一下他们的使用规范。

1、文件注释

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

下面看一个文件注释的示例:

  1. /*
  2. Copyright (C) 2015 Eorient Inc. All Rights Reserved.
  3. See LICENSE.txt for this sample’s licensing information
  4. Description:
  5. This file contains the foundational subclass of NSOperation.
  6. History:
  7. 15/7/22: Created by Tony Guan.
  8. 15/8/20: Add socket library
  9. 15/8/22: Add math library
  10. */

这个注释只是提供了版权信息、文件内容和历史版本信息等,文件注释要根据自己实际情况包括内容。

2、文档注释

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

文档注释是稍微将单行注释(//)和多行注释(/*...*/)做一点“手脚”后,就成为了文档注释,单行文档注释(///)和多行文档注释(/**...*/)。

下面代码示例:

  1. import Foundation
  2. /**
  3. The protocol that types may implement if they wish to be
  4. notified of significant operation lifecycle events.
  5. */
  6. protocol OperationObserver {
  7. /// Invoked immediately prior to the `Operation`'s `execute()` method.
  8. func operationDidStart(operation: Operation)
  9. }

代码中使用了文档注释。

可以使用一些工具将这些文档注释生成API文件

3、代码注释

程序代码中处理文档注释还需要在一些关键的地方添加代码注释,文档注释一般是给一些看不到源代码的人看的帮助文档,而代码注释是给阅读源代码人参考的。代码注释一般是采用单行注释(//)和多行注释(/*...*/)。

有的时候也会在代码的尾端进行注释,这要求注释内容极短,应该在有足够的空白来分开代码和注释。尾端注释示例代码如下:

  1. init(timeout: NSTimeInterval) {
  2. self.timeout = timeout  //初始化
  3. }

4、使用地标注释

随着编码过程深入,工程代码量会增加,任何在这大量的代码中能快速找到需要方法或者是刚才修改过代码呢?

在Swift代码中使用地标注释,然后就可以使用Xcode工具在代码中快速查找了。地标注释有三个:

  • MARK,用于方法或函数的注释。

  • TODO,表示这里代码有没有完成,还要处理。

  • FIXME,表示这里修改了代码。

    这些注释会出现在Xcode的 Jump Bar中。来看一个示例:

  1. class ViewController: UIViewController,
  2. ÊUITableViewDataSource, UITableViewDelegate {
  3. var listTeams: [[String:String]]!
  4. override func viewDidLoad() {
  5. super.viewDidLoad()
  6. ...
  7. }
  8. override func didReceiveMemoryWarning() {
  9. super.didReceiveMemoryWarning()
  10. //TODO: 释放资源                                 //使用TODO注释
  11. }
  12. // MARK: UITableViewDataSource 协议方法             //使用MARK注释
  13. func tableView(tableView: UITableView,
  14. ÊnumberOfRowsInSection section: Int) -> Int {
  15. return self.listTeams.count
  16. }
  17. func tableView(tableView: UITableView,
  18. ÊcellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
  19. let cellIdentifier = "CellIdentifier"
  20. let cell: UITableViewCell! = tableView
  21. Ê.dequeueReusableCellWithIdentifier(cellIdentifier,
  22. ÊforIndexPath: indexPath) as? UITableViewCell
  23. // FIXME: 修改bug                               //使用了FIXME注释
  24. let row = indexPath.row
  25. let rowDict = self.listTeams[row] as [String:String]
  26. ...
  27. return cell
  28. }
  29. // MARK: UITableViewDelegate 协议方法                   //使用MARK注释
  30. func tableView(tableView: UITableView,
  31. ÊdidSelectRowAtIndexPath indexPath: NSIndexPath) {
  32. ...
  33. }
  34. }

上述代码中使用三种地标注释,在使用时候后面要跟有一个冒号(:)。

注释之后如果使用呢?打开Xcode的 Jump Bar,如下图,这些地标注释会在下拉列表中粗体显示,点击列表项就会跳转到注释行。

===============================

声明是在声明变量、常量、属性、方法或函数和自定义类型时候需要遵守的规范。

首先变量或常量时每行声明变量或常量的数量推荐一行一个,因为这样以利于写注释。示例代码如下。

推荐使用:

  1. let level = 0
  2. var size = 10

不推荐使用:

  1. let level = 0; var size = 10

变量或常量的数据类型,如果有可能应尽可能采用类型推断,这样代码很简洁。示例代码如下。

推荐使用:

  1. let level = 0
  2. var size = 10

不推荐使用:

  1. let level: Int = 0
  2. var size: Int = 10

如果不是默认数据类型,需要明确声明变量或常量的数据类型。示例代码如下。

  1. let level: Int8 = 0
  2. var size: Int64 = 10

在指定数据类型时候需要使用冒号(:),size与冒号之间没有空格,冒号和数据类型之间要有一个空格。示例代码如下。

推荐使用:

  1. let level: Int8 = 0
  2. var size: Int64 = 10

不推荐使用:

  1. let level : Int8 = 0
  2. var size:Int64 = 10

使用数据类型时尽可能使用Swift本身数据类型,例如:

推荐使用:

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

不推荐使用:

  1. let width: NSNumber = 120.0
  2. let widthString: NSString  = "Hello."
  3. var deviceModels: NSArray
  4. var employees: NSDictionary

属性声明

属性包括存储属性和计算属性,如果是存储属性的声明规范与变量或常量声明的规范是一样的。如果是计算属性类似于代码块,在使用只读计算属性时候,如果可能要省略get语句。示例代码如下。

推荐使用:

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

不推荐使用:

    1. var fullName : String {
    2. get {
    3. return firstName + "." + lastName
    4. }
    5. }

Swift— Swift编码规范之命名规范-备的更多相关文章

  1. Swift常量和变量以及命名规范

    我们在上一章中介绍了如何使用Swift编写一个HelloWorld小程序,其中就用到了变量.常量和变量是构成表达式的重要组成部分.常量在声明和初始化变量时,在标识符的前面加上关键字let,就可以把该变 ...

  2. 浅谈Android编码规范及命名规范

    前言: 目前工作负责两个医疗APP项目的开发,同时使用LeanCloud进行云端配合开发,完全单挑. 现大框架已经完成,正在进行细节模块上的开发 抽空总结一下Android项目的开发规范:1.编码规范 ...

  3. Android journey 1@关于编码风格和命名规范

    /* * 1.关于编程风格:每一位程序猿可能都有自己独特的编程风格,但是有些规则是大家都必须遵守的,特别 * 是在工作的过程中,良好的代码风格能大大提高代码本身的可阅读性和维护性,也更有利于别人修改你 ...

  4. 前端开发规范:命名规范、html 规范、css 规范、js 规范

    上周小组的培训内容是代码可读性艺术,主要分享如何命名.如何优化代码排版,如何写好的注释.我们都知道写出优雅的代码是成为大牛的必经之路. 下面感谢一位前端开发小伙伴总结的前端开发规范,通过学习相关开发规 ...

  5. python代码规范和命名规范

    一.简明概述 1.编码 如无特殊情况, 文件一律使用 UTF-8 编码 如无特殊情况, 文件头部必须加入#-*-coding:utf-8-*-标识 2.代码格式 2.1.缩进 统一使用 4 个空格进行 ...

  6. python基础(代码规范、命名规范、代码缩进、注释)

    代码规范 PEP8(python增强建议书第8版) 每个import语句只导入一个模块 不要在行尾添加分号";" 建议每行不超过80个字符   超出部分可以用()来进行换行例如: ...

  7. CSS书写规范、命名规范、网易CSS框架NEC

    网易CSS框架NEC:http://nec.netease.com/ NEC框架的CSS规范:  CSS规范 - 分类方法 CSS规范 - 命名规则 CSS规范 - 代码格式 CSS规范 - 优化方案 ...

  8. PHP Document 注释标记及规范 && PHP命名规范

    注释标记 @access 使用范围:class,function,var,define,module 该标记用于指明关键字的存取权限:private.public或proteced @author 指 ...

  9. iOS代码规范之命名规范

    技术博客http://www.cnblogs.com/ChenYilong/    新浪微博http://weibo.com/luohanchenyilong   命名规范类命名    首字母大写,之 ...

  10. C#中的代码书写规范以及命名规范

    C#代码书写规则: 1. 尽量使用接口,然后使用类实现接口,以提高程序的灵活性. 2.一行不要超过80个字符 3.尽量不要手动更改计算机生成的代码 4.关键的语句写注释 5.建议局部变量在最接近使用它 ...

随机推荐

  1. wikioi 1044 拦截导弹 (1999年NOIP全国联赛提高组)

    题目描述 Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某 ...

  2. Managing Hierarchical Data in MySQL

    Managing Hierarchical Data in MySQL Introduction Most users at one time or another have dealt with h ...

  3. Django 安装MySQLdb模块

    首先装 mysql的时候 我用的是 apt-get  install mysql-client-core-5.1  (当时以为core的牛逼)  其实直接安mysql-client-5.1就行了 问题 ...

  4. [Angular 2] Router basic and Router Params

    When we define router in Angualr 2, we use @RouteConcfig() When we want to display component, we use ...

  5. [转] vim 正则表达式 很强大

    毋庸多言,在vim中正则表达式得到了十分广泛的应用. 最常用的 / 和 :s 命令中,正则表达式都是不可或缺的. 下面对vim中的正则表达式的一些难点进行说明. 关于magic vim中有个magic ...

  6. Android AIDL图解

      代码来自:http://www.cnblogs.com/mandroid/archive/2011/02/26/1965428.html     (XXX.AIDL自动生成的IXXX.java类中 ...

  7. python安装MySQLdb(Windows环境)

    1.下载 http://www.codegood.com/downloads 我的win7 64位.Python2.7.8版本,所以选择MySQL-python-1.2.3.win-amd64-py2 ...

  8. eclipse 库 library jar包 工程 总结

    引用库错误 如果在libraries中发现有小红叉,表明引用库错误 解决办法:在左侧projects中add引用到的库 如:我们的支付库引用了以下三个库 那么需要在projects中add这三个库   ...

  9. jquery 滚动加载

    <html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> < ...

  10. Java类与类之间关系总结

    继承,依赖,关联,聚合,组合 一般来说依赖和关联是类似的,关联是强依赖,聚合和组合是一类,组合属于强聚合. 继承:一般是子类和父类之间的关系,关键字extends 依赖:可以这样记忆,做某件事必须要依 ...