代码的整洁之道

当一个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

 

posted @ 2017-01-06 14:07  SunnyOMGi  阅读(158)  评论(0编辑  收藏  举报