Android编码命名规范

来源:互联网 发布:伦敦金交易数据 编辑:程序博客网 时间:2024/05/16 06:02

转载:https://github.com/D-clock/Doc/blob/master/Code/Android%E7%BC%96%E7%A0%81%E5%91%BD%E5%90%8D%E8%A7%84%E8%8C%83.md


Android编码命名规范

今年正式本科毕业,目前为止参与过的团队开发项目也有四五个。阅读过各式各样的混乱代码,最离谱的见过所有的变量都用中文拼音首字母,心中真是万千匹草泥马在奔腾。由此,也意识到命名对于编码的重要性。有人说,看一个开发者的水平如何,从看他代码的命名可以大致得出结论。好的命名除了可以让项目成员快速且更好的理解代码,自己读起来也赏心悦目。为此,特地根据自己平常的一些编码规范和网上一些资料进行整理汇总,方便自己时常查看对比。

基本的命名法

Java编程比较常见的有下面三种命名方式

  1. 驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写。
  2. 帕斯卡(pascal)命名法:又称大驼峰命名法,所有单词的第一个字母大写
  3. 下划线命名法:单词与单词间用下划线做间隔

一般建议拿来做命名的单词要比较精悍短小,这样即使两三个单词一起拼装成一个命名,也不至于显得很冗长。当然有些单词我们也可以直接写成一些约定俗成的缩写。诸如:msg(message)、init(initial)、img(image)等.....

个人认为,这些缩写可参照业界常见的缩写命名,也可以根据当前项目中的风格,进行团队成员间的约定。这样相对比较灵活,也方便团队成员之间相互理解。

包命名

采用反域名命名规则,全部使用小写字母。

  1. 一级包名为com;
  2. 二级包名为xx(可以是公司或则个人的随便);
  3. 三级包名应用的英文名app_name;
  4. 四级包名为模块名或层级名;

下面罗列一些常见的命名划分方式

命名格式作用com.xx.app_name.activities(或com.xx.app_name.activity)存放app所有的Activitycom.xx.app_name.service存放app所有的Servicecom.xx.app_name.receiver存放app所有的BroadcastReceivercom.xx.app_name.provider存放app所有的ContentProvidercom.xx.app_name.fragment存放app所有的Fragmentcom.xx.app_name.dialog存放app所有的Dialogcom.xx.app_name.base存放app一些共有的基础模块,诸如BaseActivity、BaseContentProvider、BaseService,BaseFragment等com.xx.app_name.utils存放app的工具类,诸如格式化日期的DateFormatUtils,处理字符串的StringUtils等com.xx.app_name.bean(或com.xx.app_name.unity)存放app自定义的实体类com.xx.app_name.db)存放app数据库操作相关的类com.xx.app_name.view)存放app自定义的控件com.xx.app_name.adapter)存放app所有的适配器类

类命名

名词,采用大驼峰命名法,尽量避免缩写,除非该缩写是众所周知的。如HTML,URL,JSON,XML等.

类命名格式示例ActivityXXX功能+Activity如主界面HomeActivity,启动页LauncherActivityServiceXXX功能+Service如消息推送的Service,PushService或PushMessageServiceBroadcastReceiverXXX功能+Receiver如在线的消息广播接受者,OnlineReceiverContentProviderXXX功能+Provider如联系人的内容提供者,ContactsProviderFragmentXXX功能+Fragment如显示联系人的Fragment,ContactsFragmentDialogXXX功能+Dialog如普通的选择提示对话框,ChoiceDialogAdapterXXX功能+XX类型控件Adapter如联系人列表,ContactsListAdapter基础功能类Base+XX父类名如BaseActivity,BaseFragment工具类XXX功能+Utils如处理字符串的工具类,StringUtils管理类XXX功能+Manager如管理联系人的类,ContactsManager

接口命名

和类名基本一致。也可以在接口名前面再加一个大写的I,表明这是一个接口Interface。

如:可以表明一个信息是否可以分享的接口,可以命名为Shareable,也可以是IShareable。

方法

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

下面是一些比较常见的命名风格和含义

命名风格含义initXX()初始化,如初始化所有控件initView()isXX()是否满足某种要求,如是否为注册用户isRegister()processXX()对数据做某些处理,可以以process作为前缀displayXX()显示提示信息,如displayXXDialog,displayToast,displayXXPopupWindowsaveXX()保存XX数据resetXX()重置XX数据addXX()/insertXX()添加XX数据deleteXX()/removeXX()删除XX数据updateXX()更新XX数据searchXX()/findXX()/queryXX()查找XX数据draw()控件里面使用居多,例如绘制文本drawText

变量

采用小驼峰命名法。同样比较简单,但为了更好表明含义,我建议做一下的的区分

  • 成员变量命名前面加m(member,表示成员变量之意),如,控件的宽高 mWidth,mHeight
  • 静态类变量前面加s(static,表示静态变量之意),如,一个静态的单例 sSingleInstance

常量

同样较为简单,全部大写,采用下划线命名法.如:MIN_WIDTH,MAX_SIZE

布局资源文件(layout文件夹下)

全部小写,采用下划线命名法.

下面是一些比较常见的命名风格和含义

布局类型命名风格Activity的xml布局activity_+XX功能,如主页面activity_homeFragment的xml布局fragment_+XX功能,如联系人模块fragment_contactsDialog的xml布局dialog_+XX功能,如选择日期dialog_select_date抽取出来复用的xml布局(include)include_+XX功能,如底部tab栏include_bottom_tabsListView或者RecyclerView的item xml布局XX功能+_list_item,如联系人的contact_info_list_itemGridView的item xml布局XX功能+_grid_item,如相册的album_grid_item

动画资源文件(anim文件夹下)

全部小写,采用下划线命名法,加前缀区分.

下面是一些比较常见的命名风格和含义

动画效果命名风格淡入/淡出fade_in/fade_out从某个方向淡入/淡出fade_方向_in(out),右边淡入淡出fade_right_in(out)从某个方向弹入/弹出push_方向_in(out),右边推入推出push_right_in(out)从某个方向滑入/滑出slide_in(out)from方向,右边滑入滑出slide_in(out)_from_right

strings和colors资源文件

小驼峰命名法,命名风格大致如下:

  • string命名格式:XX界面_XX功能_str,如 activity_home_welcome_str
  • color命名格式:color_16进制颜色值,如红色 color_ff0000

像string通常建议把同一个界面的所有string都放到一起,方便查找。而color的命名则省去我们头疼的想这个颜色怎么命名。

selecor、drawable、layer-list资源文件

小驼峰命名法。命名风格通常都是XX_selector、XX_drawable、XX_layer。

下面举两个比较常用的栗子:

  • 按钮按压效果button_selector,正常状态命名为button_normal(XX_normal),按压状态命名为button_pressed(XX_pressed)
  • 选择效果checkbox_selector,未选中状态命名为checkbox_unchecked(XX_unchecked),选中状态为checkbox_checked(XX_checked)

styles、dimens资源文件

  • style采用大驼峰命名法,主题可以命名为XXTheme,控件的风格可以命名为XXStyle
  • dimen采用小驼峰命名法,如所有Activity的titlebar的高度,activity_title_height_dimen

控件id命名

因为有些控件平常不常用,所以上网搜罗了一份下来。集大家之所长,以作参考。

控件前缀缩写RelativeLayoutrlLinearLayoutllFrameLayoutflTextViewtvButtonbtnImageButtonimgBtnImageViewimgView或ivCheckBoxchkRadioButtonrdoBtnanalogClockanaClkDigtalClockdgtClkDatePickerdtPkEditTextedtTxt或etTimePickertmPktoggleButtontglBtnProgressBarproBarSeekBarskBarAutoCompleteTextViewautoTxtZoomControlzmCtlVideoViewvdoViWebViewwebViSpinnerspnChronometercmtScollViewsclViTextSwitchtxtSwtImageSwitchimgSwtListViewlvGridViewgvExpandableListepdLtMapViewmapVi

以上就是从网上搜罗整理下来的,大家也可以做纠正或者补充。

总结

以上就是综合很多网上很多资料,再加上平时开发经验进行汇总整理的命名规范。好的命名规则能够提高代码质量,使得新人加入项目的时候降低理解代码的难度。最后我还要啰嗦一下几点:

  • 规矩终究是死的,适合团队的才是最好的
  • 命名规范需要团队一起齐心协力来维护执行,在团队生活里,谁都不可能独善其身
  • 如果你觉得你的命名晦涩难懂,那么,你可以开始动手了
  • 一开始总会不习惯的,一步一个脚印,持之以恒,总会成功的

0 0
原创粉丝点击