AS自带的代码检测:Analyze——Inspect Code(英文提示错误类型、错误原因),利用插件Alibaba Java Coding Guidelines(汉化了)……
一些修改可以直接点击图中红色框框,会自动帮修改好,下面是整理好常见的规范:
1.所有数据get之前判空;eg:if (null != user){String userid=user.getUserId;}
2.判空的数据写在等号右边,且等号左右空一格;eg:null != user
3.onClick里面用:int i=view.getId();if—else if进行判断跳转
4.使用数据绑定时,在xml里面使用,Alt+Enter快速生成dataBing格式
5.中文字全部放在对应的module下的string,命名规则:
模块名_类名(Activity、Fragment不用)_属性(prompt(在布局输入错误)、Toast(跟后台校验后)、hint……)_意思(见名思意)
eg:module_login_login_prompt_loginSuccess(登录成功)
6.公共用到的方法抽离出来,布局中公用的也抽出来(eg:标题栏)
7.代码注释写在头上(能不写的就不写)
8.换行问题:业务逻辑、代码过长、声明变量不同类型时换行
9.定义变量不是对外开放的,都用private
10.能用单例就不用多例,能不用new就不用(耗性能)
11.Toast封装,自定义样式,调用时传上下文、显示的内容
12.数组的定义 String [] A
13.A.equals(B), A:调用方(一定不能为null),B:参数(可以为null)
14.if后面一定加{},即使只有一行代码
15.switch里面的default加说明为什么会进入这里再break,若只有一个case时,换成if,因为效率会快
16.未经定义的常量直接使用(魔法值),"AS".equals(UserName),当中AS就是魔法值
17.定义了却没有使用的要删除,包括xml定义的域名空间
18.编码格式不能写成"utf-8",写成StandardCharsets.UTF_8
19.只要拼接了String类型的,那么全部都是String,其它的不需要转成String,eg:1+"a"(1就不用转成string)
20.包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式
21.方法内部单行注释,在被注释语句上方另起一行,使用//注释。方法内部多行注释使用/* */注释。注意与代码对齐。
22.所有的类都必须添加创建者信息。
23.在一个switch块内,每个case要么通过break/return等来终止,要么注释说明程序将继续执行到哪一个case为止;在一个switch块内,都必须包含一个default语句并且放在最后,即使它什么代码也没有。
24.利用SharePreference进行put、get时,中间加入工具类进一步封装,key用枚举来,这样子保证整个项目的key唯一(防止用太多key,会有重复的可能),put、get的key可以快速知道。
public static void setValue(Object value, SPKeyEnum key) {
SharePreferenceUtils.put(AppMgr.application, key.getKey(), value);
}
public static Object getValue(SPKeyEnum key, Object defaut) {
return SharePreferenceUtils.get(AppMgr.application, key.getKey(), defaut);
}
25.项目中同一常量用处相似的,要放在常量管理类里面;eg:请求网络成功为10000,这个10000要放在AppConstant.java里面,public static final int REQUEST_SUCCESS=10000;
26.安全性代码:在管理类里写个开关,不能写在用处,不然一下子忘记注释就尴尬了;还有一些功能,可以随时隐藏,不用大量去删、注释代码,比如是否使用沉浸式状态栏,eg:
/*是否使用本地数据配置*/
public static boolean isLocalHost() {
if (AppMgr.debug) {
return true;
} else {
return false;
}
}
27.Lambda表达式