类成员区顺序
类成员顺序对代码的可读性是有很大帮助的,从上到下的排列顺序为:
- 常量区
- UI控件变量区
- 普通变量区
- 重载方法区(重载,永不分离)
- 声明周期区
类成员划分
- 按照发生的先后顺序排列
- 常量按照使用先后排列
- UI控件成员变量按照layout文件中的先后顺序排列
- 普通成员变量按照使用的先后顺序排列
- 方法基本上都按照调用的先后顺序在各自区块中排列
垂直空白
- 类成员区划分
- 在方法体内,语句的逻辑分组间使用空行。
- 类的第一个成员与最后一个成员的空白。
水平空白
- 类型和变量之间:List list
- 分隔任何保留字与紧随其后的左括号(()(如if, for catch等)。
- 如果在一条语句后做注释,则双斜杠(//)两边都要空格。
- 在, : ;及右括号())后
命名规范
包名
包名全部小写,连续的单词只是简单地连接起来,不使用下划线。
- 一级包名为com;
- 二级包名为xx(可以是公司或则个人的随便);
- 三级包名应用的英文名app_name;
- 四级包名为模块名或层级名;
例如:com.shuidi.huzhu
类名
类名都以UpperCamelCase风格编写,后缀类型,不要加下划线。
类名通常是名词或名词短语,接口名称有时可能是形容词或形容词短语。
名词,采用大驼峰命名法,尽量避免缩写,除非该缩写是众所周知的, 比如HTML,URL
如果类名称中包含单词缩写,则单词缩写的每个字母均应大写。
WelcomeActivity、NewDetailAdapter、HomePosterParser、ThreadPoolManager等等
类 | 命名格式 | 示例 |
---|---|---|
Activity | XXX功能+Activity | 如主界面HomeActivity,启动页LauncherActivity |
Service | XXX功能+Service | 如消息推送的Service,PushService或PushMessageService |
BroadcastReceiver | XXX功能+Receiver | 如在线的消息广播接受者,OnlineReceiver |
ContentProvider | XXX功能+Provider | 如联系人的内容提供者,ContactsProvider |
Fragment | XXX功能+Fragment | 如显示联系人的Fragment,ContactsFragment |
Dialog | XXX功能+Dialog | 如普通的选择提示对话框,ChoiceDialog |
Adapter | XXX功能+XX类型控件Adapter | 如联系人列表,ContactsListAdapter |
基础功能类 | Base+XX父类名 | 如BaseActivity,BaseFragment |
工具类 | XXX功能+Utils | 如处理字符串的工具类,StringUtils |
管理类 | XXX功能+Manager | 如管理联系人的类,ContactsManager |
测试类的命名以它要测试的类的名称开始,以Test结束。
例如:HashTest 或 HashIntegrationTest。
接口(interface):命名规则与类一样采用大驼峰命名法,多以able或ible结尾
interface Runnable ;
interface Accessible;
方法名
方法名都以 LowerCamelCase 风格编写。
方法名通常是动词或动词短语。
初始化方法,命名以init开头,例:initView
按钮点击方法,命名以to开头,例:toLogin
设置方法,命名以set开头,例:setData
具有返回值的获取方法,命名以get开头,例:getData
通过异步加载数据的方法,命名以load开头,例:loadData
布尔型的判断方法,命名以is或has,或具有逻辑意义的单词如equals,例:isEmpty
命名风格 | 含义 |
---|---|
initXX() | 初始化,如初始化所有控件initView() |
isXX() | 是否满足某种要求,如是否为注册用户isRegister() |
processXX() | 对数据做某些处理,可以以process作为前缀 |
displayXX() | 显示提示信息,如displayXXDialog,displayToast,displayXXPopupWindow |
saveXX() | 保存XX数据 |
resetXX() | 重置XX数据 |
addXX()/insertXX() | 添加XX数据 |
deleteXX()/removeXX() | 删除XX数据 |
updateXX() | 更新XX数据 |
searchXX()/findXX()/queryXX() | 查找XX数据 |
draw() | 控件里面使用居多,例如绘制文本drawText |
常量
全部为大写单词,单词之间用下划线分开。
public final static int PAGE_SIZE = 20;
变量
采用小驼峰命名法。
成员变量命名前面加m(member,表示成员变量之意),如,控件的宽高 mWidth,mHeight
静态类变量前面加s(static,表示静态变量之意),如,一个静态的单例 sSingleInstance
控件类型:
private TextView tvHeaderTitle; // 标题栏的标题
private Button btnLogin; // 登录按钮
资源文件命名
layout命名
组件类型{范围}功能,范围可选,只在有明确定义的范围内才需要加上。
命名风格 | 布局类型 |
---|---|
activity_{范围_}功能 | 为Activity的命名格式 |
fragment_{范围_}功能 | 为Fragment的命名格式 |
dialog_{范围_}功能 | 为Dialog的命名格式 |
item_{范围_}功能 | 为列表的item命名格式 |
widget_{范围_}功能 | 为自定义控件类命名格式 |
header_{范围_}功能 | 为列表的HeaderView命名格式 |
footer_{范围_}功能 | 为列表的FooterView命名格式 |
控件id命名
资源文件命名与java命名不同,大多采用前缀命名法,对类型进行区分
android:id=”@+id/txt_header_title”
android:id=”@+id/btn_login”
控件 | 前缀缩写 | 命名风格 |
---|---|---|
LinearLayout | ll | llFriend |
RelativeLayout | rl | rlMessage |
FrameLayout | fl | flCart |
TableLayout | tl | tlTab |
Button | btn | btnHome |
ImageButton | imgBtn | imgBtnPlay |
ImageView | iv | ivPhoto |
TextView | tv | tvName |
EditText | edt | edtName |
ListView | lv | lvCart |
RecycleView | rv | rvTopic |
GridView | gv | gvHead |
CheckBox | chk | chkTicket |
RadioButton | rdoBtn | rdoBtnMale |
ProgressBar | pb | pbDownload |
strings和colors资源文件
String命名如果以传统命名法来命名,有些按照业务逻辑进行命名,好处是可插拔,坏处是资源命名满天飞,迭代周期久后导致过于臃肿,建议根据实际意义进行命名。
建议命名格式:
xxx页面_xxx功能_str activity_home_welcome_str
colorsd的传统命名:
前缀{控件}{范围}{_后缀},控件、范围、后缀可选,但控件和范围至少要有一个。
背景颜色,添加bg前缀
文本颜色,添加text前缀
分割线颜色,添加div前缀
区分状态时,默认状态的颜色,添加normal后缀
区分状态时,按下时的颜色,添加pressed后缀
区分状态时,选中时的颜色,添加selected后缀
区分状态时,不可用时的颜色,添加disable后缀
颜色值比较多,建议直接使用匈牙利命名法,达到直观,更简洁的使用
正常颜色 :col_000000
带透明度颜色 :col_000000_translucent25
drawable的命名
前缀{控件}{范围}{_后缀},控件、范围、后缀可选,但控件和范围至少要有一个。
图标类,添加ic前缀
背景类,添加bg前缀
分隔类,添加div前缀
默认类,添加def前缀
区分状态时,默认状态,添加normal后缀
区分状态时,按下时的状态,添加pressed后缀
区分状态时,选中时的状态,添加selected后缀
区分状态时,不可用时的状态,添加disable后缀
多种状态的,添加selector后缀(一般为ListView的selector或按钮的selector)
anim文件下的动画文件命名
动画类型_动画方向
fade_in,淡入
fade_out,淡出
push_down_in,从下方推入
push_down_out,从下方推出
slide_in_from_top,从头部滑动进入
zoom_enter,变形进入
shrink_to_middle,中间缩小
styles、dimens资源文件
style采用大驼峰命名法,主题可以命名为XXTheme,控件的风格可以命名为XXStyle
dimen采用小驼峰命名法,如所有Activity的titlebar的高度,activity_title_height_dimen
常见英文单词缩写表
单词 | 缩写 |
---|---|
icon | ic |
color | col |
divider | di |
selector | sl |
average | avg |
background | bg |
buffer | buf |
control | ctrl |
delete | del |
document | doc |
error | err |
escape | esc |
increment | inc |
infomation | info |
initial | init |
image | img |
length | len |
library | lib |
message | msg |
password | pwd |
position | pos |
source | src |
string | str |
temp | tmp |
window | win |
总结:
以上所有命名规范都是在网上找的,是针对自己的习惯摘录的一些然后整理出来的。
规范只有在特定范围内大家一起去遵循才能叫做规范,
好处是
提高开发效率(不用纠结如何命名怎样命名浪费时间),
更好的促进同事之间的交流合作。