大会地址:http://atswift.io/
首先带给大家的是傅若愚,很帅的一位大神的演讲。
主题是从object转换到swift的
。它本人说话的风格我非常之喜欢,甚至很是崇拜,言语之间透露着对那些因循守旧不思变通的人的不懈,当然这仅仅就是我自己对他个人的一种评价,但也许他听到这个评价会不高兴了,也许他根本就不屑于这样的评价吧。
演讲的一开始,他似乎就给了我们一个下马威,拿出了两段比较诡异的代码,直接把我搞晕了,让我觉得swift是一个可怕的语言,???问号真的是太可怕了。
不知道聪明的你看一会之后,是否理解了这段诡异的代码为何会是这样的结果。
然后引出了一些规则:
****rule1、不到万不得已,不要使用继承
rule2、不到万不得已,不要使用继承
rule3、组合优于继承。。。****
可以看到他故意将前面两个规则重复,所以说,不要使用继承在swift开发过程中是我们常常要思考的一个问题,是否一定需要用类去解决呢?很多时候,我们写一个viewcontroller的时候,我们首先会想到肯定有很多很多的类都需要一些公用的功能,比如显示和隐藏加载框等等,我们很自然的就想到做一个baseviewcontroller之类的类,然后让所以有的viewcontroller都继承至这个类,实际上做到最后,我们的baseviewcontroller可能会很大,1000行都不是不可能,大家都知道代码量越大就越难维护。
那么正确的做法,其实是面向协议去编程,而swift官方定位这个语言本身其实就是一种面向协议编程的语言。那么比较正确的做法可能会是这么一种形式,当然也有待我们自己去完善。
protocol Netable {
func doNetwork()
}
extension Netable {
func doNetwork() {
print("doNetwork")
}
}
protocol LoadingAble {
func showLoading()
func hideLoading()
}
extension LoadingAble {
func showLoading() {
}
func hideLoading() {
}
}
protocol ClickAble {
func click()
}
extension ClickAble {
func click() {
}
}
protocol ReviewPhotoAble {
func reviewPhoto()
}
extension ReviewPhotoAble {
func reviewPhoto() {
}
}
protocol InputEmojable {
func showInputEmojWidget()
func hideInputEmojWidget()
}
extension InputEmojable {
func showInputEmojWidget() { }
func hideInputEmojWidget() { }
}
class MyViewController: UIViewController, Netable, LoadingAble, ClickAble {
}
随后提到了回调地狱,对于这种几乎不能维护的代码,他用几句话轻易的说出了他是如何使用函数式语言重构那么一段垃圾代码的,++!虽然我现在正在写着那样的一些代码。。。
引入适当的函数试编程,可能会让我们事半功倍
真是看着嘴馋,可惜FP学习曲线确实不平滑,也只能模仿着写一下。
听完整个演讲,你会发现FP几乎被每个嘉宾提到过,足见其有多么的重要,当然,我听完之后,也是一头雾水,不过傅若愚给了我们一些启示,因为FP的学习曲线比较陡峭,所以,我们尽量使用一些开源库比如
RxSwift,https://github.com/ReactiveX/RxSwift
Reactive Cocoa, https://github.com/ReactiveCocoa/ReactiveCocoa
这样等我们对FP理解的足够好之后,也可以尝试的实现自己去实现。写到这里,我不得不卖一个关子,我后面会把大会所有嘉宾所讲的理解心得一一写出,真的太感谢他们了,有时间真的应该听一听。