原创文章。欢迎转载。转载请注明:关东升的博客

前面说到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、使用地标凝视

随着编码过程深入,project代码量会添加,不论什么在这大量的代码中能高速找到须要方法或者是刚才改动过代码呢?

在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。例如以下图。这些地标凝视会在下拉列表中粗体显示。点击列表项就会跳转到凝视行。

欢迎关注关东升新浪微博@tony_关东升。
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
 ​

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" />
很多其它精品iOS、Cocos、移动设计课程请关注智捷课堂官方站点:http://www.zhijieketang.com
智捷课堂论坛站点:http://51work6.com/forum.php

《从零開始学Swift》学习笔记(Day 57)——Swift编码规范之凝视规范:文件凝视、文档凝视、代码凝视、使用地标凝视的更多相关文章

  1. 关东升的《从零開始学Swift》即将出版

    大家好: 苹果2015WWDC大会公布了Swift2.0,它较之前的版本号Swift1.x有非常大的变化.所以我即将出版<从零開始学Swift><从零開始学Swift>将在&l ...

  2. 从零開始学Swift之Hello World进化版

    上节课,也就是昨晚啦,我们学习到从零開始学Swift之Hello World.那一节仅仅有一句代码,大家会认为不够过瘾. 那么这节课,就给大家来多点瘾货吧! 先上图! //var 代表变量的类型, s ...

  3. 《PHP 5.5从零開始学(视频教学版)》内容简单介绍、文件夹

    <PHP 5.5从零開始学(视频教学版)>当当网购买地址: http://product.dangdang.com/23586810.html <PHP 5.5从零開始学(视频教学版 ...

  4. 《从零開始学Swift》学习笔记(Day5)——我所知道的标识符和keyword

     Swift 2.0学习笔记(Day5)--我所知道的标识符和keyword   原创文章,欢迎转载.转载请注明:关东升的博客 好多计算机语言都有标识符和keyword,一直没有好好的总结,就是这 ...

  5. 《从零開始学Swift》学习笔记(Day 1)——我的第一行Swift代码

     Swift 2.0学习笔记--我的第一行Swift代码 原创文章,欢迎转载. 转载请注明:关东升的博客 当第一次看到以下代码时我石化了.这些代码是什么东东?单词拼出来的? import Foun ...

  6. 从零開始学android&lt;数据存储(1)SharedPreferences属性文件.三十五.&gt;

    在android中有五种保存数据的方法.各自是: Shared Preferences Store private primitive data in key-value pairs. 相应属性的键值 ...

  7. 从零開始学android&lt;TabHost标签组件.二十九.&gt;

    TabHost主要特点是能够在一个窗体中显示多组标签栏的内容,在Android系统之中每一个标签栏就称为一个Tab.而包括这多个标签栏的容器就将其称为TabHost.TabHost类的继承结构例如以下 ...

  8. 【高德地图API】从零開始学高德JS API(五)路线规划——驾车|公交|步行

    先来看两个问题:路线规划与导航有什么差别?步行导航与驾车导航有什么差别? 回答: 1.路线规划,指的是为用户提供3条路线推荐.[高德]在提供路线规划的时候,会提供用户自己定义路线规划功能,这是别家没有 ...

  9. 第13章、布局Layouts之RelativeLayout相对布局(从零開始学Android)

    RelativeLayout相对布局 RelativeLayout是一种相对布局,控件的位置是依照相对位置来计算的,后一个控件在什么位置依赖于前一个控件的基本位置,是布局最经常使用,也是最灵活的一种布 ...

随机推荐

  1. poj 2264(LCS)

    Advanced Fruits Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2158   Accepted: 1066   ...

  2. JSON格式数据的js操作

    第一种方式: 使用js函数eval(); testJson=eval(testJson);是错误的转换方式. 正确的转换方式需要加(): testJson = eval("(" + ...

  3. portainer,用于管理docker swarm,好像也不错哟

    shipyard的模式,好像在docker 1.12之后,没有啥用武之地了,也没有更新. 接下来,集群管理和调度,最有知名度的就是rancher了. 在rancher之前,我们试一下portainer ...

  4. Fedora27安装宝塔linux面板出现/usr/lib/rpm/redhat/redhat-hardened-cc1找不到的错误

    执行下面的命令: sudo dnf install redhat-rpm-config 就可以解决你的问题了

  5. php+mysql折线图

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  6. python 执行顺序

    从上往下顺序执行,定义的方法和类要写在调用之前, 如果有 if __name__ == '__main__'   改方法所在的文件作为启动文件时会被调用,如果作为模块被调用时不会被执行.

  7. 洛谷 P1177 【模板】快速排序 【快速排序/multiset排序】

    题目描述 利用快速排序算法将读入的N个数从小到大排序后输出. 快速排序是信息学竞赛的必备算法之一.对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成.(C++选手请不要试图使用STL ...

  8. css-demo

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. (寒假开黑gym)2018 USP Try-outs

    layout: post title: (寒假开黑gym)2018 USP Try-outs author: "luowentaoaa" catalog: true tags: m ...

  10. 谜题22:URL的愚弄

    本谜题利用了Java编程语言中一个很少被人了解的特性.请考虑下面的程序将会做些什么? public class BrowserTest { public static void main(String ...