前言

统一、规范的命名有助于提升项目协作效率,也让代码的可读性、可维护性变得更加友好。
这里根据Google Android编程规范来对公司客户端研发输出一份相对全面、清晰的Android代码命名规范,如有异议,欢迎批评指正。


关于注释

在开发过程中,类、生僻对象命名、方法原则上都要加上相关注释,说明含义、用途。


各对象暂定的命名规范

  • 项目名称(Project name)

    • 命名规则:大驼峰式命名,单词间连续无间隔;
    • 示例:如新建一个名为BaiYaoWanJia的项目。
  • 模块命名(Module-Library name)

    • 命名规则:Library name采用大驼峰式命名,单词间连续无间隔,Module name会自动生成,不需修改;
    • 示例:Module.png
    • 命名规则:小写、单词间连续无间隔,3级包名一般为applicationId或Module的根目录,4级包名对应不同的细分模块。
    • 示例:
      • 3级包名applicationId:一般为com.公司名.项目名,如com.dohenes.bywanjia 或 com.公司名.Module name,如com.dohenes.shop;
      • 4级包名:com.公司名.项目名/Module name.xxx,具体可参考下图4级包名示例1.png
    • 命名规则:大驼峰式命名,可使用单词或者单词简写,在具体命名类时,会根据该类的类型不同而附加额外的命名规则;
    • 示例:
    类目 类型 命名规则描述 命名示例
    普通java类 java类 大驼峰式命名法 GetTime
    Android相关 基类 Base + 类别 / 功能 BaseActivity / BaseFragment / BaseAdapter
    Activity 模块名 + Activity LoginActivity
    Fragment 模块名 + Fragment LoginFragment
    BroadcastReceiver 功能名 + Receiver BootBroadcastReceiver
    Service 模块名 / 功能名 + Service LoginService / BLEService
    自定义对话框Dialog 功能名 + Dialog TipsDialog
    自定义View Custom + 功能名 + 组件名称(继承的组件名) CustomToast / CustomLayout
    自定义Widget 功能名 + Widget LoginWidget
    数据适配器类 功能名 + Adapter WeatherAdapter
    工具类 功能名 + Util/Manager StringUtil / DatabaseManager
    帮助类 功能名 + Helper DBHelper
    解析类 功能名 + Parse GsonParse
    异常类 以Exception结尾 LoginException
    接口 多以able或ible结尾,也可在类名前加I标明 Runnable / Accessible / ILogin
    回调 功能名 + Callback LoginCallback
  • 变量

    • 命名规则:小驼峰式命名,在具体命名变量时,会根据该变量的类型不同而附加额外的命名规则;
    • 示例:
    类型 命名规则描述 命名示例
    变量 m + 单词名 private int mCount
    静态变量 前缀添加s private static int sCount
    临时变量(代码块内的) 小驼峰式命名 int count
    常量 CONSTANT_作用名 CONSTANT_KEY_NAME
    Android UI控件 m + 控件缩写 + 功能描述 mTvTitle / mBtnLogin
  • 方法

    • 命名规则:小驼峰式命名,在具体命名方法名时,会根据该方法名的作用不同而附加额外的命名规则;
    • 示例:
    功能 命名规则描述 命名示例
    初始化 init + 单词 初始化布局:initView()
    判断 / 校验,返回至为boolean is + 单词 / check + 单词 可见性:isVisible() / checkKey()
    显示/弹出提示框 show + 单词 显示提示信息:showTips()
    重置数据 reset + 单词 重置用户数据:resetUserData()
    保存数据 save + 单词 保存用户名:saveUserName()
    获取数据 get + 单词 获取用户名:getUserName()
    清除数据 clear + 单词 清除用户名:clearUserName()
    移除数据 remove + 单词 移除用户数据:removeUserData()
    绘制相关 draw + 单词 绘制线条:drawLine()
  • 参数

    • 命名规则:小驼峰式命名;
    • 示例:如userName,phoneNumber等。
  • 资源

    • 布局资源(布局文件单词都要小写,中间用下划线_隔开)
    类型 命名规则描述 命名示例
    activity布局 activity_单词 activity_main
    fragment布局 fragment_单词 fragment_main
    dialog布局 dialog_单词 dialog_tips
    popupwindow布局 pw_单词 pw_net_error
    列表子项布局 item_单词 item_message
    • 控件ID
    类型 命名规则描述 命名示例
    TextView 模块名_控件缩写_功能单词名 login_tv_title
    EditTextView login_et_userName
    ImageView login_iv_userHead
    Button login_btn
    CheckBox login_cb_status
    RadioButton login_rb_gender
    ListView main_lv_message
    GridView main_gv_cards
    LinearLayout login_lt_header
    RelativeLayout login_rl_header
    FragmentLayout / TableLayout / ConstraintLayout 简写对应 fl / tl / cl
    • 图片资源
    类目 类型 命名规则描述 命名示例
    Drawable / mipmap资源 普通图标 ic_具体模块_功能 R.drawable.ic_user_login / R.drawable.ic_launcher
    背景资源 bg_具体模块_功能 R.drawable.bg_login
    样式选择器(selector) selector_具体模块_适用范围 R.drawable.selector_login_btn
    样式形状(shape) shape_具体模块_适用范围 R.drawable.shape_login_btn
    • 动画资源
    类型 命名规则描述 命名示例
    补间动画 动画类型_方向 淡入:fade_int;淡出:fade_out
    其余动画 模块名_动画名 login_jump
    • Values资源
    类型 命名规则描述 命名示例
    color 模块名_color login_color
    style 模块名_style login_style
    theme 模块名_theme login_theme
    string 模块名_作用名 user_name

关于App打包命名

release版本在项目混淆、加固(目前采用360加固)的基础上,按照以下规范命名,其它情况不考虑:
【Android】apk打包命名规则交流篇