前不久刚结束对 20 模块项目的第 3 轮重构,一路见证 MVC、MVP、Clean 的优缺点并形成自己的体会。
近期在总结工作经验的同时,开始写博客。
之所以将规划放出来,一来是总结的过程中已经形成底稿,不如和大家一块分享,各抒己见。二来粘贴布告,能有效督促自己执行。
Viabus 架构 的开源就是因为有一天,和同事聊着聊着说要开源,结果就真的就做了。
由于 Viabus 对很多人来说,是个很陌生的东西,因此如果想让更多人享受到,“合理而快捷” 的开发体验,可不是一件简单的事。
对此我想的招是,先在网上找个文艺小清新的项目,重构,然后挂在 [Github 项目页面](https://github.com/KunMinX/android-viabus-architecture ) 下方,这样人们就愿意尝试,毕竟试错成本超级小嘛。
在项目重构前,我需要利用国庆七天做一些准备工作。
以上是我依据 “个人开发” 的顺序流程而罗列的技术堆栈。
做过个人开发的一定知道,最头疼的莫过于被一些非专业层面的事情打断。例如如何设计一个好看的界面,这个页面的视觉交互该如何如何。
如果这些事情一开始没有定好,那软件开发根本无从开始。因为如果没有一个好看的界面,你都不会相信这个软件能受人喜欢,首先自己就不相信、不喜欢。
再者,如果没有一个既定的界面设计,那么开发的过程中就会不断的斟酌,反反复复,消磨了开发的热情、拖延了进度。
因此想到的好招就是上述说的,重构市面上已有的产品。
软件的本质是数据的交互。数据是 app 的灵魂。
因而除了那些工具类软件,多数软件只有和后台建立了连接,才能源源不断的拿到数据和层出不穷的变换着展示。
所以第一个要掌握的就是 抓包。
教程网上一搜一大把,链接我就不提供了。可以使用 Charles ( Mac ) Fiddler ( Windows ) 来完成抓包工作。
除此之外,过程中可能还要涉猎一番 http 协议和 TCPIP 体系结构。掌握它们的概念,都是会用的到的。
软件的本质是数据的交互。无论是多么简单还是复杂的软件,都遵守这一定律。小到一个方法:输入参数,返回结果,大到一个业务,一个模块,输入配置,返回结果。都是一个道理。
那么软件重构的目标,就是将不符合软件本质定律开发的软件,推倒重来,依据该定律来开发。
在该定律的指导下,UI 和 业务 是完全分离的。UI 的职责仅限于请求数据和处理 UI 逻辑,业务的职责仅限于处理请求和返回结果。因此 UI 只负责 UI,它不需要知道业务是怎么准备数据的,业务只负责数据,它不需要 UI 在拿到数据后怎么使用怎么处理。
刚好符合设计模式的 6 大原则。
因此,进一步说,软件重构的目标,
一是使数据的交互标准化。底线是,数据配置和资源的存放位置,必须便于联想。数据名称的定义,必须规范化,不允许使用魔法值。
二是使数据的交互模式化。意思是,数据交互的双方职责明确、职责边界明确、独立自主、互不干涉。
为此第二步就是,查阅一下数据交互框架的源码,对设计模式在 android 中的广泛应用有所见证。
磨刀不误砍柴工,平日里就要总结、归类和封装你在项目中必然会用的到的控件。例如列表、菜单、对话框等等。这样在编写新项目时,不会被打断。
根据使用场景,我将控件分为以下四类:
1.展示类。是那些供展示,不可编辑的控件。例如引导页、信息展示页。
2.提示类。像吐司、对话框等等,及时提醒用户必要信息的手段。我们可以通过它们来增强软件的表现力,以获取用户的信任。
3.导航类。就是点击即可从此处跳转到别处的控件。例如列表、按钮等。
4.表单类。就是可以执行输入、勾选等表单操作。
以上就是国庆期间的规划:
1.寻找文艺小清新项目,抓包,温习 http 和 TCPIP。
2.归类和整理通用必用控件,供后期不断封装。
3.查阅数据交互框架的源码,见证设计模式。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.