代码重构的根本思想是模块化、灵活性、高内聚、低耦合。
Android 项目代码重构:
将与业务逻辑无关的公共基本资源、工具类等等抽取到一个lib 工程中,主程序中只放与业务逻辑相关的代码和工具类:
1、将公共资源类进行抽取,包括:
string.xml
color.xml
styel.xml
drable 中自定义的shap 、selector、anim
这些资源基本是和程序业务逻辑无关的,将其放到主工程中只会增加代码量影响对程序业务逻辑的理解。
工程项目所特有的资源可以采取继承于lib库工程中资源,对特有部分进行覆盖,例如lib工程style 中定义基础 的button 形状 包括默认大小、默认背景、文字大小等,主工程中定义特有style 时现继承于lib工程中style 再根据实际需求覆盖其中的元素如文字颜色、背景颜色等。定义好后,工程中再统一以此作为base style 直接引用 或者 再进行深一层细化定制。
抽取过程中 如果发现是比较有益的 可以公用的东西尽量往上一层抽取 ,只要是与工程无关的尽量抽取到lib 工程中,开发过程前期可能耗费更多精力,但当一个项目下来,你除了收获项目相关的经验外,还拥有了一个与项目无关的、强大的基本资源库,进行新项目开发时,你可以基于一个已经不断优化过的基础资源库进行开发,很多低层次代码、工作不再需要重复性劳动。
ps:个人对UI设计的一点见解:
在精力允许的情况下,能自己xml实现的效果尽量不要使用美工切图。比如按钮、渐变背景、纯色背景等等、都可以自己去画。
使用切图严重依赖美工的个人素质和切图质量 且会增大应用的体积,在后期更改程序风格配色时需要替换切图调整,而假如以上资源使用自己定义的背景xml 资源 只需更改颜色字段即可调整应用配色、风格。
如果让我自己做一个应用,我最理想的效果就是 程序资源中只有一张图,那就是桌面图标,当然只是理想状态、一般的应用 还是有一些特殊的图标或者难以实现的效果需要使用切图。
但作为开发人员,我感觉应尽量减少对美工、对切图的依赖。
我喜欢的一个理念:
No design is the best design。
2、将与程序逻辑无关的工具类进行抽取:
比图 BitmapUtils、Toast工具类、log工具类、时间工具类等等,总之,遵循一个Top原则:与程序业务逻辑无关的工具类,都抽取到lib工程中。
一个项目做完的时候,你收获的不止有业务处理经验,还有一个强大的工具类库。你的编程经验、理念的提升可以使你在做一个新项目时从架构上更合理,而工具类的抽取可以使你再开启一个新项目时不必再重复那些低端的重复劳动,基本类库你都有、你需要关注的只是这个程序的业务逻辑、只需关注程序的业务与上一个有什么不同。
总之,项目重构完之后,理想的状态是:
项目主工程中,所放的资源、工具类是继承于基础lib工程,但只与该项目相关的,所有与程序业务逻辑程序界面风格等无关的基础资源和工具类都在Lib工程中。减少重复性劳动、减少对美工切图的依赖、将基础资源真正抽取出来,主工程只关注业务逻辑。
未完待续。。。。。
版权声明:本文为博主原创文章,未经博主允许不得转载。