每个程序员又有自己的习惯和代码风格,当工程比较小,或者合作的人比较少的时候都还好说,但碰见大工程,需要大家一起奋斗的时候,统一的命名规范重要性就体现出来了。
恩,学习Android一年多了,命名一直不太规范,今天特意转载了这篇命名规则,留作备忘。原文请戳Android命名规则。
本文在原作者基础上稍有改动, 添加了一些个人爱好。还请见谅。

标识符命名法最要有四种:

  1. 驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写。
  2. 帕斯卡(pascal)命名法:又称大驼峰命名法,所有单词的第一个字母大写
  3. 下划线命名法:单词与单词间用下划线做间隔。
  4. 匈牙利命名法:广泛应用于微软编程环境中,在以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方式。少用全局变量。
* 不建议在布局文件中添加点击事件。
* 数据类型转换一定要校验。
* 使用常量代替枚举。
* 实体不要在不同模块间共享,但是可以在统一模块下的不同页面共享
* 类注释一定要写,管家的方法也要写方法注释。常量尽量写注释。

更多相关文章

  1. RadioButton使用的过程中Text文本和图片显示的问题
  2. 关于使用Android(安卓)NDK编译ffmpeg
  3. Android投屏电脑反向控制软件QtScrcpy使用方法
  4. Android入门篇二:使用意图在Activity之间传递数据
  5. Android异步加载全解析之Bitmap
  6. Android使用JNI实现Java与C之间传递数据
  7. 箭头函数的基础使用
  8. NPM 和webpack 的基础使用
  9. Python list sort方法的具体使用

随机推荐

  1. 线程包括哪些状态?状态之间是如何转变的?
  2. 什么是并发编程?
  3. Java 中的锁
  4. 程序员专业被娃溜...
  5. 讲给前端的正则表达式(2):写出更优雅、更
  6. 什么是线程池?
  7. Java 中的锁如何使用?有什么注意事项?
  8. 并行是什么意思?与并发的区别是什么?
  9. Executors如何创建线程池?
  10. 什么是线程?什么是进程?为什么要有线程?有什