文档章节

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

雪梦科技
 雪梦科技
发布于 2016/03/01 11:15
字数 1048
阅读 10
收藏 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来进行修饰。
结果: 导致可见性失控。
解决方案: 严格控制成员变量和成员方法的可见性,尽量缩小。

其他

想到再来补充。

© 著作权归作者所有

共有 人打赏支持
雪梦科技

雪梦科技

粉丝 20
博文 12
码字总数 6591
作品 15
海淀
程序员
私信 提问
【北京】知名互联网公司招Android/ios研发工程师

职位是中高端的,薪水20w+,欢迎大家踊跃投递简历 可发送到steven@lucky-hand.com 或加QQ284827193详聊,注明应聘 IPhone开发工程师 工作职责: 负责IPhone手机系统技术点的研究与IPhone手机...

ZhangSteven
2012/04/18
419
1
【广州】某互联网公司招聘Android应用工程师

Android应用工程师 薪酬:12k 工作地点:广州天河区 岗位职责: 负责Android应用软件开发 任职条件: 1. 精通Android手机应用软件开发,精通Android下C/C++ 程序开发,熟悉Android Java程序开...

Julycai
2011/11/21
748
11
广州-招聘手机网游开发人员(android,kjava,iphone,j2ee)

工作地点:广州-有兴趣小窗 公司:广州亿通 工作职责:参与大型手机网络游戏服务器端的开发 应聘要求: 1、具有强烈的工作责任心及团队合作精神,严谨的工作作风,良好的语言沟通能力。 2、计算...

JavaGG
2011/06/30
543
2
【上海】盛大游戏【Android 应用开发】

联系方式:jinxiaohuat@yahoo.cn(email) jinxiaohuat@hotmail.com(msn) 薪资水平:10K-15K,14薪,车贴,饭贴,房帖,补充公积金,bonus。 职位描述: 1、参与移动终端产品技术架构的设计...

amanda
2011/06/24
857
2
百纳(武汉)信息技术有限公司招聘C/C++ android/ios开发工程师

公司成立才两年,公司在北京武汉旧金山分别有研发基地和办公室,公司的主打产品海豚浏览器自2010年在android mark上架直今已斩获无数荣誉,国外著名媒体《PCworld》评选出了“2011年度最佳科...

杨永波
2012/01/17
1K
9

没有更多内容

加载失败,请刷新页面

加载更多

多表查询

第1章 多表关系实战 1.1 实战1:省和市  方案1:多张表,一对多  方案2:一张表,自关联一对多 1.2 实战2:用户和角色 (比如演员和扮演人物)  多对多关系 1.3 实战3:角色和权限 (比如...

stars永恒
今天
6
0
求推广,德邦快递坑人!!!!

完全没想好怎么来吐槽自己这次苦逼的德邦物流过程了,只好来记一个流水账。 从寄快递开始: 2019年1月15日从 德邦物流 微信小app上下单,截图如下: 可笑的是什么,我预约的是17号上门收件,...

o0无忧亦无怖
昨天
6
0
Mac Vim配置

1.升级 vim   我自己 MacBook Pro 的系统还是 10.11 ,其自带的 vim 版本为 7.3 ,我们将其升至最新版: 使用 homebrew : brew install vim --with-lua --with-override-system-vim 这将下...

Pasenger
昨天
8
0
vmware安装Ubuntu上不了网?上网了安装不了net-tools,无法执行ifconfig?

1.重新设置网络适配器还是不行,如下指定nat 2.还需要指定共享网络,我是在无线环境下 3.无法执行ifconfig https://packages.ubuntu.com/bionic/net-tools到这个网站下载net-tools的deb文件...

noob_chr
昨天
4
0
解决SVN:E210007无法协商认证机制

svn:E210007 svn: Cannot negotiate authentication mechanism 执行下面代码即可 sudo yum install cyrus-sasl cyrus-sasl-plain cyrus-sasl-ldap...

临江仙卜算子
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部