Android 命名规范与编码风格

在团队开发项目中,统一的命名规范与编码风格非常重要,只有这样才像一个优秀团队开发的产品。而且这样方便阅读其他人的代码,便于后期维护。我觉得 Android 源码的可读性很好,风格统一,而在实际项目中经常看到混乱的风格,缩进有的是tab有的是space,命名有的是中文拼音有的是英文,看上去非常的乱。相信大家都喜欢简洁整齐的代码,这就需要团队成员稍微牺牲下个性,遵守统一的规范,自己读起来也赏心悦目。下面我根据自己的一些编码规范和网上的一些资料整理出一套 Android 命名规范,至于编码风格是根据 Google 的提供的 Android code style 略微修改而成,直接在 Android Studio 导入即可, 所以下面主要是介绍命名规范内容。

Android 命名规范

下面的命名规范,有些是我个人习惯,有不喜欢的地方可以复制后修改即可,做到简单易记就好,便于团队成员遵守。

基本命名方式

  1. 大驼峰命名法(UpperCamelCase):所有单词的第一个字母大写

  2. 小驼峰命名法(lowerCamelCase):除首单词外,其余所有单词的第一个字母大写

  3. 下划线命名法(case1_case2):单词与单词之间用下划线间隔,所有单词小写

一般建议用来命名的单词简单明了,不要用中文拼音,找个词典翻译下还能提高自己英文水平。有些单词可以写成一些约定俗成的缩写,也可以根据团队成员间的约定进行缩写命名。

下表是一些常用的缩写:

常用词 缩写
Argument arg
Buffer buf
Clear clr
Clock clk
Compare cmp
Configuration cfg
Context ctx
Delay dly
Device dev
Display disp
Error err
function fnct
Hexadecimal hex
Initialize init
Maximum max
Message msg
Minimum min
multiplex mux
Parameter param
Previous prev
Priority prio
Register reg
Schedule sched
Synchronize sync

类名由一个或多个名词组成,采用大驼峰命名法,把类型作为最后一个单词,其他单词尽量避免缩写,除非是众所周知的,例如 HTML,URL,JSON,XML 等

命名格式 示例
Activity XXX描述 + Activity HomeActivity
Fragment XXX描述 + Fragment ContactsFragment
Service XXX描述 + Service PushService
BroadcastReceiver XXX描述 + Receiver NetworkReceiver
ContentProvider XXX描述 + Provider BookmarkProvider
Adapter XXX描述 + Adapter NewsListAdapter
Bean XXX描述 + Bean PersonBean
基础功能类 Base + XX父类名 BaseActivity
工具类 XXX描述 + Utils BitmapUtils

接口

命名方式和类一致,建议再加上I前缀,表明这是一个接口,与类有所区分,例如:ILoadListener

变量

采用小驼峰命名法,同时我觉得为了更好的区分局部变量、成员变量、静态变量,推荐加个前缀,Android 源码中也是这样使用的。

  • 成员变量命名前加m(member),例如 mWidth,mHeight

  • 静态变量命名前加s(static),例如静态的单例变量 sInstance

例外,Android 开发中经常有控件变量,如 TextView,ImageView 等,推荐命名方式: m + 控件类型缩写 + 描述, 如登陆按钮命名为 mBtnLogin 。这样可以很清楚知道这是一个 Button 控件类型的局部变量,代码也会整齐简洁。

下面列出一些常用控件的缩写

控件 缩写
ActionBar ab
LinearLayout ll
RelativeLayout rl
FrameLayout fl
TextView tv
ImageView iv
Button btn
ImageButton imgBtn
RadioButton rdoBtn
ToggleButton tglBtn
CheckBox chk
DatePicker dtPk
TimePicker tmPk
EditText edtTxt
ProgressBar proBar
SeekBar skBar
AutoCompleteTextView autoTxt
VideoView videoVi
WebView webVi
Spinner spn
ScrollView sclVi
ListView lv
GridView gv
RecyclerView rv

常量

全部大写,同时采用下划线命名法,例如 MAX_THREAD_NUM

方法

采用小驼峰命名法,一般用动词或动名词

命名格式 说明
initXX() 初始化相关方法,如初始化布局 initLayout()
isXX() 是否满足某些条件,如是否连接WIFI:isWIFIConnected()
processXX() 处理一些数据或过程
showXX() 显示XX信息
hideXX() 隐藏XX信息
saveXX() 保存XX
resetXX() 重置XX
addXX() / insertXX() 添加XX
deleteXX() / removeXX() 删除XX
updateXX() 更新XX
searchXX() / findXX() / queryXX() 查找XX
drawXX() 绘制XX
onXX() 一些状态回调,如加载成功 onLoadSuccess()

资源文件

资源文件的命名基本规则是: 类型 + 描述, 采用下划线命名法

  1. layout 目录下文件命名

布局文件的命名需要与相应的组件对应,这样方便查找和维护,例如创建一个主页的 Activity 布局文件,命名为 activity_home.xml

下面是一些常见布局命名:

布局类型 命名方式
Activity 的布局 activity_XX
Fragment 的布局 fragment_XX
Dialog 的布局 dialog_XX
可include 的布局 include_XX
RecyclerView 的布局 recycler_item_XX
  1. drawable 命名

Drawable的命名以使用的控件作为前缀,后面再加上描述,中间以下划线分隔。

ActionBar 使用 ab_

Divider 使用 divider_

Icon 使用 ic_

Menu 使用 menu_

Button 使用 btn_login

Drawable 是有多个状态的,也应该在命名中体现出来:

  • Normal 对应 _normal 后缀, 例如 btn_click_normal.png

  • Pressed 对应 _pressed 后缀

  • Focused 对应 _focused 后缀

  • Disabled 对应 _disabled 后缀

  • Selected 对应 _selected 后缀

  1. stings 和 colors 资源文件

也是一样使用下划线命名法,可以按模块来划分为多个strings文件,编译打包时会自动把同类文件进行合并

例如有 moudleA,moudleB, moudleCommon, 则分为 strings_moudle_a , strings_moudle_b , strings_common 。

colors 资源文件的命名也类似,在文件内部具体某个 color 值的命名可以按使用界面作为前缀,例如 主页中分隔线的颜色 命名为 home_fragment_divider

控件ID

控件 ID 采用下划线命名法,全部都是小写。控件的 ID 的命名我觉得最好与之前控件命名相对应,例如之前登陆的按钮命名为 mBtnLogin,那么对应的 ID 命名为 btn_login

在代码中就是Button mBtnLogin = (Button) findViewById(R.id.btn_login);,非常清晰明了

Android 编码风格

编码风格的话,当然是以 Google 官方推荐的为标准,想要了解详细规则的请看 Android Code Style

在实际项目中,团队成员只需要用统一的 code style 即可,Google Android 团队使用的文件是 AndroidStyle.xml ,也可以直接使用我的 code style ,在官方的风格上稍微修改了下,地址为 https://github.com/JohnnyShieh/CodeStyles/blob/master/Android/intellij/codestyles/AndroidStyle.xml

导入 Code Style

Mac 环境下, Android Studio -> Preferences -> Editor -> Code Style -> 点击 Manage.. -> 在弹框中点击 Import 选择下载的 AndroidStyle.xml 文件即可, 其他环境下也类似。

一开始大家的格式肯定会有不统一的时候,特别是之前的代码,可以按重新格式代码的快捷键调整格式,在 Preferences -> Keymap -> 右侧搜索框输入 reformat -> 下面 Reformat Code 对应的快捷键就是了。一般 Mac 下默认的快捷键为 Alt + Command + L 。

参考文章:

Android 编码命名规范