3

iOS界面开发

 3 years ago
source link: https://yuguo.us/weblog/ios-ui-development/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

iOS界面开发

余果 2014-08-01 iOS

过去一个月我都在推进团队项目流程上的改变:把APP界面和逻辑分开开发,让两个团队去做自己擅长的事。

为什么要分离界面和逻辑?传统的iOS开发流程是这样的:

  1. 设计师设计完PSD稿之后,做好标注,切出各种状态的图片,给到开发。
  2. 开发拿到切片,根据标注设计稿和切片,同时实现实现界面和逻辑。

从工程质量和进度上讲,有这样几个问题:

  1. 开发周期长。因为一个开发要同时完成界面和逻辑的部分,所以二者只能串行进行,需要较长的开发期。如果发生了设计或者逻辑的变更,他会需要更多的时间去修改。
  2. 代码耦合强。一个人去实现一个模块的时候,代码中难免出现耦合比较强的情况,没有很好地MVC分离。这为后期的修改带来了隐患。
  3. 沟通成本高。因为设计师跟开发人员之间是通过标注和切片来沟通,但是标注首先就是很不可靠的,一个标注了所有间距的设计稿往往并不是我们需要的,我们需要的是一些常量,以及当界面发生变化时的“规律”。再比如标注了按钮与按钮之间的距离是20px并无意义,因为按钮周围可能会有空白区域。如果开发人员迷信标注上的数字,在代码中直接写标注的数字,就会和设计稿效果出现很大的偏差。
  4. 设计还原质量低。因为开发在逻辑、健壮和成本上有非常敏锐的把控能力,但是再设计还原和用户体验方面的经验就略差一些。而且由于设计师和开发沟通之间的问题,还有开发时间紧急的问题,代码耦合的问题,综合导致设计还原的质量低。

所以我希望推进的流程是从web开发中借鉴经验,让我们原本擅长用户体验的前端同学来进行APP界面开发,整个流程大概是这样:

  1. 界面开发拿到需求单和设计稿之后,跟逻辑开发一起沟通明确哪些界面是新做,哪些可以复用界面或者组件。
  2. 界面开发对于修改已有的界面,而无需动逻辑的,直接修改提测。
  3. 界面对于新增的界面和逻辑,跟逻辑开发约定API之后,自己在view中实现API的细节,并且在controller中使用假数据来提醒开发如何使用API。逻辑开发则同时启动工作,关注后台和APP逻辑,涉及视觉层就调用约定的API。
  4. 界面和逻辑一起在测试环境上联调。

关于API的制定和沟通细节,在后面的文章会单独讲。

理想状态下,这个方案能解决上面的所有问题。

但是在大公司推进新的流程往往不会很容易,仔细分析下,会有这样几个风险点:

  1. 前端同学自己的iOS开发能力不够,造成项目延误或者bug骤增。
  2. PM不信任前端同学的能力,担心bug骤增。
  3. 开发leader不信任前端同学的能力,担心项目延误。

其实信任是相对的,如果没有经验和产出,空口无凭让人信任是很难的。好在我曾经有iOS APP上架的经验,团队里还有一位Android开发经验的同学,所以就尝试在一个小项目中开始接入。从产品和设计入手,他们是最希望改进产品质量的人。然后拉开发leader求着接入代码权限,算是取得了小小的一步进展。

要在任何流程中做出改变,推进自己的理念,自己一定要让所有人都觉得比以前更舒服。所以第一点是要做超出自己责任外的事情,对开发而言,把界面的API第一时间给到他,跟他讨论,方便他设置信息。对PM而言,时刻主动反馈进度,在项目群里在互动沟通。第二点是对自己不熟悉的项目,反而要更快地输出成果,付出的代价就是自己要加倍工作。

比如自己评估一周可以完成的项目,就跟PM说预留一周的时间(甚至更短)。但是自己实际上工作可能不止是5天8小时了,可能是5天14小时。刚开始那段时间我基本每天都是9点以后离开。

说句比较鸡汤的话,要想人前显贵,必须人后受罪,还是很有道理的。

最终这个项目比较成功,跟我接口的开发对合作方式很满意,时间和质量上也让PM很满意,设计师更加高兴,所以一步一步,我终于能把自己的理念在更多、更大的项目中铺开,现在唯一的问题就是我们没有足够多的iOS和Android界面开发同学。

那就发个广告,腾讯ISUX招聘iOS和Android的界面开发,希望你:

  • 非常熟悉iOS或者Android的界面实现和动画效果
  • 熟悉界面相关的性能优化
  • 有推行MVC或MVP的理念
  • 为自己的APP运行在几亿手机里感到光荣
  • 有其它灵活的加分项

所以本篇文章算是一个预告,自己在过去的界面开发中积累了一些经验,所以后面会分几篇文章沉淀一下。大部分内容都是自己已经整理的一些资料,然后进行一些编排。我个人主要是负责iOS端的代码,所以经验也只适用于iOS。

我写字的地方迁移到公众号啦~欢迎关注我的公众号:余果专栏


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK