文档章节

Android应用开发中的不良编程习惯

snowdream
 snowdream
发布于 2016/03/01 11:15
字数 1048
阅读 9
收藏 0

同步发布在:http://snowdream.github.io/blog/2016/02/18/android-bad-habit/

下面总结下Android应用开发中的不良编程习惯,欢迎对号入座。

不注意NULL判断

原因: 粗心。 在不确认一个对象是否为Null的前提下,就大胆调用该对象的成员变量或者成员方法。
结果: 空指针异常。
解决方案: 细心。 参考:防止NullPointerException的最佳解决方案

滥用变量

原因: 滥用变量。 定义很多变量,而且变量名字并不能表达变量的意思。
结果: 代码难以理解,维护困难。
解决方案: 规范变量命名,尽量让名字能表达变量的意思。同时,变量应该在于精,而不在于多。

函数的重复调用

原因: 函数功能不清晰,搭车调用其他函数。举个例子,假如:函数A,B,C。 函数B中调用函数C,函数A中调用函数B。最后使用的时候,同时调用函数A,C,造成函数C被调用多次。
结果: 轻者,造成程序性能下降,耗时,耗电。重者,导致程序逻辑混乱,造成各种意想不到的BUG。
解决方案: 函数功能单一,并且稳定。

耗时操作/IO操作放在子线程

原因: 贪图快,把耗时操作/IO操作放在主线程执行。
结果: 轻则造成应用卡顿,重则出现ANR,导致应用崩溃。
解决方案: 将所有耗时操作/IO操作封装到子线程去。

拷贝函数/代码

原因: 有时候因为项目紧,开发任务中。在开发新功能时,经常将已有功能代码,拷贝过来改改,却没注意有部分内容需要修改或者去掉的。
结果: 功能不符合预期,导致BUG。
解决方案: 能重用的代码抽取出来公用。拷贝的时候,一定要过一遍,切记拿过来直接用。

滥用设计模式

原因: 当维护一个项目的人员比较多时,容易发生。你想用MVP,他想用MVC,别人还要用MVVM。
结果: 项目代码出现百家争鸣,百花齐放的现象。难以维护。
解决方案: 统一设计模式,便于开发维护。

保留大量废弃代码/功能

原因: 有可能是产品反复增加/删除某个功能,或者其他原因,导致开发人员不敢删除废弃代码。
结果: 无故增加代码量和方法数,增加阅读和维护成本。
解决方案: 废弃功能/废弃代码统统删掉。自觉抵制产品反复增加/删除同一个功能。

代码风格不统一

原因: 使用不同的代码风格,同时又喜欢整个文件进行格式化。
结果: 版本管理困难。 合并/比较代码时,满屏幕都是不一样代码。
解决方案: 统一代码风格。否则,不要尝试对整个文件进行格式化。

函数臃肿

原因: 函数体代码太长,成百上千行的都有。
结果: 代码阅读困难。
解决方案: 拆分成多个小函数。

函数命名随意,不规范

原因: 函数命名随意,不规范,又没有注释。
结果: 一眼看过去,不知道这个函数干什么的。需要读完整个函数才知道函数的功能。
解决方案: 函数命名尽量能体现函数的作用。如果无法完整体现,加函数注释,说清楚函数的作用,以及参数的含义。

硬编码

原因: 在java代码中直接写字符串,而不定义在string.xml。
结果: 不利于字符串重用和国际化。
解决方案: 将字符串都定义到string.xml。

可见性控制不当

原因: 不注意控制成员变量和成员方法的可见性,都是用public来进行修饰。
结果: 导致可见性失控。
解决方案: 严格控制成员变量和成员方法的可见性,尽量缩小。

其他

想到再来补充。

© 著作权归作者所有

共有 人打赏支持
snowdream

snowdream

粉丝 20
博文 12
码字总数 6591
作品 15
海淀
程序员
开发者必知:提升Android应用开发性能的十大要点

随着任何一个移动平台不断发展、围绕它的应用程序不断改进,要想开发成功,质量变得至关重要。如今,用户们要求他们决定安装到自己设备上的Android应用程序反应迅即、性能合理。如果那些应用...

冯京宝
2012/07/05
0
0
提升Android应用开发性能的十大要点

虽然Android智能手机和平板电脑的速度一天比一天快,但是开发者必须记住一点:他们开发的应用程序仍在一种资源紧张的环境下运行,这种环境主要依赖性能与最新的台式机或笔记本电脑无法比拟的...

带梦想一7飞
2012/08/24
0
0
【社招】招聘高级多媒体工程师-一家拥有15亿用户量的出海互联网企业

感兴趣的小伙伴请加我微信(2200624973) 岗位职责: 1、参与或者独立承担 Android 平台上媒体处理相关功能的设计、实现、测试及功能维护,参与或者独立承担方案或者架构选型。 2、参与产品的...

弓小嘿
05/17
0
0
10个常见的Android新手误区

1、不读Android开发文档 Android开发者网站可以很好的帮助你。很多的文档也可以通过SDK工具下载。这些文档不仅仅是Javadoc API的参考,它包括许多指南、教程、视频、培训以及其他有用的资料来...

庸人谷
2012/12/11
0
0
Kotlin 普及度增加,代码质量比 Java 更高?

Google 在 I/O 2017 上宣布 Android 加入了对 Kotlin 编程语言的支持。如今,在所有开源的 Android 应用程序中,我们能发现有 12% 都是由 Kotlin 开发。Google 在 2017 年底表示 Kotlin 已经...

达尔文
08/20
0
9

没有更多内容

加载失败,请刷新页面

加载更多

兄弟连区块链教程之以太坊源码分析交易数据分析

交易的数据结构 交易的数据结构定义在core.types.transaction.go中,结构如下: type Transaction struct {data txdata// cacheshash atomic.Valuesize atomic.Valuefrom atomic.V...

兄弟连区块链入门教程
16分钟前
1
0
Tomcat优化经验之谈

Tomcat优化经验之谈 程序员小新人学习 2018-07-23 12:09:36 由于刚做完一个tomcat,jboss,Oracle性能优化项目,想做个总结。写写项目过程中对他们优化过程的理解。 tomcat安装配置就不讲啦(...

两广总督bogang
23分钟前
2
0
Spark中foreachPartition和mapPartitions的区别

spark的运算操作有两种类型:分别是Transformation和Action,区别如下: Transformation:代表的是转化操作就是我们的计算流程,返回是RDD[T],可以是一个链式的转化,并且是延迟触发的。 Ac...

张泽立
26分钟前
2
0
git reset 和 git revert, git log 和 git reflog 比较

前言:仙儿苦设相思局,寻欢误入冷香处 故事背景: 那一晚 月黑风高之夜 李寻欢 在自诩为江湖正义的一群伪君子设计好的圈套(repository)中做了(commit)三件事:              ...

猿神出窍
36分钟前
1
0
kotlin使用spring mvc(一)

过滤器Filter,是Servlet的一种技术。可通过Filter,对请求进行拦截,比如判断用户是否登录、验证黑名单等并且可对请求进行预处理。 接下来介绍使用WebFilter配置过滤器并实现读取cookie判断...

weidedong
40分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部