有时候一些奇怪的想法会突然出现在脑海中,那一瞬间仿佛有所领悟
概况
本篇中所分析的所有内容都是以中小型项目为前提的,iOS,Android,Server这3端开发人数不超过20人。由于我本身是做iOS的,因此,会从一个iOS开发者的角度来剖析问题。不一定百分百正确。
设计
产品经理已经设计了app的大部分功能,一些交互上的细节肯定不可能完全设计出来。往往这些被忽略的交互设计会在程序员编码过程中,造成很大一部分时间的浪费。
因此,需要有一个方案上的设计,这个设计的主要目的就是处理项目中产品方面的临时变更。
在真实开发中,最经常出现的一个场景就是遇到这访问的问题去问产品,产品当时记住了,可能过段时间就忘了。这些产品方面的问题最少哟通知到跟该项目开发相关的所有人,如果到了测试阶段,还需要修改交互设计,那么上述的设计就是有问题的。
产品设计是开发前期最重要的一个环节,假定我们已经有了一个良好的设计,那么接下来,需要让项目开发的相关人员对必须对产品有一个清楚的了解。
还是那句话,在这个阶段,让开发人员把问题精确到每一个if上,肯定不现实,但通过大家的头脑风暴后,大部分隐藏的问题和冲突都能被发现。
对于app界面的设计人员,需要制定一套统一的设计方案,方案中应该包含整体设计的风格,统计出有多少需要设计的界面。后续的分工会在任务分解中给出解释。
后台开发应该和移动端开发共同制定一份数据交互规则。
说点题外话,我一直觉得不管是写后台还是移动端,整体框架的良好设计能够给程序带来巨大好处。每个人写代码的风格千差万别,有的时候同一份数据需要创建好几个模型,这几个模型大部分的属性都是相同的,想想,这对于开发和代码优化会带来多大的阻力。
我个人认为,如果后台开发,以模型为单位组织数据,会给移动端开发带来极大的便利性。最好有一个人能够专门维护一个属性池,大家所有的属性都在这个池子里获取,从而就能够避免各种冲突了。
简单说说iOS端的设计,基本的文件目录结构的设计,咱们就不提了,这都是最最基本的要求。网络层的设计也不提,每个公司都会有这方面的封装库。我们首先来探讨下模型的设计:
最单纯的模型就是用来存储数据和提供数据的。如果控制器中的逻辑很复杂,最好写一个处理控制器与数据模型逻辑的管理类,数据的处理全都封装在这个管理类之中,控制器拿到处理好的处理,去轻松的完成他的任务。上边的管理类是一个核心思想,相信有经验的开发者应该明白。
对于存储的设计应该有一个统一的类去管理,数据的持久化不应该随随便便的散落在代码中的各个角落。这个管理类负责了数据存储的读取和写入,以及稳定性的考验。
除了网络,模型,存储,就剩下控件的设计了,控件的设计就一句话,把你写的每一个控件都当做一个小的组件来写。每一个控件都不应该是仅仅基于当前的一个小的需求考虑的,最起码从其他开发人员也会使用这个角度去考虑问题。
在真实开发中,我发现一个小小的问题,即使组件的接口写的很简单,别人也不一定会用,因此,这些组件应该需要一份文档来描述它的使用方法,一个很好的例子就是github。
上边描述的种种都是基于理论方面的内容,需要在开发中慢慢体会。
任务分解
任务分解同样是一份很有技术含量的活,对于一个大型的建筑项目,中小app的开发真的不算什么。
根据每个人的个人能力,把不同的模块,不同的功能指定给合适的开发人员。
最难的事情
我个人认为能够处理好上述的问题的人选一定是架构师,一个良好的设计,一个高度可维护的设计都应该是架构师必备的技能包。
但我认为,在开发中让所有的人的技术提高是一件很难的事情,正是由于技术水平的不一样,才产生了开发中的各种障碍,这里就不多说了。
总结
通过这个项目,我个人得到的领悟就是设计非常重要。