美文网首页
关于代码风格的一些见解(一)

关于代码风格的一些见解(一)

作者: bigParis | 来源:发表于2016-03-30 18:23 被阅读137次

UIViewController和UIView

Controller顾名思义,主要是用来做控制的,View是用来做UI展示的.但在实际的开发中,往往会将ControllerView都作为UI层来展示,这样做会有什么问题?

  • View将不光负责展示控件,还需要处理业务数据,业务逻辑.对于一个业务逻辑很强的View这样做还可以,比如用户的头像控件,就是和用户个人资料有很强业务关系的,这种做法是合理的.但如果是一个普通的View,比如一个底部工具条,里面有很多按钮,显然再用View处理业务逻辑和数据是不合理的,这样的View是没法复用的,如果你说:我不复用View,那就呵呵了.
  • Controller里面可能存在大量的UI控件,各种创建控件的代码,各种代理,回调,数据读取,网络请求,业务数据适配,这样的ViewController将会变得非常庞大.ViewController就是一个页面,一个完整的页面,要用ViewController就是想用些和生命周期有关的ViewController特有的东西,如果只是通过ViewController加载一个view,那最好直接用view.通常来讲ViewController是不能够复用的,如果你从StoryBoard中连了很多控件到ViewController中,而那个StoryBoard中要是还有很多约束,那随着业务的发展,这份代码离无法维护的日子就不远了.

那Controller应该做什么:

  1. 初始化UI(极少了的UI细节,各种自定义UIView)
  2. addObserver 设置delegate,可能还有addTag,addGesture(极少的)
  3. 同步取本地数据,异步取网络数据.(UI展示的数据,即使是同步数据也不应该在Controller里初始化),对于数据,这里应该是封装了的数据,也就是说,一个View对应一个Model,而不应该是零散的数据,拼凑的.
  4. 在代理和observer的回调中更新UI,这里的更新UI只要1句话,把数据全都通过Viewpublic interface 丢给View,至于View想用什么,想怎么更新,都是它自己的事情(这里的View包括自定义的TableViewCell,CollectionViewCell,自定义的View),当然对于部分更新UI还是要在View中暴露几个public property.
  5. 如果你使用自动布局或者Masonry要手动码一些addConstraints这样类似的代码,或者你使用frame,那你要在viewDidLayoutSubviews设置每个viewframe
  6. 最核心的部分,负责页面的跳转,跳转也就是一句话,[XXXViewController xxx:];这里需要在ViewController里面实现一个或者多个类方法,方便外部调用和传递参数,这里参数还是建议封装成一个model,只传一个参数,里面具体是什么自己去解析.这里ViewController只关心跳哪里,具体怎么跳,不需要写在本ViewController里.
  7. 动态展示一些子view,alertView,messageBox, 这里是把ViewController弄乱的最好的地方,因为动态添加的view可能是动画,所以尽量把view中动画有关的东西都封装到view中,ViewController只通过1-2句代码创建View并完成动画,而ViewViewController传递消息和数据统统都通过代理的方式,最后ViewController只要在某个代理里remove这个view就可以了.
    所以整个ViewController写下来import的东西应该是类似这样的
#import "XXXViewController.h"
#import "XXXModel.h"
.....
#import "XXXView.h"
....
#import "XXXViewCell.h"
....

至于从model中获取的数据不是view要显示的数据应该怎样做数据的适配呢?这里就要使用到ViewModel,为避免文章过长,下一篇详细说明如何在已有的big VC中增加VM来瘦身VC.

相关文章

  • 关于代码风格的一些见解(一)

    UIViewController和UIView Controller顾名思义,主要是用来做控制的,View是用来做...

  • 关于代码风格的一些见解(二)

    接上一篇文章说到使用ViewModel来瘦身ViewController,也就是把ViewController中有...

  • 自己整理的iOS开发规范

    本文仅作为约束自己代码风格的一种代码规范,如有不同见解欢迎评论区留言交流。

  • 关于代码风格

    为什么强调代码风格 不同的语言,不同的项目,都有自己的风格,就像每个人都有自己的特点一样。代码风格是一个不容易引起...

  • JavaScript代码风格

    代码风格 为了约定大家的代码风格,社区中诞生了一些比较代码风格规范: JavaScript Standard St...

  • 关于开会的一些见解

    关于开会的一些见解 不知道你有没有被开会时间太长所困扰,每个人都想着早点结束,每个人却都各抒己见,最后开了慢长而无...

  • 关于动画的一些见解

    Animator 关系 介绍几个开源动画库 1、2017年酷炫的动画库https://blog.csdn.net/...

  • 关于学识的一些见解

    随便聊一下,学识这二个字可以拆开看一个学字一个识字,个人觉得这两个字的话还是有很大区别的,学主要是技能的传承比如...

  • 关于旅游的一些见解

    1、旅游的目的 旅游,说的直白些,就是出去玩。每个人出来的目的都不同的,就像这次,我和姐、姐夫和四岁的侄女一行在...

  • 关于NSNotificationCenter的一些见解

    最近app中加了很多通知,但误用通知会导致方法多次调用等各种问题,为了研究透通知的处理机制,举了几个例子来讲解。为...

网友评论

      本文标题:关于代码风格的一些见解(一)

      本文链接:https://www.haomeiwen.com/subject/amcelttx.html