读『iOS应用架构谈』系列
ShannonChenCHN opened this issue · 2 comments
ShannonChenCHN commented
读『iOS应用架构谈』系列
ShannonChenCHN commented
读『iOS应用架构谈 开篇(Casa)』
一、当我们讨论客户端应用架构的时候,我们在讨论什么?
1. 共识
市面上大部分应用都是在做以下这些事情:
--------------- --------------- --------------- ---------------
| | | | | | | |
| 调用网络API | --> | 展现列表 | --> | 选择列表 | --> | 展现单页 |
| | | | | | | |
--------------- --------------- --------------- ---------------
^ |
| |
| |
------------------------------------------
2. 架构要考虑的事情——支撑上面所说的这些事情的基础
- APP(基础/核心)
- 调用网络 API:如何让业务开发工程师方便安全地调用网络API?然后尽可能保证用户在各种网络环境下都能有良好的体验?
- 页面展示:页面如何组织,才能尽可能降低业务方代码的耦合度?尽可能降低业务方开发界面的复杂度,提高他们的效率?
- 数据的本地持久化:当数据有在本地存取的需求的时候,如何能够保证数据在本地的合理安排?如何尽可能地减小性能消耗?
- 动态部署方案:iOS应用有审核周期,如何能够通过不发版本的方式展示新的内容给用户?如何修复紧急bug?
- 团队
- 产品、运营:收集用户数据,给产品和运营提供参考
- 测试:每日app的自动打包,提供给QA工程师的测试工具
- 业务技术团队:合理地组织各业务方开发的业务模块,以及相关基础模块
二、架构设计的方法
- 所有事情最难的时候都是开始做的时候
- 每个架构师一定都有一套自己的方法论
- 不管你采用什么方法,全局观、高度的代码审美能力、灵活使用各种设计模式一定都是贯穿其中的
1. 搞清楚要解决哪些问题,并找到解决这些问题的充要条件
2. 问题分类,分模块
3. 搞清楚各问题之间的依赖关系,建立好模块交流规范并设计模块
4. 推演预测一下未来可能的走向,必要时添加新的模块,记录更多的基础数据以备未来之需
5. 先解决依赖关系中最基础的问题,实现基础模块,然后再用基础模块堆叠出整个架构
6. 打点,跑单元测试,跑性能测试,根据数据去优化对应的地方
三、什么样的架构师是好架构师?
- 每天都在学习,新技术新**上手速度快,理解速度快
- 业务出身,或者至少非常熟悉公司所处行业或者本公司的业务
- 熟悉软件工程的各种规范,踩过无数坑。不会为了完成需求不择手段,不推崇quick & dirty
- 及时承认错误,不要觉得承认错误会有损你架构师的身份
- 不为了炫技而炫技
- 精益求精
四、什么样的架构叫好架构?
按重要性来排列,有以下几点
1. 代码整齐,分类明确,没有common,没有core
2. 不用文档,或很少文档,就能让业务方上手
3. 思路和方法要统一,尽量不要多元
4. 没有横向依赖,万不得已不出现跨层访问
5. 对业务方该限制的地方有限制,该灵活的地方要给业务方创造灵活实现的条件
6. 易测试,易拓展
7. 保持一定量的超前性
8. 接口少,接口参数少
9. 高性能
五、关于架构分层
1. 其实分层这种东西,真没啥技术含量,全凭架构师的经验和素质
2. 为什么流行起来的是三层架构,而不是四层架构或五层架构?
3. 我们怎么做分层?
六、关于Common文件夹
ShannonChenCHN commented