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

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

  • 匈牙利命名,一般只是命名变量,原则是:变量名=类型前缀+描述,如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. 错误 1 未能找到元数据文件“C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/wwwroot/7cb4fcd

    错误 1 未能找到元数据文件“C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/wwwroot/7cb4fcd ...

  2. 【翻译】Organizing ASP.NET MVC solutions 如何组织你的ASP.NET MVC解决方案

    序言 时隔一年,弦哥重出江湖,对于我们学习.NET MVC那将有大大的好处,期待弦哥的重构系列.在弦哥与jerrychou的交流中提到了一篇文章http://lostechies.com/jimmyb ...

  3. RMQ——窗口题解

    题目:窗口 描述: [问题描述] 给你一个长度为N的数组,一个长为K的滑动的窗体从最左移至最右端,你只能见到窗口的K个数,每次窗体向右移动一位,如下表: Window position Min val ...

  4. ASP.NET 之深入浅出Session和Cookie

    在做人事档案管理系统中,对于Session和Cookie的使用后理解更加深刻了,下面对本知识点总结学习. Session是什么? 简单来说就是服务器给客户端的一个编号.当一台WWW服务器运行时,可能有 ...

  5. supervisor:进程管理工具

    一,安装(任何一种方式) apt-get install supervisor easy_install supervisor pip install supervisor 二,配置 配置superv ...

  6. django 执行原始SQL

    二.知识点总结 When the model query APIs don’t go far enough, you can fall back to writing raw SQL. go far ...

  7. Computer Vision and Machine Learning Competitions

    一.ImageNet Object Detection, Object Classification+Localization 二.COCO Image Captioning 三.LFW Face R ...

  8. juce: 跨平台的C++用户界面库

    如果你用过QT和MFC,那你必然知道QT是基于C++的跨平台库,而MFC是微软针对widows平台推出来基础类库.且不论MFC的设计如何,从我个人和身边朋友的经历来看,MFC是一些非常难以理解的类的组 ...

  9. android ListView和GridView拖拽移位具体实现及拓展

    关于ListView拖拽移动位置,想必大家并不陌生,比较不错的软件都用到如此功能了.如:搜狐,网易,百度等,但是相比来说还是百度的用户体验较好,不偏心了,下面看几个示例:              首 ...

  10. MM32 RTC学习(兼容STM32)

    RTC学习 RTC简述 实时时钟是一个独立的定时器. RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能. 修改计数器的值可以重新设置系统当前的时间和日期. RTC模块和时钟配 ...