• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >swift > 超全面的Swift编码规范(推荐)

超全面的Swift编码规范(推荐)

作者:jvaeyhcd 字体:[增加 减小] 来源:互联网 时间:2017-05-28

jvaeyhcd 通过本文主要向大家介绍了swift编码,swift编码是什么,银行swift编码,swift编码查询,收款银行swift编码等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

前言

关于Swift的代码的相关规范,不同的开发者都有自己相应的规范,可能还是很多人根本就没有规范。为了保证同一个公司同一个项目组中代码美观并且一致,这里写下这份Swift编程规范指南。该指南首要目标是让代码紧凑,可读性更高且简洁。

代码格式

使用四个空格进行缩进

每行最多160个字符,这样可以避免一行过长(Xcode->Preferences->Text Editing->Page guide at column: 设置成160即可)
确保每个文件结尾都有空白行

确保每行都不以空白符作为结尾(Xcode->Preferences->Text Editing->Automatically trim trailing whitespace + Including whitespace-only lines)

左大括号不用另起一行

class SomeClass {
 func someMethod() {
 if x == y {
  /* ... */
 } else if x == z {
  /* ... */
 } else {
  /* ... */
 }
 }
 /* ... */
}
</div>

要在逗号后面加空格

let array = [1, 2, 3, 4, 5];
</div>

二元运算符(+,==,或>)的前后都需要添加空格,左小括号和右小括号前面不需要空格。

let value = 20 + (34 / 2) * 3
if 1 + 1 == 2 {
 //TODO
}
func pancake -> Pancake {
 /** do something **/
}
</div>

遵守Xcode内置的缩进格式,当声明的一个函数需要跨多行时,推荐使用Xcode默认格式。

// Xcode针对跨多行函数声明缩进
func myFunctionWithManyParameters(parameterOne: String,
     parameterTwo: String,
     parameterThree: String) {
 // Xcode会自动缩进
 print("\(parameterOne) \(parameterTwo) \(parameterThree)")
}
// Xcode针对多行 if 语句的缩进
if myFirstVariable > (mySecondVariable + myThirdVariable)
 && myFourthVariable == .SomeEnumValue {
 // Xcode会自动缩进
 print("Hello, World!")
}
</div>

当调用一个函数有多个参数时,每个参数另起一行,比函数名多一个缩进。

functionWithArguments(
 firstArgument: "Hello, I am a string",
 secondArgument: resultFromSomeFunction()
 thirdArgument: someOtherLocalVariable)
</div>

当遇到需要处理的数组或字典内容较多需要多行显示时,需要把[和]类似方法体里面的括号,方法体里的闭合也要做类似的处理。

functionWithBunchOfArguments(
 someStringArgument: "hello I am a string",
 someArrayArgument: [
 "dadada daaaa daaaa dadada daaaa daaaa dadada daaaa daaaa",
 "string one is crazy - what is it thinking?"
 ],
 someDictionaryArgument: [
 "dictionary key 1": "some value 1, but also some more text here",
 "dictionary key 2": "some value 2"
 ],
 someClosure: { parameter1 in
 print(parameter1)
 })
</div>

尽量避免出现多行断言,可使用本地变量或其他策略

// 推荐
let firstCondition = x == firstReallyReallyLongPredicateFunction()
let secondCondition = y == secondReallyReallyLongPredicateFunction()
let thirdCondition = z == thirdReallyReallyLongPredicateFunction()
if firstCondition && secondCondition && thirdCondition {
 // 你要干什么
}
// 不推荐
if x == firstReallyReallyLongPredicateFunction()
 && y == secondReallyReallyLongPredicateFunction()
 && z == thirdReallyReallyLongPredicateFunction() {
 // 你要干什么
}
</div>

命名

使用帕斯卡拼写法(又名大骆驼拼写法,首字母大写)为类型命名(如struct,enum,class,typedef,associatedtype等)。

使用小骆驼拼写法(首字母小写)为函数,方法,常亮,参数等命名。

首字母缩略词在命名中一般来说都是全部大写,例外的情形是如果首字母缩略词是一个命名的开始部分,而这个命名需要小写字母作为开头,这种情形下首字母缩略词全部小写。

// "HTML" 是变量名的开头, 需要全部小写 "html"
let htmlBodyContent: String = "<p>Hello, World!</p>"
// 推荐使用 ID 而不是 Id
let profileID: Int = 1
// 推荐使用 URLFinder 而不是 UrlFinder
class URLFinder {
 /* ... */
}
</div>

使用前缀 k + 大骆驼命名法 为所有非单例的静态常量命名。

class ClassName {
 // 基元常量使用 k 作为前缀
 static let kSomeConstantHeight: CGFloat = 80.0
 // 非基元常量也是用 k 作为前缀
 static let kDeleteButtonColor = UIColor.redColor()
 // 对于单例不要使用k作为前缀
 static let sharedInstance = MyClassName()
 /* ... */
}
</div>

命名应该具有描述性个清晰性的。

// 推荐
class RoundAnimatingButton: UIButton { /* ... */ }
// 不推荐
class CustomButton: UIButton { /* ... */ }
</div>

不要缩写、简写或单个字母命名。

// 推荐
class RoundAnimatingButton: UIButton {
 let animationDuration: NSTimeInterval
 func startAnimating() {
 let firstSubview = subviews.first
 }
}
// 不推荐
class RoundAnimating: UIButton {
 let aniDur: NSTimeInterval
 func srtAnmating() {
 let v = subviews.first
 }
}
</div>

如果原有命名不能明显表明类型,则属性命名内要包括类型信息。

// 推荐
class ConnectionTableViewCell: UITableViewCell {
 let personImageView: UIImageView
 let animationDuration: NSTimeInterval
 // 作为属性名的firstName,很明显是字符串类型,所以不用在命名里不用包含String
 let firstName: String
 // 虽然不推荐, 这里用 Controller 代替 ViewController 也可以。
 let popupController: UIViewController
 let popupViewController: UIViewController
 // 如果需要使用UIViewController的子类,如TableViewController, CollectionViewController, SplitViewController, 等,需要在命名里标名类型。
 let popupTableViewController: UITableViewController
 // 当使用outlets时, 确保命名中标注类型。
 @IBOutlet weak var submitButton: UIButton!
 @IBOutlet weak var emailTextField: UITextField!
 @IBOutlet weak var nameLabel: UILabel!
}
// 不推荐
class ConnectionTableViewCell: UITableViewCell {
 // 这个不是 UIImage, 不应该以Image 为结尾命名。
 // 建议使用 personImageView
 let personImage: UIImageView
 // 这个不是String,应该命名为 textLabel
 let text: UILabel
 // animation 不能清晰表达出时间间隔
 // 建议使用 animationDuration 或 animationTimeInterval
 let animation: NSTimeInterval
 // transition 不能清晰表达出是String
 // 建议使用 transitionText 或 transitionString
 let transition: String
 // 这个是ViewController,不是View
 let popupView: UIViewController
 // 由于不建议使用缩写,这里建议使用 ViewController替换 VC
 let popupVC: UIViewController
 // 技术上讲这个变量是 UIViewController, 但应该表达出这个变量是TableViewController
 let popupViewController: UITableViewController
 // 为了保持一致性,建议把类型放到变量的结尾,而不是开始,如submitButton
 @IBOutlet weak var btnSubmit: UIButton!
 @IBOutlet weak var buttonSubmit: UIButton!
 // 在使用outlets 时,变量名内应包含类型名。
 // 这里建议使用 firstNameLabel
 @IBOutlet weak var firstName: UILabel!
}
</div>

当给函数参数命名时,要确保函数能够理解每个参数的目的。

代码风格

综合

尽可能多使用let,少使用var。
当需要遍历一个集合变形成另一个集合时,推荐使用函数flatMap,filter,和reduce。

// 推荐
let stringOfInts = [1, 2, 3].flatMap { String($0) }
// ["1", "2", "3"]
// 不推荐
var stringOfInts: [String] = []
for integer in [1, 2, 3] {
 stringOfInts.append(String(integer))
}

// 推荐
let evenNumbers = [4, 8, 15, 16, 23, 42].filter { $0 % 2 == 0 }
// [4, 8, 16, 42]
// 不推荐
var evenNumbers: [Int] = []
for integer in [4, 8, 15, 16, 23



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 超全面的Swift编码规范(推荐)

相关文章

  • 2017-05-28Swift编程之枚举类型详解
  • 2017-05-28Ubuntu 16.04上安装 Swift 3.0及问题解答
  • 2017-05-28使用Post方法模拟登陆爬取网页的实现方法
  • 2017-05-28Swift、Objective-C、Cocoa混合编程设置指南
  • 2017-05-28网络爬虫案例解析
  • 2017-05-28Swift能代替Objective-C吗?
  • 2017-05-28Swift心得笔记之控制流
  • 2017-05-28Swift在控件中添加点击手势的方法
  • 2017-05-28Swift代码实现冒泡排序算法的简单实例
  • 2017-05-28Eclipse智能提示及快捷键

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Swift 3.0基础学习之扩展
    • 简单分析Swift语言的一些基本特征
    • Swift 数组
    • Mybatis中 SQL语句复用
    • 详解Swift中的下标访问用法
    • Ubuntu 16.04上安装 Swift 3.0及问题解答
    • Swift中通过叠加UILabel实现混合进度条的方法
    • 详解Swift编程中的方法与属性的概念
    • Swift中swift中的switch 语句
    • Swift面试题及答案整理

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有