如何避免项目重构

简介:

每个 Android 开发者,几乎都有自身的项目编写规范,好坏在平常的开发时或许难看得出来,一旦涉及到项目维护更新或项目交接开发,是神是鬼,一下便原形毕露。低劣的编写规范会导致项目维护更新成本变大,所交接的人员不愿在此基础上进行操作等。于是,这些项目往往不久后都会进入重构阶段,甚至于放弃目前项目,进行重写。为了避免这些情况的发生,本文总结了几点良好的项目编写规范,可以以此作为参考从而更改自身的编写规范,将恶魔扼杀于摇篮中。

(总结《App研发录》第一章(重构,夜未眠))

目录:

1.重新规划 Android 项目结构

2.为 Activity 定义新的生命周期

3.实体化编程

4.Adapter 模板

5.类型安全转换函数

重新规划 Android 项目结构

  • 将业务无关的逻辑转移到 AndroidLib 中,然后主项目保持对 AndroidLib 的引用。
  • AndroidLib 的项目结构至少包含以下五大部分:
    • activity:存放与业务无关的 Activity 基类。
    • net:网络底层封装。
    • cache:缓存数据和图片的相关处理。
    • ui:自定义控件。
    • utils:各种与业务无关的公用方法。
  • 主项目可以划分为以下包:
    • activity:按模块进行拆分,将不同模块的 Activity 划分到不同的包下。
    • adapter:适配器。
    • entity:实体类。
    • db:SQLite 相关逻辑的封装。
    • engine:业务相关的类。
    • ui:自定义控件。
    • utils:公用方法。
    • interfaces:接口,命名以 I 作为开头。
    • listener:基于 Listener 的接口,命名以 On 作为开头。

为 Activity 定义新的生命周期

在 BaseActivity 中重写 onCreate 方法,将其分为:

  • initVariables:初始化变量,包含 Intent 带的数据和 Activity 内的变量。
  • initViews:加载 layout 布局文件,初始化控件,为控件挂上事件监听。
  • loadData:联网获取数据。

实体化编程

  • 使用 fastJSON 或 GSON 将后台返回的数据解析成实体,要以实体对象进行数据操作,不可对 JSON 数据进行手动取值或将 JSONObject 进行页面传递。
  • 使用工具将 JSON 数据转化为实体类,便于实体类的编写。
  • 在页面中使用实体进行跳转,避免使用全局变量,若必须使用全局变量,一定要将其序列化到本地中,当全局变量被回收时,能够从本地文件中恢复。

Adapter 模板

  • 创建 BaseAdapter,并且对于每个自定义的 Adapter,都要实现以下方法:
    • getCount()
    • getItem()
    • getItemId()
    • getView()
  • 使用 ViewHolder 机制进行控件复用

类型安全转换函数

  • 不可直接进行类型转换,如:

    int result = Interger.valueof(obj.toString());
    
    

    会导致以下问题:

    • 未判断 obj 是否为空,有可能出现空指针错误
    • 未对obj.toString()进行.trim()处理,有可能出现空格
    • 未对obj.toString()进行判断,有可能导致其里面包含非数字相关字符,从而导致转换出错。
  • 不可直接执行 substring 函数,需要判断 start 和 end 有没有越界。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值