Android代码编写风格规范

类成员区顺序

类成员顺序对代码的可读性是有很大帮助的,从上到下的排列顺序为:

  • 常量区
  • UI控件变量区
  • 普通变量区
  • 重载方法区(重载,永不分离)
  • 声明周期区

类成员划分

  • 按照发生的先后顺序排列
  • 常量按照使用先后排列
  • UI控件成员变量按照layout文件中的先后顺序排列
  • 普通成员变量按照使用的先后顺序排列
  • 方法基本上都按照调用的先后顺序在各自区块中排列

垂直空白

  • 类成员区划分
  • 在方法体内,语句的逻辑分组间使用空行。
  • 类的第一个成员与最后一个成员的空白。

水平空白

  • 类型和变量之间:List list
  • 分隔任何保留字与紧随其后的左括号(()(如if, for catch等)。
  • 如果在一条语句后做注释,则双斜杠(//)两边都要空格。
  • 在, : ;及右括号())后

命名规范

包名

包名全部小写,连续的单词只是简单地连接起来,不使用下划线。

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

例如:com.shuidi.huzhu

类名

类名都以UpperCamelCase风格编写,后缀类型,不要加下划线。
类名通常是名词或名词短语,接口名称有时可能是形容词或形容词短语。
名词,采用大驼峰命名法,尽量避免缩写,除非该缩写是众所周知的, 比如HTML,URL
如果类名称中包含单词缩写,则单词缩写的每个字母均应大写。

WelcomeActivity、NewDetailAdapter、HomePosterParser、ThreadPoolManager等等

命名格式示例
ActivityXXX功能+Activity如主界面HomeActivity,启动页LauncherActivity
ServiceXXX功能+Service如消息推送的Service,PushService或PushMessageService
BroadcastReceiverXXX功能+Receiver如在线的消息广播接受者,OnlineReceiver
ContentProviderXXX功能+Provider如联系人的内容提供者,ContactsProvider
FragmentXXX功能+Fragment如显示联系人的Fragment,ContactsFragment
DialogXXX功能+Dialog如普通的选择提示对话框,ChoiceDialog
AdapterXXX功能+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”

控件前缀缩写命名风格
LinearLayoutllllFriend
RelativeLayoutrlrlMessage
FrameLayoutflflCart
TableLayouttltlTab
ButtonbtnbtnHome
ImageButtonimgBtnimgBtnPlay
ImageViewivivPhoto
TextViewtvtvName
EditTextedtedtName
ListViewlvlvCart
RecycleViewrvrvTopic
GridViewgvgvHead
CheckBoxchkchkTicket
RadioButtonrdoBtnrdoBtnMale
ProgressBarpbpbDownload
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

常见英文单词缩写表

单词缩写
iconic
colorcol
dividerdi
selectorsl
averageavg
backgroundbg
bufferbuf
controlctrl
deletedel
documentdoc
errorerr
escapeesc
incrementinc
infomationinfo
initialinit
imageimg
lengthlen
librarylib
messagemsg
passwordpwd
positionpos
sourcesrc
stringstr
temptmp
windowwin

总结:

以上所有命名规范都是在网上找的,是针对自己的习惯摘录的一些然后整理出来的。
规范只有在特定范围内大家一起去遵循才能叫做规范,
好处是
提高开发效率(不用纠结如何命名怎样命名浪费时间),
更好的促进同事之间的交流合作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值