Android:规范命名,让合作更加愉快
每个程序员又有自己的习惯和代码风格,当工程比较小,或者合作的人比较少的时候都还好说,但碰见大工程,需要大家一起奋斗的时候,统一的命名规范重要性就体现出来了。
恩,学习Android一年多了,命名一直不太规范,今天特意转载了这篇命名规则,留作备忘。原文请戳Android命名规则。
本文在原作者基础上稍有改动, 添加了一些个人爱好。还请见谅。
标识符命名法最要有四种:
- 驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写。
- 帕斯卡(pascal)命名法:又称大驼峰命名法,所有单词的第一个字母大写
- 下划线命名法:单词与单词间用下划线做间隔。
- 匈牙利命名法:广泛应用于微软编程环境中,在以Pascal命名法的变量前附加小写序列说明该变量的类型。
下面为常见的英文单词缩写:
名称 | 缩写 |
---|---|
icon | ic (主要用在app的图标) |
color | cl(主要用于颜色值) |
divider | di(主要用于分隔线,不仅包括Listview中的divider,还包括普通布局中的线) |
selector | sl(主要用于某一view多种状态,不仅包括Listview中的selector,还包括按钮的selector) |
average | avg |
background | Bg(主要用于布局和子布局的背景) |
buffer | buf |
control | ctrl |
delete | del |
document | doc |
error | err |
escape | esc |
increment | inc |
infomation | info |
initial | init |
image | img |
Internationalization | I18N |
length | len |
library | lib |
message | msg |
password | pwd |
position | pos |
server | srv |
string | str |
temp | tmp |
window | wnd(win) |
程序中使用单词缩写原则:不要用缩写,除非该缩写是约定俗成的。
命名规范:
1 包(packages): 采用反域名命名规则,全部使用小写字母。一级包名为com,二级包名为xx(可以是公司或则个人的随便),三级包名根据应用进行命名,四级包名为模块名或层级名
包名 | 此包中包含 |
---|---|
com.xx.应用名称缩写.activities | 页面用到的Activity类 (activities层级名用户界面层) |
com.xx.应用名称缩写.base | 页面中每个Activity类共享的可以写成一个i额BaseActivity类 (基础共享的类) |
com.xx.应用名称缩写.adapter | 页面用到的Adapter类 (适配器的类) |
com.xx.应用名称缩写.tools | 此包中包含:公共工具方法类(tools模块名) |
com.xx.应用名称缩写.bean(或则 com.xx.应用名称缩写.enity ) | 此包中包含:元素类 |
com.xx.应用名称缩写.db | 数据库操作类 |
com.xx.应用名称缩写.view(或则 com.xx.应用名称缩写.ui ) | 自定义的View类等 |
com.xx.应用名称缩写.service | Service服务 |
com.xx.应用名称缩写.broadcast | Broadcast服务 |
2 类(classes):名词,采用大驼峰命名法,尽量避免缩写,除非该缩写是众所周知的, 比如HTML,URL,如果类名称中包含单词缩写,则单词缩写的每个字母均应大写。
类 | 描述 | 例如 |
---|---|---|
activity 类 | Aty或者Activity为后缀标识 | 欢迎页面类WelcomeAty.或者WelcomeActivity |
Adapter类 | Adp或者Adapter 为后缀标识 | 新闻详情适配器NewtDetailAdp或则直接 NewDetailAdapter |
解析类 | Hlr为后缀标识 | 首页解析类HomePosterHlr |
公共方法类 | Tools或Manager为后缀标识 | 线程池管理类:ThreadPoolManager 日志工具类:LogTools |
数据库类 | 以DBHelper后缀标识 | 新闻数据库:NewDBHelper |
Service类 | 以Service为后缀标识 | 时间服务TimeService |
BroadcastReceive类 | 以Broadcast为后缀标识 | 时间通知TimeBroadcast |
ContentProvider | 以Provider为后缀标识 | |
直接写的共享基础类 | 以Base开头 | BaseActivity,BaseFragment |
3 接口(interface):命名规则与类一样采用大驼峰命名法,多以
able或ible结尾,如interface Runnable;
interface Accessible
4 方法(methods):动词或动名词,采用小驼峰命名法
例如:onCreate(),run()
方法 | 说明 |
---|---|
initXX() | 初始化相关方法,使用init为前缀标识,如初始化布局initView() |
isXX() | checkXX()方法返回值为boolean型的请使用is或check为前缀标识 |
getXX() | 返回某个值的方法,使用get为前缀标识processXX()对数据进行处理的方法,尽量使用process为前缀标识 |
displayXX() | 弹出提示框和提示信息,使用display为前缀标识 |
saveXX() | 与保存数据相关的,使用sav为e前缀标识resetXX()对数据重组的,使用reset前缀标识 |
clearXX() | 清除数据相关的 |
removeXXX() | 清除数据相关的 |
drawXXX() | 绘制数据或效果相关的,使用draw前缀标识 |
7 资源文件(图片drawable文件夹下):
如果有多种形态如按钮等除外如btn_xx.xml(selector)
名称 | 功能 |
---|---|
btn_xx | 按钮图片使用btn_整体效果 |
btn_xx_normal | 按钮图片使用btn_正常情况效果 |
btn_xx_press | 按钮图片使用btn_点击时候效果 |
bg_head | 背景图片使用bg功能说明 |
def_search_cell | 默认图片使用def功能说明 |
icon_more_help | 图标图片使用icon功能说明 |
seg_list_line | 具有分隔特征的图片使用seg功能说明 |
sel_ok | 选择图标使用sel功能说明 |
命名后缀:
后缀 | 说明 |
---|---|
nor | 图片的状态,代表普通状态 |
hl | 图片的状态,代表高亮状态 |
press | 图片的状态,代表按下状态 |
select | 图片的状态,代表其所占的view被选中 |
unselect | 图片的状态,代表其所占的view没有被选中 |
8 资源布局文件(XML文件(layout布局文件)):
全部小写,采用下划线命名法
1).contentview命名, Activity默认布局,以去掉后缀的Activity类进行命名。不加后缀:
例如:activity_main.xml、activity_more.xml
2).Dialog命名:dialog_描述.xml
例如:dlg_hint.xml
2).PopupWindow命名:ppw_描述.xml
例如:ppw _info.xml
3). 列表项命名listitem_描述.xml
例如:listitem_city.xml
4).包含项:include_模块.xml
例如:include_head.xml、include_bottom.xml
5).adapter的子布局:功能模块_item.xml
例如:main_item.xml、
9 动画文件(anim文件夹下):全部小写,采用下划线命名法,加前缀区分。
//前面为动画的类型,后面为方向
动画命名例子 | 规范写法 |
---|---|
fade_in | 淡入 |
fade_out | 淡出 |
push_down_in | 从下方推入 |
push_down_out | 从下方推出 |
push_left | 推向左方 |
slide_in_from_top | 从头部滑动进入 |
zoom_enter | 变形进入 |
slide_in | 滑动进入 |
shrink_to_middle | 中间缩小 |
10 资源ID(resourcesid):大小写规范与方法名一致,采用小驼峰命名法。命名规范为“资源控件的缩写 名”+“变量名”。注意:页面控件名称应该和控件id名保持一致
strings.xml,colors.xml等中的id命名:
strings.xml中,使用activity名称注释,将文件内容区分开来
11 layout中的id命名
命名模式为:view缩写_模块名称_view的逻辑名称
view的缩写详情如下:
控件 | 缩 写 |
---|---|
LayoutView | lv |
RelativeView | rv |
TextView | tv |
Button | btn |
ImageButton | imgBtn |
ImageView | mgView 或者 iv |
CheckBox | chk |
RadioButton | rdoBtn |
analogClock | anaClk |
DigtalClock | dgtClk |
DatePicker | dtPk |
EditText | edtTxt |
TimePicker | tmPk |
toggleButton | tglBtn |
ProgressBar | proBar |
SeekBar | skBar |
AutoCompleteTextView | autoTxt |
ZoomControls | zmCtl |
VideoView | vdoVi |
WdbView | webVi |
RantingBar | ratBar |
Tab | tab |
Spinner | spn |
Chronometer | cmt |
ScollView | sclVi |
TextSwitch | txtSwt |
ImageSwitch | imgSwt |
listView | lVi 或则lv |
ExpandableList | epdLt |
MapView | mapVi |
12.activity中的view变量命名
命名模式为:逻辑名称+view缩写
建议:如果layout文件很复杂,建议将layout分成多个模块,每个模块定义一个moduleViewHolder,其成员变量包含所属view
13.styles.xml:将layout中不断重现的style提炼出通用的style通用组件,放到styles.xml中;
常用控件的缩写
控件 | 布局文件中缩写 | 代码中缩写 |
---|---|---|
LinearLayout | xxx_layout | xxxLLayout |
RelativeLayout | xxx_layout | xxxRLayout |
FrameLayout | xxx_layout | xxxFLayout |
TextView | xxx_tvxxx | Tv |
EditText | xxx_etxxx | Et |
Button | xxx_btn | xxxBtn |
ImageView | xxx_iv | xxxIv |
CheckBox | xxx_chk | xxxChk |
RadioButton | xxx_rbtn | xxxRbtn |
ProgressBar | xxx_pbar | xxxPbar |
ListView | xxx_lv | xxxLv |
WebView | xxx_wv | xxxWv |
GridView | xxx_gv | xxxGv |
编码规范
* 代码中尽量不要出现中文。注释和除外。代码中通过strings.xml引用来显示中文。
* 控件声明放在activity级别,这样在activity其他地方可以使用。
* 在一个View.OnClickListener中处理所有的点击事件逻辑,这样看起来很集中和直观。
* strings.xml中使用%1sd等实现字符串的通配。
* 布局文件中的字体大小,都定义在dimens.xml中。
* 有关margin和padding的值也都放在dimens.xml中。
* 界面之间传值尽量使用intent方式。少用全局变量。
* 不建议在布局文件中添加点击事件。
* 数据类型转换一定要校验。
* 使用常量代替枚举。
* 实体不要在不同模块间共享,但是可以在统一模块下的不同页面共享
* 类注释一定要写,管家的方法也要写方法注释。常量尽量写注释。
Android:规范命名,让合作更加愉快相关推荐
- Android资源命名规范
Android资源命名规范 最近几个月,大量涉及android资源的相关工作.对于复杂的应用而言,资源命名的规范很有必要.除了开发人员之外,UI设计人员(或者切图相关人员)也需要对资源使用的位置非常清 ...
- android icon命名规则,安卓手机的APP图标尺寸规范和图标命名规范
安卓手机的APP图标尺寸规范和图标命名规范 点击查看原文 android图标包括:程序启动图标.底部菜单图标.弹出对话框顶部图标.长列表内部列表项图标.底部和底部tab标签图标. 1.安卓程序启动图标 ...
- Android代码命名规范
目录 目录 1.为什么 规范 Android 代码命名? 2.Android需要命名的代码(对象)有哪些? 3.具体命名规范 3.1.包 3.2.类 3.3.变量 3.4.方法 3.5.参数名 3.6 ...
- 百度android代码命名规范
代码规范 1. 简介 A. 目的 本文提供一整套编写高效可靠的 Java 代码的标准.约定和指南.它们以安全可靠的软件工程原则为基础,使代码易于理解.维护和增强.而且,通过遵循这些程序设 ...
- bat文件刷屏,请规范命名
bat文件执行数据导出(exp)的刷屏现象oracle 今天批量导出指定表的数据时,写成了一个bat文件,文件名为exp.bat.双击bat文件后,屏幕出现刷屏现象,数据无法导出. bat文件如下: ...
- C语言初学者编程规范—命名规则
原文地址:C语言初学者编程规范-命名规则 C是一门朴素的语言,你使用的命名也应该这样.与Modula-2和Pascal程序员不同,C程序员不使用诸如"ThisVariableIsATempo ...
- android 层进菜单,iOS和Android规范解析——底部浮层(下)
上次的文章(点击查看),介绍了Android MD设计规范中对于"底板(Bottom Sheets)"的定义,这次的文章来跟大家介绍一下iOS设计规范中的底部浮层. 在iOS规范中 ...
- android 开发 命名规范
转自:http://www.cnblogs.com/ycxyyzw/p/4103284.html 标识符命名法 标识符命名法最要有四种: 1 驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其 ...
- android 控件资源命名规范,Android 资源命名规范整理
参考结合官方.各厂.各博客标准命名规范,整理出的符合 Android 风格的资源命名规则. 布局文件(Layout)命名 _ eg1.activity_home eg2.item_countrylis ...
最新文章
- SAP WM中阶Storage Type的Capacity Check – Check based on maximum quantity per bin in storage type.
- 世安杯CTF writeup
- Python urllib与requests、XML和HTMLParser
- spring+springMvc+mybatis 调用oracle 存储过程
- Java命令行界面(第17部分):jw-options
- mel滤波器组频率响应曲线_了解二阶滤波器的奈奎斯特图
- netsh 禁用端口
- 77种互联网盈利创新模式(7)
- 反编译object文件c语言,能不能通过反编译程序看.sys文件的源代码!
- 电磁场关于静电场和恒定磁场的思维导图及引申时变电磁场
- NC6 转库单、采购入库单、库存委托入库单签字后自动生成调拨订单
- 中文字符集与字符编码的基础知识
- python35安装教程_【邢不行量化小讲堂35-python量化入门】建议收藏|Windows下安装TA-Lib终极教程(下)...
- 三维图看法亲身经验.
- 怎样在Edge浏览器中开启IE兼容模式
- 2019网易校招笔试题 瞌睡
- linux下登录不上oracle,Oracle特定用户登录失败案例 ORA-20001
- The server returned the following error: 无法与服务器建立连接(0x80072EFD)
- 【老九】【Python】函数与模块
- Noisy machines: understanding noisy NNs and enhancing robustness to analog hardware errors
热门文章
- 历届试题 大臣的旅费 java
- Warshall算法C语言实现
- 很强大,并且易于使用,更重要的是免费的一个分区工具:分区助手
- 人工神经网络的应用实例,人工神经网络简单例题
- 两个步骤解决 SQL Server 登录报错 通过端口 1433 连接到主机 的 TCP/IP 连接失败。 错误:“connect timed out”
- 使用python脚本将word文档转txt
- 树莓派从零开始快速入门系列汇总
- 什么是库存周转率周转天数?
- 【数据结构算法】小结
- 小程序:下载图片文件(wx.downloadFile)并保存到手机相册(wx.saveImageToPhotosAlbum)