微信号:SwiftDev

介绍:探讨移动开发技术,推荐常用框架,分享移动互联网资讯. 主要提供Swift;IOS等相关技术资讯

Swift Review 总结一:从 Swift Style 开始

2016-12-07 21:28 Swift开发

来源:没故事的卓同学

链接:http://www.jianshu.com/p/afc50eaebf5e


最近凑了几个热心的小伙伴写一些swift的新手demo(两周后应该能和大家见面了),我参与了review。于是借demo里的代码总结一下新手写swift要注意的问题,尤其是从oc转到用swift写的开发者。


每个语言都有自己的推荐风格。显然oc与swift有着不同的风格。当我们开始写swift,首先要注意的就是按照swift的风格写,而不是沿用oc的风格。


省略句末的分号


swift推崇简洁的语法。如果一行里只有一句代码,句末不要写分号。


// 💔

title = "swift 3";

 

// 😎

title = "swift 3"


省略self.


不在闭包里的时候调用自身的属性或者方式时省略self.。这点社区也产生过讨论,有人建议需要强制的声明self.,但是苹果大声的拒绝了。所以让代码更简洁一点吧。


// 💔

self.title = "swift 3"

 

// 😎

title = "swift 3"


注意类型标注的格式


当我们给一个变量或者属性标注类型时的语法是这样的:


var a: Type

var dict: [String: Any]


注意冒号后面有一个空格,如果是字典key的冒号后面有一个空格。

冒号后面紧跟着类型是不规范的写法。


// 💔

var name:Sring

var dict: [String:Any]

var dict: [String : Any]


当然你可以利用SwiftLint帮你检查。


注意函数声明背后的空格


一个标准的函数语法是这样的:


override func viewDidLoad() {

    super.viewDidLoad()

}


注意函数实现 { 前有一个空格


// 💔

class User{

    subscript(index: Int) -> T{

        return objects[index]

    }

}

 

// 😎

class User {

    subscript(index: Int) -> T {

        return objects[index]

    }

}


二元操作符前后有空格


// 💔

var sum = 1+2

// 😎

var sum = 1 + 2

 

// 注意函数返回类型 -> 符号的前后空格

// 💔

func greet(person: String, day: String)->String {

    return "Hello \(person), today is \(day)."

}

// 😎

func greet(person: String, day: String) -> String {

    return "Hello \(person), today is \(day)."

}


闭包、函数实现不要写在一行里


    //  💔

    var joke : JokeItem? {

        didSet {

            if let _ = joke { updateUI() }

        }

    }

 

    // 😎

    var joke : JokeItem? {

        didSet {

            if let _ = joke {

                updateUI()

            }

        }

    }


对象初始化不要显式调用init


通过()直接就是调用对象的初始化方法,不需要调用init


//  💔

let url = NSURL.init(string: "github.com")

 

// 😎

let url = NSURL(string: "github.com")


函数命名


oc的第一个参数名是省略的,所以会把第一个参数名带到方法名上。swift 3以后调整为在调用时第一个参数名会展示。所以函数命名时不要把第一个参数相关命名放在函数名上。


//  💔

func bindWith(data: String) {

 

}

 

// 😎

func bind(withData: String) {

 

}

 

bind(withData: "swift")


然而这里直接把介词去掉显得更加简洁:


// 😎

func bind(data: String) {

 

}

 

bind(data: "swift")


欢迎关注我的微博:@没故事的卓同学




相关链接:


swift style guide

https://github.com/Artwalk/swift-style-guide/blob/master/README_CN.md


 
Swift开发 更多文章 如果你30岁还未赚到100万,那你就应该好好看看了! 月薪3000和月薪3万的程序员差别到底在哪里? 这是我目前见过最全的程序员视频资源包,没有之一! 这是我目前见过最全的程序员视频资源包,没有之一! 「高考准考证」生成器,穿越回18岁那年,好紧张!
猜您喜欢 设计模式在游戏开发中的应用之单例模式 棱安全送福利 · 乌云白帽大会 WHF · 2016 门票免费赠送 微天气 - 开发一个完整的微信小程序 联想企业网盘基于Docker构建分布式部署框架实践 10步让你做出引人入胜的用户体验