代码的整洁之道
当一个VC里面有大量的代理,那么我们要实现很多的代理方法。这可能会使我们的代码变得冗余和难以阅读,下面记录几种开发过程中学习到的一些小技巧:
1.extension 类似于OC中的一个类扩展 但是不用像OC一样去开辟一个文件 可以直接在当前控制器中实现
比如:当前在名为ViewController的控制器中我需要遵循瀑布流的协议并且实现它,那么
extension ViewController: UICollectionViewDelegateFlowLayout,UICollectionViewDelegate,UICollectionViewDataSource{
//瀑布流布局
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int{
return 10;
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! MyCell
cell.backgroundColor = UIColor.white
cell.movieLabel?.text = "我是一个label !"
cell.movieLabel?.textColor = UIColor.black
cell.moviesImage.image = UIImage.init(named: "movie.jpeg")
return cell
}
}
2
使用清洗而协调的命名方式
驼峰命名法
方法与变量以小写字母
开头
类名以大写字母
开头
不要使用str
这种简称,而用string
这样的全称
Boolean
属性应该加is
前缀,如果某方法返回非属性的Boolean
值,应该根据功能选用has
或者is
当前缀
类与协议的命名
为类与协议的名称加上前缀,以避免命名空间的冲突
委托一般使用委托的发起方名称后面跟一个Delegate
为私有方法名加前缀
一般可以使用p_
作为前缀,表示私有方法
不要用一个单独的下划线作为私有方法的前缀
理解Objective-C
错误模型
异常NSException
应该用于极其严重的错误,比如编写了某个抽象基类,它的正确用法是先从重继承一个子类,然后再使用这个子类。在这种情况下,如果有人直接使用了这个抽象基类,那么可以考虑抛出异常。
NSError
的用法很灵活,封装了三条信息
-
Error domain
错误范围,类型为字符串
错误发生的范围,通常用一个特有的全局变量来定义。 -
Error code
错误码,类型为证书
独有的错误代码。这种错误通常采用enum
来定义,比如 HTTP 请求返回的状态码。 -
User info
用户信息,类型为字典
有关此错误的额外信息,其中或许包含一段本地化描述,或许还包含导致该错误发生的另外一个错误,经由此种信息,可将相关错误传承一条chain of errors
。