Skip to content

Android 开发规范

命名

类名

使用驼峰命名法,例如 DataHolder,相同的组件内的类带有同样的后缀。

组件 后缀 示例
Activity Activity MainActivity
Fragment Fragment MainFragment
Service Service PushMessageService
Adapter Adapter RecentMessageAdapter

字段

  1. 非 public 且 非 static 字段名称以 m 开头; 例如:mAdapter

  2. static 字段名称以 s 开头;

例如:sSington

  1. 常量使用全大写且用下划线进行分割‘ 例如:REQ_PERMISSION

  2. 数组命名以 array 为后缀 例如:titleArray

  3. List 命名以 list 为后缀

例如:nameList

  1. Map 命名以 map 为后缀

例如:infoMap

对于 JavaBean 中字段,可忽略。

参数命名

SharePreferences、Bundle、Intent 等传递的参数

Elements 前缀 示例
SharePreference PREF_ PREF_TOKEN = "PFEF_TOKEN"
Bundle BUNDLE_ BUNDLE_USER_ID = "BUNDLE_USER_ID"
Intent Extra EXTRA_ EXTRA_USERNAME = "EXTRA_USERNAME"
Intent Action ACTION_ ACTION_OPEN_HOME = "com.myapp.action.ACTION_OPEN_HOME"

资源文件

  1. Layout 命名
组件 前缀 示例
Fragment fragment_ fragment_setting
Activity activity_ activity_main
Dialog dialog_ dialog_sign_up
Adapter View Item item_ item_timeline
  1. drawable 命名
状态 后缀 示例
normal _normal btn_login_normal
pressed _pressed btn_login_pressed
disabled _disabled btn_login_disabled
selected _selected btn_login_selected
  1. id 及对应字段命名 命名规则:控件缩写 + 位置 + 职责
控件 前缀 示例
TextView tv_ tv_login_app_name
ImageView iv_ iv_sign_avatar
Button bt_ bt_Login_login
CheckBox cb_ cb_sign_gender
RadioButton rbt_ rbt_sign_gender_male
RecyclerView rv_ rv_recent_message
RelativeLayout rl_ rl_sign_container

如果布局为根布局,id 为前缀 + 位置 + root,例如:rl_sign_root

  1. String 命名

  2. 与 id 命名相似,去掉前缀缩写即可。例如:sign_title

  3. 对于一些通用的 String 建议使用通用名称,规则:all_ + 职责,例如:all_dialog_positive
  4. 对于每个页面的 title 的命名,规则是:title_ + 页面,例如:title_sign_up

  5. color 和 dimen 的命名

  6. 尽量定义成通用名称,例如:title_txt_colorsub_title_size

  7. 若某些场景下单独使用,使用前缀区分,例如:login_title_size

代码风格

  • 单行代码

如果条件语句只有一行推荐写法:

if (NetWorkUtils.isConnect()) {
    doSomeThing();
}
  • 方法块
  • 单个方法行数不建议超过 40 行;
  • 两个方法中间保持一行空行;

注释

推荐优先使用方法注释或字段注释,例如:

/**
 * 此处写方法注释
 * @param stringList 参数注释
 * @return 返回值注释
 */
public static List<RequestBody> totoRequestBodyList(List<String> stringList) {
  ......
}
/**
 * 此处写字段注释
 */
private EditText etMessage;

若方法或字段被废弃不推荐使用,应在方法或字段上增加 @Deprecated 注解,并在注释中声明应该使用的方法或字段。

其它

xml 中优先使用使用自带的关闭标签:

推荐:

<TextView
    android:id="@+id/tv_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="发送给:张三"/>

不推荐:

<TextView
    android:id="@+id/tv_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="发送给:张三">
</TextView>

Git Commit 规范

  1. 建议每次 commit 文件数量不超过 5 个;
  2. git commit 规范参考:Git 提交规范

Commit 内容规范

<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>
  • type

  • 用于说明 commit 的类别,只允许使用下面7个标识。

    feat:新功能(feature)
    fix:修补bug
    docs:文档(documentation)
    style: 格式(不影响代码运行的变动)
    refactor:重构(即不是新增功能,也不是修改bug的代码变动)
    test:增加测试
    chore:构建过程或辅助工具的变动
    
  • scope

  • 用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。

  • subject

  • commit 目的的简短描述,不超过50个字符。

    1.以动词开头,使用第一人称现在时,比如change,而不是changed或changes
    2.第一个字母小写
    3.结尾不加句号(.)
    

Body

Body 部分是对本次 commit 的详细描述,可以分成多行。下面是一个范例。

  1. 修复密码输入框的字符长度限制问题;
  2. 修复密码合法性验证规则;