0%

Android 代码规范

概述

本文档主要用于帮助Android开发人员规范代码及资源文件命名等,使大家尽量保证一个整洁的编程风格。

Java 命名规范

本命名规范主要基于骆驼命名规则(对于这个都保证不了的代码简直不能忍)。

不要使用拼音命,避免使用缩写

# 所有的名称命名应该简洁而富有意义,尽量使用完整单词。增加必要的注释。

# 除非该缩写被更广泛的使用,例如URL、HTML。

包的命名

# 包名由小写的字母组成,例如以 cc.solart.<业务模块名>.<子模块名>命名

# 一个模块是一个功能相对独立的模块,应谨慎创建新的模块名

类的命名

# 类名的首字母必须大写,如果由多个单词组成,多个单词直接连接,每个单词的首字母必须大写,其他字母小写。例如:public class LoginActivity

# 类的域定义考量, 非公开类不要用public(注意类的有效作用域)

抽象类、接口的命名

# 对于抽象类,职责比较单一的以Abs开头,例如:AbsJsonRequest,只包含单一的网络请求;对于一些基类抽象封装一般采用Base开头,例如BaseActivity。

# 对于有明显接口特征的接口(如后缀含有Listener/Observer),参考类命名规范即可,例如:public interface ResponseListener。

# 对于没有明显接口特征的接口命名,首字母统一为大写 I,其它单词首字母大写, 例如:public interface ILocation。

方法及参数的命名

# 方法名的首字母必须小写,遵循驼峰命名。public void checkAuthToken()

# 方法参数名以该参数功能命名,格式同方法名命名规则相同。 public void checkAuthToken(String token)

常量的命名

# 用 final static 修饰,名称都大写,多个单词以下划线 “_” 连接,如:public final static String HTTP_HOST = “http://127.0.0.1:8080/“; 。

变量的命名

# 非 static 的成员变量,命名必须写'm'前缀,如:public Handler mHandler;

# static修饰的成员变量,命名必须写's'前缀,如:public static String sAppKey;

# 枚举变量使用用'e'前缀,如 private Weekday eWeekday;

# 局部变量命名首字母小写即可,采用驼峰命名,如Context context;

Android资源文件命名规则

规范资源文件命名,统一风格。

文件命名

# res/layout目录下文件:统一以布局类型开头,用小写和下划线”_”组合命名,如:首页 xml 布局文件: 例如:

1
2
3
4
  activity_home.xml # HomeActivity页面布局
fragment_account.xml # AccountFragment布局
item_tips.xml # Adapter item布局

# res/drawable目录下文件:统一用小写加下划线”_”组合命名,同上,每个资源文件加前缀以便区分用途。如:

1
2
3
4

bg_selector_normal.xml

icon_submit_default.png

资源 ID 命名

# @id/@+id 名称的必须全部小写,单词之间用下划线隔开,名称不需要复杂的层级定位,只要准确描述所代表控件的功能作用即可,在名称使用当前控件类型的缩写作为前缀。例如:@+id/tv_name。

# res/values/demins: 统一用小写加下划线”_“组合命名,定义距离通用值,定义字体大小通用值,其他颜色统一用sp/dp_<数值>表示。

1
2
3
4
5
6
7
8
9
10
11

<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="fab_margin">16dp</dimen>
<dimen name="app_bar_height">180dp</dimen>
<dimen name="dp_1">1dp</dimen>
<dimen name="dp_2">2dp</dimen>
<dimen name="dp_3">3dp</dimen>
<dimen name="dp_4">4dp</dimen>
<dimen name="dp_5">5dp</dimen>
<dimen name="dp_16">16dp</dimen>

# res/values/colors: 统一用小写加下划线”_“组合命名,定义通用的背景色bg_color,定义字体通用色值,其他颜色统一用app_<色值>表示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
  <!--载体颜色-->
<color name="bg_color">#E5E5E5</color>
<!--Material design color-->
<!--正常字体87%透明黑色-->
<color name="font_color_normal_black_87">#DD000000</color>
<!--正常字体54%透明黑色-->
<color name="font_color_light_black_54">#89000000</color>
<!--不可用状态使用的颜色26%透明-->
<color name="font_color_enable_black_26">#42000000</color>

<!--其他非通用色值 采用app_<小写色值编码>命名即可,value色值字母大写-->
<color name="app_d2322a">#FFD2322A</color>
<color name="app_f36754">#FFF36754</color>
<color name="app_d4503e">#FFD4503E</color>

编码风格

一般性说明

# 方法体行数不得超过 40 行(一般来说40行绝对够用,且易于维护);
# 除去缩进长度,单行长度不得超过 100 个字符
# 圈复杂度不能超过 2 层
# 单个文件长度一般不超过 1500 行(第三方代码除外);
# 公开 API 中所有参数都必须进行有效性验证;
# 每次代码提交之前必须删除大量无效代码,去除无用的类import;
# 使用第三方API增加异常捕获,降低使用风险。