Code Review&编程习惯,2021最新Android算法相关面试大全

凡是会抛出异常的地方都进行捕获,你可以在catch中处理异常,如果不想处理则throw这个异常,由调用者去try-catch处理:

涉及到资源关闭的记得在finally中关闭资源:

另外不要在循环体中捕获异常,放在最外层,以提升性能。

2. 空指针,千万不要理所当然的以为一个对象不会为空,在使用一个变量之前一定要进行判空处理,做好充分的容错处理。

3. 数组越界,使用数组、List之前检查索引和长度。

4. 魔鬼数字:直接写在代码里的数字,一定要用常量符号代替。

5. 对于可以复用的部分,提取成共用的方法或工具类,减少代码量。

6. 删除无用的变量和无用的引入。

7. 代码中的中文字符串最好统一在strings.xml中定义。

8. 所有Activity可继承自一个BaseActivity,便于统一行为管理,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有效。

9. 数据库表段字段常量和SQL逻辑分离,更清晰。

10. 全局变量放全局类中,模块私有放自己的管理类中,让常量清晰且集中。

11. 不要相信庞大的管理类的东西会带来什么好处,可能是一场灾难,而要时刻注意单一职责原则,一个类专心做好一件事情。

12. 多线程操作数据库时,db关闭了会报错,可能出现互锁的问题,使用事务。

13. 开始之前考虑哪些可以公用,资源,layout,类,做一个结构/架构分析以加快开发,提升代码复用度。

14. 关于形参实参:参数为基本类型传的是传值;参数为对象传递的是引用,即传址,这种改变会作用于原来对象。

15. 控制Activity的代码量,保持主要逻辑清晰。其他类遵守SRP(单一职能),ISP(接口隔离)原则。

16. Log请打上Tag,调试打印一定要做标记,能定位打印位置,否则会尴尬不知道是哪里在打印。

17.与Activity通讯使用Handler更方便; 如果你的框架回调链变长,考虑监听者模式简化回调。

18. 构造函数里面不推荐启动异步线程,会埋下内存隐患。

19. UI显示注意内容过长的情形要提前使用Scr

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

**开源项目:【qq.cn.hn/FTe】 **

ollView否则在小手机上尴尬你懂得。

20. String的比较用equals,不要一时犯傻用了==。

21. Long a; 判断a有没有赋值,if(a == 0)在a没有赋值情况下会报错。应该if(a == null),Integer、Floag等也一样。

22. 编码遇到读写、出入等逻辑要双向考虑,文件导入导出,字符字节相互转换都要两边转码。

23. 从资源文件或者文件加载一张图片时注意其宽高,避免OOM, bitmap的内存占用是宽x高x单位像素占用字节(RGB565是2个字节,ARGB8888是4个字节)。

24. 对于并不那么注重访问性能的较小集合而言,List 则是合理的选择。for循环对下标没有要求的优先使用foreach循环。

25. 选择正确的集合类型使你能够在集合性能与内存占用之间达到合理的平衡。例如某些情况下用SparseArray代替HashMap。

26. 充分利用封装(提供接口类来控制访问数据)和委托(helper对象来实施任务)两种理念。

27. 当逻辑没有明显问题时考虑对象属性、函数参数、网络传输参数是否全部了解,是否设置正确。

28. 拼接字符串避免String进行频繁+操作,应该使用StringBuilder提升性能,多线程使用StringBuffer操作string提高程序效率。

29. 基本数据类型定义的变量称自动变量,存的是‘字面值’,存在于栈中,可共享(存在即不新建)。

30. 只要是用new()来新建对象的,都会在堆中创建,而且其数据是单独存值的,即使与栈中的数据(值)相同,也不会与栈中的数据共享。

31. 能复用同一个对象处理的尽量复用,不要使劲的在那里new对象,内存吃不消,尤其是for循环等。

32. 改变逻辑的时候考虑全部用到这项功能的地方,分散的地方多了可能会忘记,不要为了填坑而挖了一个坑。

33. 不要在布局文件xml中使用onClick属性,如果你忘了在代码中声明onClick方法就会悲剧。

34. 注意参数的++或者–操作的区别。

35. 服务端可以实现的,就不要放在客户端。

36. 引用第三方库要慎重,避免应用大容量的第三方库,导致客户端包非常大。

37. 重复类似的功能在统一个类中去实现,而不是重复的去new一个相同类的实例,如activity中在一个View.OnClickListener中处理所有的逻辑,接口回调在同一个callback中处理。

38. 多用组合,少用继承。

39.  合理布局,有效运用 ,、等标签。

40.  尽量采用懒加载的策略,即在需要的时候才创建。

41.  尽量使用HashMap、ArrayList、StringBuilder,除非线程安全需要,否则不推荐使用Hashtable、Vector、StringBuffer。

42.  可以使用局部变量代替的,尽量不去创建全局变量。

43.  一个接口可以解决的事,尽量不去导入一个框架。

写在最后

本次我的分享也接近尾声了,感谢你们在百忙中花上一下午来这里聆听我的宣讲,希望在接下来的日子,我们共同成长,一起进步!!!

最后放上一个大概的Android学习方向及思路(详细的内容太多了~),提供给大家:

对于程序员来说,要学习的知识内容、技术有太多太多,这里就先放上一部分,其他的内容有机会在后面的文章向大家呈现出来,不过我自己所有的学习资料都整理成了一个文档,一直在不断学习,希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!

为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!

Android架构师之路很漫长,一起共勉吧!

如果你觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。

为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!

Android架构师之路很漫长,一起共勉吧!

如果你觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。

[外链图片转存中…(img-5nSN3CXG-1641560564485)]

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值