swift中17条最佳实践规范

swift中17条最佳实践规范

ID:6078624

大小:94.00 KB

页数:16页

时间:2018-01-02

swift中17条最佳实践规范_第1页
swift中17条最佳实践规范_第2页
swift中17条最佳实践规范_第3页
swift中17条最佳实践规范_第4页
swift中17条最佳实践规范_第5页
资源描述:

《swift中17条最佳实践规范》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、这篇文章讲述的范围主要针对Swift语言以及Swift标准库。即便如此,如果能提出一个独特的Swift的视角和见解,我们依然会提供诸如Swift在MacOS、iOS、WatchOS以及TVOS上使用的特别建议。而如何在Xcode和LLDB上有效地使用Swift,这样的建议也会以Hints&tips的风格提供。  这是工作时的一系列笔记整理出来的。文中大多数建议是经过深思熟虑的,但仍可以有其他类似的解决方法。  这个最佳实践不是强加或者推荐Swift在程序、面向对象或者函数风格上的应用。更重要的是,这里要讲述的是务实的方法。如有需要的话,某些建议可能会集中

2、在面向对象或者实用的解决方法。  这个过程需要付出很多的努力,非常感谢为本文做出贡献的那些人。  此外,可以在[Swift-Langslack]里面讨论。  请先确保所有的示例是可以运行的(某些示例可能不是正确)。这个markdown能够转换成一个MacOSXplayground。  1.一般来说,Apple都是正确的,遵循Apple喜欢的或者示范的处理方式。在任何情况下,你都应该遵循Apple的代码风格,正如他们TheSwiftProgrammingLanguage"这本书里面的定义一样。然而Apple是个大公司,我们将会看到很多在示例代码中的差异。 

3、 2.永远不要仅仅为了减少代码量而去写代码。尽量依赖Xcode中的自动补全代码,自动建议,复制和粘贴。详尽的代码描述风格对其他代码维护者来说是非常有好处的。即便如此,过度的冗余也会失去Swift的重要特性:类型推断。  1.命名  正如SwiftProgrammingLanguage中的类型名称都是以大驼峰命名法命名的(例如:VehicleController)。  变量和常量则以小驼峰命名法命名(例如:vehicleName)。  你应该使用Swift模板去命名你的代码而不是使用Objective-C类前缀的风格(除非和Objective-C接连)。 

4、 不要使用任何匈牙利标识法(Hungariannotation)命名(例如:k为常量,m为方法),应使用简短的命名并且使用Xcode的类型QuickHelp(01.png+click)去查明变量的类型。同样地,不要使用小写字母+下划线(SNAKE_CASE)的命名方式。  唯一比较特别的是enum值的命名,这里需要使用大驼峰命名法(这个也是遵循Apple的SwiftProgrammingLanguage风格):  1  2  3  enumPlanet{  caseMercury,Venus,Earth,Mars,Jupiter,Saturn,Uranu

5、s,Neptune  }  在所有可能的情况里,名称的不必要减少和缩写都应该避免,将来你应该能在没有任何损害和依赖Xcode的自动补全功能的情况下,确切地指出类型特征"ViewController"。非常普遍的缩写如URL是允许的。缩写应该用所有字母大写(URL)或者所有字母小写(url)表示。对类型和变量使用相同的规则。如果url是个类型,则应该为大写,如果是个变量,则应该为小写。  2.注释  注释不应该用来使代码无效,注释代码会使代码无效且影响代码的整洁。如果你想要移除代码,但是仍想保留以防代码在以后会用到,你应该依赖git或者bugtracker

6、。  3.类型推断  在可能的地方,使用Swift的类型推断以减少多余的类型信息。例如,正确的写法:  1  varcurrentLocation=Location()  而不是:  1  varcurrentLocation:Location=Location()  4.Self推断  让编译器在所有允许的地方推断self。在init中设置参数以及non-escapingclosures中应该显性地使用self。例如:  1  2  3  4  5  6  7  structExample{  letname:String  init(name:Str

7、ing){  self.name=name  }  }  5.参数列表类型推断  在一个闭包表达式(closureexpression)中指定参数类型可能导致代码更加冗长。只有当需要指定类型时。  1  2  3  4  5  6  7  8  9  10  letpeople=[  ("Mary",42),  ("Susan",27),  ("Charlie",18),  ]  letstrings=people.map(){  (name:String,age:Int)->Stringin  return"(name)is(age)yearsol

8、d"  }  如果编译器能够推断类型,则应该去掉类型定义。  1  2  3  

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。