Swift— Swift编码规范之命名规范-备
程序代码中到处都是自己定义的名字,取一个有样并且符合规范的名字非常重要。
命名方法很多,但是比较有名的,广泛接受命名法有:
匈牙利命名,一般只是命名变量,原则是:变量名=类型前缀+描述,如bFoo表示布尔类型变量,pFoo表示指针类型变量。匈牙利命名还是有一定争议的,在Swift编码规范中几本不采用匈牙利命名。
驼峰命名(Camel-Case),又称骆驼命名法,是指混合使用大小写字母来名字。驼峰命名又分为:小驼峰法和大驼峰法。
小驼峰法是第一个单词是全部小写,后面的单词首字母大写,如:myRoomCount;
大驼峰法是第一个单词的首字母也大写,如:ClassRoom。
驼峰命名是Swift编码规范主要的命名方法,更加所命名的内容不同,可以选择小驼峰法还是大驼峰法。下面分类说明一下:
对类、结构体、枚举和协议等类型命名,应该采用大驼峰法,如SplitViewController。
文件名,采用大驼峰法,如BlockOperation.swift。
扩展文件,有的时候扩展是定义在一个独立的文件中的,它的命名是“原始类型名+扩展名”作为扩展文件名,如NSOperation+Operations.swift。
变量和属性,采用应该采用小驼峰法,如studentNumber。
常量,采用大驼峰法,如MaxStudentNumber。
枚举成员,与常量类似,采用大驼峰法,如ExecutionFailed。
函数和方法,采用应该采用小驼峰法,如balanceAccount、isButtonPressed等。
=================================
前面说到Swift注释的语法有两种:单行注释(//)和多行注释(/*...*/)。这里来介绍一下他们的使用规范。
1、文件注释
文件注释就在每一个文件开头添加注释,文件注释通常包括如下信息:版权信息、文件名、所在模块、作者信息、历史版本信息、文件内容和作用等。
下面看一个文件注释的示例:
- /*
- Copyright (C) 2015 Eorient Inc. All Rights Reserved.
- See LICENSE.txt for this sample’s licensing information
- Description:
- This file contains the foundational subclass of NSOperation.
- History:
- 15/7/22: Created by Tony Guan.
- 15/8/20: Add socket library
- 15/8/22: Add math library
- */
这个注释只是提供了版权信息、文件内容和历史版本信息等,文件注释要根据自己实际情况包括内容。
2、文档注释
文档注释就是这种注释内容能够生成API帮助文档。文档注释主要对类型、属性、方法或函数等功能。
文档注释是稍微将单行注释(//)和多行注释(/*...*/)做一点“手脚”后,就成为了文档注释,单行文档注释(///)和多行文档注释(/**...*/)。
下面代码示例:
- import Foundation
- /**
- The protocol that types may implement if they wish to be
- notified of significant operation lifecycle events.
- */
- protocol OperationObserver {
- /// Invoked immediately prior to the `Operation`'s `execute()` method.
- func operationDidStart(operation: Operation)
- }
代码中使用了文档注释。
可以使用一些工具将这些文档注释生成API文件
3、代码注释
程序代码中处理文档注释还需要在一些关键的地方添加代码注释,文档注释一般是给一些看不到源代码的人看的帮助文档,而代码注释是给阅读源代码人参考的。代码注释一般是采用单行注释(//)和多行注释(/*...*/)。
有的时候也会在代码的尾端进行注释,这要求注释内容极短,应该在有足够的空白来分开代码和注释。尾端注释示例代码如下:
- init(timeout: NSTimeInterval) {
- self.timeout = timeout //初始化
- }
4、使用地标注释
随着编码过程深入,工程代码量会增加,任何在这大量的代码中能快速找到需要方法或者是刚才修改过代码呢?
在Swift代码中使用地标注释,然后就可以使用Xcode工具在代码中快速查找了。地标注释有三个:
MARK,用于方法或函数的注释。
TODO,表示这里代码有没有完成,还要处理。
FIXME,表示这里修改了代码。
这些注释会出现在Xcode的 Jump Bar中。来看一个示例:
- class ViewController: UIViewController,
- ÊUITableViewDataSource, UITableViewDelegate {
- var listTeams: [[String:String]]!
- override func viewDidLoad() {
- super.viewDidLoad()
- ...
- }
- override func didReceiveMemoryWarning() {
- super.didReceiveMemoryWarning()
- //TODO: 释放资源 //使用TODO注释
- }
- // MARK: UITableViewDataSource 协议方法 //使用MARK注释
- func tableView(tableView: UITableView,
- ÊnumberOfRowsInSection section: Int) -> Int {
- return self.listTeams.count
- }
- func tableView(tableView: UITableView,
- ÊcellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
- let cellIdentifier = "CellIdentifier"
- let cell: UITableViewCell! = tableView
- Ê.dequeueReusableCellWithIdentifier(cellIdentifier,
- ÊforIndexPath: indexPath) as? UITableViewCell
- // FIXME: 修改bug //使用了FIXME注释
- let row = indexPath.row
- let rowDict = self.listTeams[row] as [String:String]
- ...
- return cell
- }
- // MARK: UITableViewDelegate 协议方法 //使用MARK注释
- func tableView(tableView: UITableView,
- ÊdidSelectRowAtIndexPath indexPath: NSIndexPath) {
- ...
- }
- }
上述代码中使用三种地标注释,在使用时候后面要跟有一个冒号(:)。
注释之后如果使用呢?打开Xcode的 Jump Bar,如下图,这些地标注释会在下拉列表中粗体显示,点击列表项就会跳转到注释行。
===============================
声明是在声明变量、常量、属性、方法或函数和自定义类型时候需要遵守的规范。
首先变量或常量时每行声明变量或常量的数量推荐一行一个,因为这样以利于写注释。示例代码如下。
推荐使用:
- let level = 0
- var size = 10
不推荐使用:
- let level = 0; var size = 10
变量或常量的数据类型,如果有可能应尽可能采用类型推断,这样代码很简洁。示例代码如下。
推荐使用:
- let level = 0
- var size = 10
不推荐使用:
- let level: Int = 0
- var size: Int = 10
如果不是默认数据类型,需要明确声明变量或常量的数据类型。示例代码如下。
- let level: Int8 = 0
- var size: Int64 = 10
在指定数据类型时候需要使用冒号(:),size与冒号之间没有空格,冒号和数据类型之间要有一个空格。示例代码如下。
推荐使用:
- let level: Int8 = 0
- var size: Int64 = 10
不推荐使用:
- let level : Int8 = 0
- var size:Int64 = 10
使用数据类型时尽可能使用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
- }
- }
Swift— Swift编码规范之命名规范-备的更多相关文章
- Swift常量和变量以及命名规范
我们在上一章中介绍了如何使用Swift编写一个HelloWorld小程序,其中就用到了变量.常量和变量是构成表达式的重要组成部分.常量在声明和初始化变量时,在标识符的前面加上关键字let,就可以把该变 ...
- 浅谈Android编码规范及命名规范
前言: 目前工作负责两个医疗APP项目的开发,同时使用LeanCloud进行云端配合开发,完全单挑. 现大框架已经完成,正在进行细节模块上的开发 抽空总结一下Android项目的开发规范:1.编码规范 ...
- Android journey 1@关于编码风格和命名规范
/* * 1.关于编程风格:每一位程序猿可能都有自己独特的编程风格,但是有些规则是大家都必须遵守的,特别 * 是在工作的过程中,良好的代码风格能大大提高代码本身的可阅读性和维护性,也更有利于别人修改你 ...
- 前端开发规范:命名规范、html 规范、css 规范、js 规范
上周小组的培训内容是代码可读性艺术,主要分享如何命名.如何优化代码排版,如何写好的注释.我们都知道写出优雅的代码是成为大牛的必经之路. 下面感谢一位前端开发小伙伴总结的前端开发规范,通过学习相关开发规 ...
- python代码规范和命名规范
一.简明概述 1.编码 如无特殊情况, 文件一律使用 UTF-8 编码 如无特殊情况, 文件头部必须加入#-*-coding:utf-8-*-标识 2.代码格式 2.1.缩进 统一使用 4 个空格进行 ...
- python基础(代码规范、命名规范、代码缩进、注释)
代码规范 PEP8(python增强建议书第8版) 每个import语句只导入一个模块 不要在行尾添加分号";" 建议每行不超过80个字符 超出部分可以用()来进行换行例如: ...
- CSS书写规范、命名规范、网易CSS框架NEC
网易CSS框架NEC:http://nec.netease.com/ NEC框架的CSS规范: CSS规范 - 分类方法 CSS规范 - 命名规则 CSS规范 - 代码格式 CSS规范 - 优化方案 ...
- PHP Document 注释标记及规范 && PHP命名规范
注释标记 @access 使用范围:class,function,var,define,module 该标记用于指明关键字的存取权限:private.public或proteced @author 指 ...
- iOS代码规范之命名规范
技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/luohanchenyilong 命名规范类命名 首字母大写,之 ...
- C#中的代码书写规范以及命名规范
C#代码书写规则: 1. 尽量使用接口,然后使用类实现接口,以提高程序的灵活性. 2.一行不要超过80个字符 3.尽量不要手动更改计算机生成的代码 4.关键的语句写注释 5.建议局部变量在最接近使用它 ...
随机推荐
- Sublime一些设置
很喜欢sublime text 2 总是在新窗口中打开文件,很麻烦,文件打多了,就会出现N多窗口,虽然可以直接打开当前目录可以解决,但有时候查看其它项目中的单个文件,就比较麻烦.百度一直在搜索,无果. ...
- Socket的协议地址属性
首先列举所需要的头文件 #include <sys/types.h> #include <sys/socket.h> #include <unistd.h> #in ...
- migration vmware vms to openstack kvm 修改vmware windows scsi to ide
- Swift基础语法学习总结二
1.函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如果有参数和返回值直接写在两个括号里就可以了 1.2 参数需要指明类型,而如果没有返 ...
- flash 中无法导出swf文件的解决方法
近一个星期,我的flash cs6一直导不出swf文件,郁闷了好长时间,今天终于在网上找到了解决办法:总结了一下,如下: 一.是把文字打散,变成形状. 二.是把汉字的字体设成fla ...
- Python自动化之Django的CSRF
什么CSRF? CSRF, Cross Site Request Forgery, 跨站点伪造请求.举例来讲,某个恶意的网站上有一个指向你的网站的链接,如果 某个用户已经登录到你的网站上了,那么当这个 ...
- 【iOS】Resumable Doanloads(断点下载)
这里我们只讨论iOS平台下的通用app,我们可以自己写代码来实现resume downloads,解释如下. resume一个HTTP下载不难,但必须要理解一些关键的HTTP概念: entity ta ...
- ado.net(1)
connection对象处于最顶层,是所有数据请求的关口 数据库连接过程 SqlConnection theConnection = new SqlConnection(); //创建一个connec ...
- css布局之负margin妙用及其他实现
相信大家在项目的开发中都遇到过这样的需求,一行放X(X>1)个块且相邻块之间的间距相同. 大概就是上面这个样子,下面介绍几种实现的方式. 1.负margin大法 设置好元素的宽度和留白占满父级的 ...
- (转)Discuz!NT图文安装教程
不同目录下的安装方法根据目前大家对论坛的使用需求,在安装上面大致有三种情况,站点根目录下安装,站点虚拟目录下安装和站点子目录下安装. 1.根目录安装 根目录安装是最简单也是稳定系数最高的安装和使用方式 ...