部分参考自:https://hawstein.com/2014/01/20/google-java-style/ 以及Android源码
必须遵守
- 宏定义:使用static final修饰,名字全大写
private static final int PICK_IMAGE_REQUEST_CODE = 100;
- 常量写在类的最前面,变量写在常量后面
- 日志打印规范
- 格式:前缀使用应用名加下划线,Sdk使用应用名加Sdk名加下划线,TAG使用类名;
比如日历应用:Calendar_CalendarApplication
- 有异常或提前返回时打印,正常逻辑一般不打,视情况而定
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
if (am == null) {
LogUtil.e(TAG, "terrible, am is null!");
return;
}
- 捕获异常:禁止调用系统接口printStackTrace():[参考https://blog.csdn.net/lc11535/article/details/115363008]
try {
......
} catch (Exception e) {
//e.printStackTrace(); 禁止使用
LogUtil.e(TAG, "something is exception : " + e.toString());
}
- 重写父类接口:加上@Override, 方便理解
- 判断语句执行的代码块,必须加上{},即使只有一行,包括if、while、switch...case等
boolean find = false;
if(state) {
find = true;
}
- switch...case语句必须加上default操作
switch(state) {
case state0: {
break;
}
default : {
break;
}
}
- 内部类放在类的最后面,接口放在变量后面,构造方法前面
- 实现了父类接口的变量放在一般变量后面,函数前面
private EditText mEditText;
private Handler mHandler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
default:{
break;
}
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
- 每次只声明一个变量
- 类名或接口通常是名词或名词短语,第一个字母大写
- 方法名通常是动词或动词短语,第一个字母小写
- 参数名:参数应该避免用单个字符命名
- 字符串的连接:超过两个字符串的连接,使用StringBuilder或StringBuffer(同步)
强烈建议遵守
- 尽量使用正向判断,而不是负向判断,因为正向更容易理解
//不建议这样做
if (!TextUtils.isEmpty(path)) {
mMediaPlayer.prepareAsync();
} else {
mMediaPlayer.reset();
}
//建议这样做
if (TextUtils.isEmpty(path)) {
mMediaPlayer.reset();
} else {
mMediaPlayer.prepareAsync();
}
- 避免使用静态变量
- 代码格式化使用Android Studio默认即可