Android&Java实践总结

1. 心得体会


1.1 线程

  写代码时,需要至少考虑两个问题:UI线程与子线程。

    UI线程:主要处理UI线程的事情(这不是废话吗?)

    子线程:主要做网络连接、回调、文件IO等操作。

  备注:UI线程不能够被阻塞,不然会有ANR问题,每一个子线程都是有主线程创建出来的,但不依附主线程,而主线程的对象状态变化与主线程息息相关。

1.2 界面

  写代码时,不要贪图方便在xml中用一个ViewPager或者RecyclerView将功能全部整在一起。

  应该分清几个界面,以空间还效率,因为你永远不知道你的程序是否满足需求(提前沟通?扯淡去吧)或者说自己是否把异常情况都考虑进去。

1.3 异常情况处理

  1、基本功能测试;

  2、特殊测试【空指针异常(字符串空)、错误输入:例如、除数0、链表首尾】

  3、性能测试【最大最小值测试】

  备注:不要贪图方便,不做空指针异常判断与字符串长度为0的判断。(忘了做算法题的严谨了吗?)

1.4 资源回收

  尝试使用关键字try、finnally回收socket、文件资源。

1.5 考虑线程安全、同步、锁的问题

  同步-安全(同一时间只有一个线程能对数据进行操作),多线程对某个数据进行读写操作时,可进行保护使用锁或者关键字volatile。

  关于线程通信:wait、notify与notifyall。

1.6 若遇重复代码,立即想想应该如何避免重复。(showToast)

1.7 若遇需要多次改变的代码,想想能否抽象一个公用的接口,让实现类去具体实现。

  比如说图片库picasso、fresco,比如说要将picasso替换成fresco,每个使用到picasso的地方都要改动,一不小心就会改错。

  具体解决办法:定义接口,实现类实现接口,工厂类依赖接口实例化实现类。【预留变更,不强耦合于第三方框架】

1.8 显示与逻辑分开

1.9 牢记:单一职责、开放封闭原则、依赖倒转原则、里氏替换原则

1.10 遇到魔鬼数字或者魔鬼字符串,都应该定义为成员变量

  好处:避免一处修改,处处修改的问题。万一写少一个零怎么办呢?

1.11 尽量用MVP模式写代码

  ViewActivityFragmentDialogAdapter,该层不包含任何业务逻辑;

  Presenter:中介,View Model 不发生联系,都通过 Presenter 传递;

  Model相关的业务操作处理数据(如对数据库的操作、对网络等的操作都应该在Model层里)。

最重要一点:

  在需求不清晰的情况下,要去询问。【对于不清楚的知识点,要弄懂到会用,不断完善自己的知识结构、善于提问与主动积极。】

posted @ 2017-08-01 00:48  eeSiJian  阅读(188)  评论(0编辑  收藏  举报