1.13Android 学习+进度之十三-删除冗余代码+注释+分析设计方法

本文介绍了Android代码规范的实施步骤,包括类名、方法命名、编码格式、控件ID命名等方面。通过遵循新浪SDK的开发规范,调整IDE设置,如将Tab改为4空格,优化类的成员对象写法。在实践中遇到的问题,如Service Intent的配置、线程安全的Socket传递,以及在Adapter中避免NullPointerException的方法。最后,作者计划完善注释,修复bug,并分享最终成果。

终于到了,规范化代码的时候。第一步,把该删的删,命名也规范,加注释。

有个链接存一下,号称是新浪sdk的开发规范http://glblong.blog.51cto.com/3058613/1677101/

第一步,下载了一份10多页的文档,看看。

1.类名:大驼峰写法MainActivity。

方法函数:小驼峰,除了首单词外,其余单词首字母大写getText

常量:MSG_TYPE

成员变量(非公有):mXXX(mTextBlank)

局部变量:lxxxx

形参:axxxxx

静态:sxxxx(private static MyClass sSingleton)

2.编码方式UTF-8设置方式:http://jingyan.baidu.com/article/d8072ac463b206ec95cefdd5.html(androidstudio)

3.花括号,android自带的就行 xxx() {(记得空一格) 4.if(xxx){ (都要有个空格,else for,switch,while都是)

5.运算符 int result = a + b;(可以),方法的每个参数也要空格 function xx(int a,int b)

6.两个方法之间最好加个空行,一个函数内,方法内的逻辑段也最好有空行;方法内局部变量和方法的第一条逻

语句;常量与变量之间。

7:表达式太长,方法太长记得换行。

8:变量声明,一行不能声明多个。

9:一个方法代码行数不要超过40行,超过尽量封装起来。(这个。。。)

10:范围型用枚举类定义,而不要直接用整形或者字符,减少范围有效性的检查。

11:包名字com+公司+应用缩写+模块名称com.fujisu.chatapp.mainactivity.

12:类名,Activity类,LoginActivity;fragment,ShareDialogFrament;service,DownloadService;adapter,

ListAdapter。 13:初始化方法:initView();按钮点击方法:toLogin;设置方法,setData;获取getData;布尔型判断:

isEmpty;保存数据saveData等。

14:控件的id命名(范围_模块名称_逻辑名称_缩写:login_signin_btn):TextView:txtVi;EditText:edtTxt;

Button:btn;ImageButton imgBtn;ImageView imgVi;LisetView listVi;RadioGroup rdoGrp;RadioButton rdoBtn;

ProGressBar proBar;SeekBar skBar;等等


开始实操:

tab先改4空格:https://zhidao.baidu.com/question/755445874218994204.html

修改类的成员对象写法:效果:

感觉要炫酷一点。在设计到client时,看了个帖子http://blog.youkuaiyun.com/91program/article/details/39312131

说是真实情况,都是service去实现socket。我决定根据帖子的架构来改代码。感觉他的思路就是让socket活在service

然后消息传递靠socket广播,我之前也想socket广播的,感觉这样简单,但是好像是报错,看这个帖子貌似依旧可以。

我改改。再给个链接,感觉也不错http://blog.youkuaiyun.com/android_jiangjun/article/details/39928243以及

http://blog.youkuaiyun.com/zhouzhiwengang/article/details/15813275所以,广播要更新UI,最好还是搞成内部类

然后是开启关闭服务http://www.jb51.net/article/78417.htm

改了大半天,终于可以开始debug了。

首先碰到的第一个问题。按照我之前的链接,service,加个action啥的,但是会报错,

java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.Chenggongf.service (has

extras) }查阅后,一种说法是5.0以上必须显示,不能隐式。终于跑通了第一个流程。可以自由登录,下线,而且登录

点击返回也是退出,不回出现错了。

下一个步骤,就是还原原来的。完成一步,登录后,显示列表,下线就没了。两个都登录,互相下线也没问题。

下一步是加新的Activity。问题又来了,传递sokcet,这次打算用service传。看了一些,然后并做不出来,现在想改

用消息队列去做了。

刚刚试了把Thread设成static,这样所有的都可以直接获得,但是我感觉这样做,具备线程不安全性,因为

socket是不能这么发的。我觉得不如,让一个线程安全的队列全局化,然后socket就是从队列里拿数据,处理发,

就是和服务器差不多。我觉得这个思路会比较合理一点。其实之前用什么App来传递socket,我觉得都会有线程不

安全性。队列应该是最好的。

暂时用static队列实现了各个Activity都可以发送消息,并且不会冲突。

2017.7.24碰到这么个问题java.lang.NullPointerException:Attempt to invoke virtual method 'int android.view.

View.getImportantForAccessibility()' on a null object reference。

参考链接http://www.iboxshare.com/2016/04/android-view-view-getimportantforaccessibility/。貌似是自己自定义

adapter的时候返回view为null的错误。经过改进,的确是这个问题,写的时候,想成C++的指针了,因此,函数

多了之后有点不好控制。要注意返回值。

好了,终于改完了,接下去,解决一些明显的bug,加注释,最后再贴效果图和源码。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值