文档章节

[开源中国]android客户端改造

j
 jamesZhou
发布于 2013/06/22 00:23
字数 930
阅读 6943
收藏 160

刚刚学习android,拿来osc的客户端研究了一下,好的地方很多,就不说了,下面说说我觉得需要改进的地方。

1、里面的if else相当的多,尤其是在Main里面,看的人都晕了,以后的功能越来越多,不停的加if else 绝对会造成代码的维护成本剧增。

2、没有按模块划分包,很多直接放到一个地方,没有抽出通用的组件。例如ui包里,不利于代码的重用,举个例子,现在客户端可以作为osc的客户端,当我需要把它改造成osc2的客户端呢,就成本比较高了,代码粘连的很厉害,处理很不方便。

3、一个功能的代码过于分散,有的在AppContext中,有的在ApiClient中,而且关于这两个类我的理解是应该是全局的,里面没有各模块个性化的代码比较好,这样比较好重用代码的框架结构,但是实际上里面却包含了很多各个功能模块的方法。

4、一个类的代码行数太大,Main中就超过两千,实在累。

 

现在说说我的个人观点,只供参考,后面附我重构后的代码,里面只有新闻资讯模块,但是基本上的结构定了,同时公用组件抽出了一些,见笑了,只是弄了几天,不足之处望大家见谅。

1、使用类的多态解决if else 的问题。

2、各个模块分包处理,公用的代码放在公用的包里。

3、我将分散到各个类里面的方法抽出来集中放在模块中的各个类中,便于管理,同时也提高公用代码的通用性。

4、采用抽出来新的类的办法,将main中的各个模块的方法放到各个模块的单独类中,这样main方法的行数急剧下降,我只改造了一个模块,其他的没有改造的我都先删掉,这样main的行数变成了350行(包括空行),按照这种改造方法,就算加上全部的osc的改造后的模块,main类也不会超过600行,超过了说明需要重构。

 

改造后的uml类图如下(里面之后一个新闻的实现,叫NewsMain)

 

下面对android客户端的结构分析一下,

osc的客户端界面如下:

 

可以把上面的图分成三个部分,起名为 head 和 frame 和 foot 。

head部分如图

头部信息当然是可以被foot和frame部分调用修改的,所以有了uml中的BaseHeader

frame部分如图

关于osc中的frame的实现,使用了非常多的layout定义,其实我看了一下,很多都是有共同之处的,完全可以抽出来一个通用的布局,来实现动态的创建,同时也减少了文件数量,关于这个改造我还没有进行,因为时间的原因。

 

foot部分如下图:

 

由于我想foot部分可能不止这些,所以我想要是可以动态创建的,所以我设计了UML中的RadioFoot,因为是RadioButton实现的所以起名为这个,当然可以参考这个实现,实现其他类型的。

关于实现代码就不贴了,又长又不好看,提供工程的源码下载,有兴趣的可以下载看看,也希望@红薯能看看,呵呵

发现博客中不能插附件,我上传到csdn中,大家下载吧http://download.csdn.net/detail/zyq_1/5628231

晚了,睡觉

© 著作权归作者所有

j
粉丝 20
博文 3
码字总数 4567
作品 0
深圳
私信 提问
加载中

评论(30)

苏珊大妈
苏珊大妈
建议代码放在osc git上
j
jamesZhou

引用来自“阎魔爱”的评论

楼主啊~~请教个问题呗。我刚开始接触android 能介绍下osc 代码的优点吗? 说实话 我都找不到优点(绝对不是没有),能指点下吗?

首先,你不用写那么多的基础类了,因为很多的应用的基础类差不多,例如:网络数据处理,判断手机的各中状态,其次,你要是自己从头到尾写这些,就算是基础的架构,都是要花很长时间的,里面涉及到ui、异步处理,结构性数据。采用开源的东西的好处就是你可以尽可能的把精力放到关注的业务逻辑上,就好比你做java web 不用任何开源框架也是可以的,但是基本上是不可能的,因为你要重复的造轮子
品不懂
品不懂
楼主啊~~请教个问题呗。我刚开始接触android 能介绍下osc 代码的优点吗? 说实话 我都找不到优点(绝对不是没有),能指点下吗?
xinquan
xinquan
不错不错!
顶层设计
顶层设计
import android.webkit.CacheManager;

Exceptoin Cannot resolve symbol Cachemanager
Xushao
Xushao

引用来自“红薯”的评论

可以在代码分享中上传哦:)

请问一下:客户端请求的数据,服务器那边有限制吗?
比如我把项目由原来的com.oschina改成com.oschian.my的话,服务器那边是不是不认识了?
Xushao
Xushao

引用来自“johnny_zyc”的评论

引用来自“红薯”的评论

可以在代码分享中上传哦:)

老大,什么时候换个android design风格的ui爽爽啊

我正在搞一个Android Design的开源客户端。不过最近也好忙,刚起了个步
bruceXu
bruceXu
Android程序结构较好,代码之间的耦合度很高,初学者入手比较麻烦,没有WEB项目架构清晰
刘占军
怎么是 csdn,
realvik
realvik
@红薯 为何接口的数据都是xml的 为何不用json
你要的Flutter知识点,都在这里了

本篇文章整理的是掘金技术社区6月-7月中,优秀的 Flutter 文章,其中包括引用教程、应用组件、插件、效率工具、实用文章几个分类。希望能够帮助正在学习 Flutter 的小伙伴。 应用教程: 通过...

掘金官方
2018/08/09
0
0
开源中国安卓客户端更新,支持语音动弹

这是 OSCHINA 官方开发的 Android 客户端软件,采用原生 API 开发,非 HTML 模式。 开源中国安卓客户端 v1.7.6.4 版更新资讯: OSChina.NET for Android v1.7.6.4 更新日志: 1、语音动弹发布...

火蚁
2014/02/11
4.3K
54
开源中国 Android 客户端 v2.8.3 发布

继开源中国 Android 客户端上一个版本发布已经两周,接着上次的版本内容,今天我们非常高兴的宣布:开源中国 Android 客户端 v2.8.3 正式发布! (广而告之:四月樱花开,结束深圳大本营之后...

巴拉迪维
2017/03/28
961
13
久等了!开源中国iOS客户端「夜间模式」上线!

各位小伙伴久等啦! 开源中国iOS客户端 4.5.0 已经在App Store上线,欢迎小伙伴更新体验! 本次更新内容: 1、夜间模式 2、猪年主题模式 3、用户搜索功能 详情的功能介绍戳这里 >> 开源中国 ...

-冰冰棒-
02/25
0
0
【调查】你常用的手机应用市场有哪些?

大家都知道,开源中国Android客户端官方发布渠道有:豌豆荚、应用宝、小米市场。 地球人也都知道,Android分发渠道众多,而且各不相同,因此想要全部覆盖是不现实的。 但,为了广大OSCer们能...

巴拉迪维
2016/07/11
5.6K
125

没有更多内容

加载失败,请刷新页面

加载更多

Spark Streaming的优化之路——从Receiver到Direct模式

          作者:个推数据研发工程师 学长 1 业务背景 随着大数据的快速发展,业务场景越来越复杂,离线式的批处理框架MapReduce已经不能满足业务,大量的场景需要实时的数据处理结果来...

个推
44分钟前
2
0
壮丽70年·奋斗新时代|蒸妙集团熏蒸中会阴熏蒸的神奇好处

聚结相合之处为会。会阴居两阴间,为督、任、冲三脉的起点,三脉背出两阴之间,会聚阴部,因名会阴。会阴,经穴名。出《针灸甲乙经》。会阴别名屏翳、下极、金门。属任脉。在会阴部,男性当阴...

公益传承
53分钟前
2
0
pentaho-kettle-8.2.0.0-R源码开发环境搭建

1.从Kettle官网下载源码,本文使用的是pentaho-kettle-8.2.0.0-R 下载地址:https://codeload.github.com/pentaho/pentaho-kettle/zip/8.2.0.0-R 2.打开eclipse,选择一个新的工作空间,然后设...

gq_2010
59分钟前
1
0
lua web快速开发指南(7) - 高效的接口调用 - httpc库

httpc库基于cf框架都内部实现的socket编写的http client库. httpc库内置SSL支持, 在不使用代理的情况下就可以请求第三方接口. httpc支持header、args、body、timeout请求设置, 完美支持各种h...

水果糖的小铺子
今天
5
0
通过四道常问面试题,带你了解什么是数据库分库分表

编者语:为了避免被误解为:「手里有把锤子,看什么都是钉子!」,说明一下不是什么业务都适合分布式数据库,更不是用了分布式数据库性能就一定能得到扩展。 其次:本文为纯干货,建议先转发...

老道士
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部