仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1307|回复: 14
打印 上一主题 下一主题

[学习教程] IOS编程之Swift 编程作风指南(raywenderlich.com 版本)仓酷云

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:27:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
iOS5开始支持CoreImage了还没去看Mac上的CI是很强大的CFNetwork---从来没用过我一般都会用ASIHttpRequset封装好的高层网络库OBJC实现的CFNetwork好像是C实现CoreLocation---获取位置的库工具很少本作风指南的方针是让Swift代码更简便、可读更强。
言语

保举利用跟苹果API文档作风一致的英语。
保举:
  1. varcolor="red"
复制代码
不保举:
  1. varcolour="red"
复制代码
空缺



  • 利用2个空缺符作为缩进,不要利用Tab制表符,请务必在Xcode中举行设置;
  • 办法界说时的年夜括号或别的年夜括号(if/else/switch/while等)中的左括号写在以后语句的开头,右括号必要另起一行。
保举:
  1. ifuser.isHappy{//Dosomething}else{//Dosomethingelse}
复制代码
不保举:
  1. ifuser.isHappy{//Dosomething}else{//Dosomethingelse}
复制代码

  • 办法界说之间必要拔出一个空行,让代码在视觉上更明晰,也便于办理。办法外部也必要利用空行来分开分歧功效的代码块,但假如一个办法中有太多代码块,你最好将它们拆分为多个办法(重构)。
正文

只要在需要的时分才写正文来注释某段代码为何那末做。正文必需跟代码同步更新,该删失落时就删失落。
只管制止利用多行正文,而是让代码自己往注释本人的功效。
定名

利用可形貌性的驼峰式定名法为类、函数、办法、变量等定名。模块中的类名和常量名首字母必要年夜写,而办法名和变量名的首字母必要小写。
保举:
  1. letMaximumWidgetCount=100classWidgetContainer{varwidgetButton:UIButtonletwidgetHeightPercentage=0.85}
复制代码
不保举:
  1. letMAX_WIDGET_COUNT=100classapp_widgetContainer{varwBut:UIButtonletwHeightPct=0.85}
复制代码
关于函数和机关器(init),除非能一览无余,不然倡议为每一个参数定名。假如能让函数可读性更强,请供应每一个参数的内部参数名。
  1. funcdateFromString(dateString:NSString)->NSDatefuncconvertPointAt(#column:Int,#row:Int)->CGPointfunctimedAction(#delay:NSTimeInterval,performaction:SKAction)->SKAction!//wouldbecalledlikethis:dateFromString("2014-03-14")convertPointAt(column:42,row:13)timedAction(delay:1.0,perform:someOtherAction)
复制代码
关于类中的办法,请遵守苹果常规,将办法名作为第一个参数的内部名:
  1. classGuideline{funccombineWithString(incoming:String,options:Dictionary?){...}funcupvoteBy(amount:Int){...}}
复制代码
假如在非代码文本(包含教程、书本和正文中)中援用了某个函数,请供应函数一切参数的内部参数名:
  1. ThedateFromString()functionisgreat.CallconvertPointAt(column:,row:)fromyourinit()method.ThereturnvalueoftimedAction(delay:,perform:)maybenil.Guidelineobjectsonlyhavetwomethods:combineWithString(options:)andupvoteBy()YoushouldntcallthedatasourcemethodtableView(cellForRowAtIndexPath:)directly.
复制代码
类前缀

Swift中的模块(module)包括了定名空间,一切在模块中界说的范例名都不会与别的模块抵触。以是我们不再必要利用前缀定名来削减定名抵触。假如两个来自分歧模块的不异名字必要同时援用,你可使用模块名+点+范例名的体例来处置:
  1. importMyModulevarmyClass=MyModule.MyClass()
复制代码
再次重申,请不要在Swift范例定名时加前缀。
假如你必要将Swift范例表露给Objective-C,你能够为其指定一个在Objective-C中利用的符合前缀(请参考ObjC编程作风指南:
  1. varcolour="red"0
复制代码
分号

Swift不必要在每条语句后加分号。但假如将多条语句写在一行代码中,这时候必要加上分号。
但是我们其实不保举这类将多行语句写在一行的做法。
独一破例是for-conditional-increment布局,它必需利用分号。但你应当只管利用for-in布局来替换这类举动:
保举:
  1. varcolour="red"1
复制代码
不保举:
  1. varcolour="red"2
复制代码
注重:Swift跟Javascript有很年夜区分,Javascript中假如疏忽分号会被以为形成代码的不平安。
类和布局体

请将类和布局体中的代码按以下按次举行构造:


  • 变量和常量属性
  • 机关器
  • 大众办法
  • 公有办法
  1. varcolour="red"3
复制代码
下面的例子还展现了以上风格:


  • 界说属性、变量、常量、参数和其他语句时,在厥后面加上空格,而不是在后面加。好比说,x:Int和Circle:Shape;
  • 属性的getter、setter和属性察看器willSet和didSet的完成都必要缩进;
  • 假如多个变量和布局体有不异的利用目标或利用情况,能够将它们界说在统一行代码中。
Self的利用

请制止在Swift中利用self,由于我们不必要利用self来会见一个对象的属性或挪用它的办法。
独一必要利用的场景是在类或布局体的机关器中。你可使用self来辨别传进的参数和类/布局体的属性:
  1. varcolour="red"4
复制代码
函数界说

只管将较短的函数名界说在一行,并以一个左年夜括号开头:
  1. varcolour="red"5
复制代码
假如函数名较长,请在得当的时分换行,并对下一行函数名举行缩进:
  1. varcolour="red"6
复制代码
闭包

请只管利用失落尾(就是将最初一个闭包参数间接附在办法挪用后,看起来像是把持语句的body一样)闭包语法。不管什么时候,请给闭包中每一个参数一个形貌性的名字:
  1. varcolour="red"7
复制代码
笔者:@aemaeth提出将闭包参数另起一行的写法,我以为更公道,办理了多个闭包参数太长的成绩。
关于一行表达式闭包,当利用场景明白时,可使用隐式前往:
  1. varcolour="red"8
复制代码
范例

请只管利用Swift供应的原生范例。Swift也供应了原生范例对象桥接到Objective-C对象的举措,以是需要时你能随便利用这些桥接对象供应的办法。
保举:
  1. varcolour="red"9
复制代码
不保举:
  1. ifuser.isHappy{//Dosomething}else{//Dosomethingelse}0
复制代码
在SpriteKit代码中,请多利用CGFloat,如许代码会更简便,也能制止十分多的范例转换。
常量

常量利用let关头字界说,而变量利用var关头字界说。
假如一个值是常量,那就必需利用let关头字来正确界说。终极你会发明,你利用let的频次宏大于var。
小技能:一入手下手你能够将一切值都界说为常量,然后假如编译器报错了再作得当的调剂。
可选

假如能够承受nil值,请将变量或函数前往值的范例界说为可选范例(加?)。
当你明白晓得实例变量在利用前会完成初始化,好比说视图把持器中的子视图subviews在利用前会在viewDidLoad中初始化,那末你能够将这些变量界说为隐式剖析范例(利用!)。
当会见一个可选值时,假如只会见一次,大概体例时有多种大概性,请利用可选链:
  1. ifuser.isHappy{//Dosomething}else{//Dosomethingelse}1
复制代码
利用可选绑定optionalbinding对只拆包(unwrap)一次,但实行屡次操纵的情形十分符合:
  1. ifuser.isHappy{//Dosomething}else{//Dosomethingelse}2
复制代码
范例揣度

Swift编译器能够揣度出变量和常量的范例。你能够为每一个常量或变量供应一个显现的范例(加个冒号,并在前面写上范例名),但年夜部分情形不用这么做。
我们倡议多利用范例揣度让编译器主动揣度出常量或变量的范例,如许代码会更松散。
保举:
  1. ifuser.isHappy{//Dosomething}else{//Dosomethingelse}3
复制代码
不保举:

父类是NSObjectUIKit里最底层的库可以响应一些触摸事件设置焦点等功能UIView父类是UIResponder所有View的父类方法太多了大部分很有用这个不赘述了
谁可相欹 该用户已被删除
沙发
发表于 2015-1-18 11:53:23 | 只看该作者
最后在做项目的时候一定要认真对待,毕竟这个直接和你的就业挂钩,这也是锻炼你实际操作的能力。
分手快乐 该用户已被删除
板凳
发表于 2015-1-21 20:37:13 | 只看该作者
在百度搜索你想要了解的类名(苹果的cocoa和cocoatouch框架的类名很有特点很容易搜到,前缀都是NS or UI),看别人写的博客详解
莫相离 该用户已被删除
地板
发表于 2015-1-30 22:06:48 | 只看该作者
近期由于IOS7的发布,所以应用的适配潮可谓是都搞的锣鼓喧天,甚是热闹,因此呢,因适配IOS7而产生的问题也是铺天盖地的卷来,
简单生活 该用户已被删除
5#
发表于 2015-2-3 06:02:46 | 只看该作者
众多研发人员积极参与到iOS平台的开发中来也就不足为奇了。
透明 该用户已被删除
6#
发表于 2015-2-4 20:22:19 | 只看该作者
然而,在vmware软件环境下,安装Mac OS X操作系统也是一件非常复杂的事情,而且还有可能花费了大量时间,最后却跑不起来。笔者也是经过了大量的实践,
山那边是海 该用户已被删除
7#
发表于 2015-2-8 04:58:47 | 只看该作者
才在自己的Windows电脑上安装配置成功了一个完美的Mac OS X Lion(10.7.4)系统,而且下载了Xcode4.5的最新版本。虽然不能实机调试,但是作为iOS开发学习已经非常完美了。
冷月葬花魂 该用户已被删除
8#
发表于 2015-2-11 18:55:51 | 只看该作者
边吃零食边看Stanford的视频教程
精灵巫婆 该用户已被删除
9#
发表于 2015-2-14 05:43:52 | 只看该作者
开始的时候甚至想放弃,不过想想自己的未来,只能咬牙坚持,课下就不停的缠着老师。放学就补基础,这些基础的东西没有速成的,只有刻苦努力。我是后来发现的,转变自己的心态,不要读书看资料当成一种痛苦
深爱那片海 该用户已被删除
10#
发表于 2015-3-4 04:59:02 | 只看该作者
学习ios没什么捷径,关键在于多动手敲,曾看到前辈开玩笑说怎么快速学会某技术,答案是:“提高打字速度,快点写代码就能快点学会了”。
蒙在股里 该用户已被删除
11#
发表于 2015-3-4 21:31:03 | 只看该作者
其次学习方法和学习心态很重要,在学习当中应该保持一颗良好的心态。应该借鉴别人好的学习方法,大家互相帮助,取长补短。
愤怒的大鸟 该用户已被删除
12#
发表于 2015-3-5 19:57:00 | 只看该作者
有办法利用自己手头的电脑立刻开始这个美妙旅程的。
柔情似水 该用户已被删除
13#
发表于 2015-3-9 17:08:16 | 只看该作者
down下code4app网站的每个分类的代码挨着看
变相怪杰 该用户已被删除
14#
发表于 2015-3-17 00:09:10 | 只看该作者
培训的时候很痛苦,每天要待12个小时,上午讲课,下午和晚自习解决作业,看文档,学习的时候感觉就是资料太少,而且看着资料也不明所以,非常痛苦,
飘飘悠悠 该用户已被删除
15#
发表于 2015-3-23 08:14:50 | 只看该作者
看完这个你就可以有多种选择来踏入做应用的阶段
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 00:11

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表