标签:
公司项目的1.0版本已经结束有一段时间了,2.0版本也逐渐进入尾声,从1.0版本结束就计划着写一下项目总结,一是对项目进行一下思路梳理,二是总结一下之前的工作,找到所遇到的问题和架构的不合理之处,为接下来的版本做准备。由于2.0版本的任务比较紧急,一直没有时间做个系统的整理,只是零零星星的做了一些备注、笔记什么的。因为个人原因,准备回济南发展,所以向公司提出了辞职。利用这段准备移交工作的时间做了一下项目版本1.0的总结,希望能为新来的iOS同事快速进入状态提供一些帮助。
由于项目还没有上线,所以许多东西都需要保密,可能会有部分比较敏感的部分不会详说。另外,由于项目后台是公司内网,本文主要讲讲架构的设计思路,具体的技术细节和代码就不往上贴了,有时间可以另开一帖详谈。
1.0版本的项目总结分成以下部分:
一、从架构谈起--架构的分层和功能逻辑的细分。
二、关于可复用性和可扩展性。
三、Block和Delegate的抉择。
四、关于第三方库
五、框架的进化--框架的持续优化
一、从架构谈起--架构的分层和功能逻辑的细分。
对于第一款从零开始主导开发的项目,在开始之前做足了功课。虽然还是有缺陷,但是架构不就是在不断的试错改错中逐渐完善的嘛(给自己找了一个好借口。。。)。
先说一下架构的原则,参考之前看到的一片文章,文章里面比较详细的讨论了在架构设计中的一些关键原则。对此做的总结如下:
1.需要分层,将复杂的系统分解成比较容易实现的较小系统。
2.层内部高内聚,层与层之间低耦合,层与层之间的访问是透明的,不需要了解实现过程。
3.职责单一原则,职责分工需要明确,逻辑尽量细分,依赖关系尽量少。
4.敏捷开发中需要思维收敛,不要做过多的发散,只设计必须的内容。
5.功能模块化,模块与模块之间也不需要了解实现细节。
6.优先考虑项目的扩展性和可伸缩性,性能在初期不必过多考虑。
分层可以将复杂的系统细分成多个较为简单的系统,每一层只负责实现本层的功能,而不用去关心其它层的实现细节,开发人员只关注本层的实现即可,功能实现上变得简单,也提高了系统的伸缩性和扩展性。职责单一原则要求的功能细分的粒度尽量的小,功能实现不重复,不越权,对于相对底层的模块,可以更好的进行复用。对于敏捷开发,前期由于需求的不明确和不稳定,我们可能注重的是功能的实现而不是大量的预先设计,所以我们尽量只设计必须的内容,避免陷入多度设计的坑。对于最后一点不同的开发人员可能有不同的想法,个人认为在开发的初期优先考虑扩展性和伸缩性可以更快的进行版本迭代,不断地试错,更快的做出一款用户喜欢的产品,而性能瓶颈在初期并不明显,只有在用户达到一定数量的时候才会出现性能问题,而我们可以在逐步完善产品的过程中可以不断地优化,逐步的提高软件的性能。
先看一下此次项目的分层架构设计图。
标签:
原文地址:http://www.cnblogs.com/arthas/p/4930938.html