Android命名规范

命名规范

1. 包命名

规则:包名全部小写,采用反域名命名规则,一级包名是顶级域名,通常为com, edu, gov, net, org等,二级包名,通过为公司名或部门名或者个人名,三级包名通常为项目名,四级包名为模块名或者层级名。以下是从层级包名来划分android项目中采用的模块分包


com.shanghaibirkin.xxxx.ui//所有用户界面 home代表首页模块,main代表主界面模块,person代表用户信息模块,trade代表交易模块,wealth代表我的财富模块.

com.shanghaibirkin.xxxx.ui.person//用户模块

com.shanghaibirkin.xxxx.ui.person.activity//用户模块的activity

com.shanghaibirkin.xxxx.ui.person.adapter//仅用户模块的适配器

com.shanghaibirkin.xxxx.ui.person.entity//仅用户模块的实体类模块

com.shanghaibirkin.xxxx.ui.person.fragment//仅用户模块的fragment模块

com.shanghaibirkin.xxxx.ui.person.hepler//仅用户模块的工具类

com.shanghaibirkin.xxxx.ui.person.inter//仅用户模块的接口

com.shanghaibirkin.xxxx.ui.person.widget//仅用户模块的自定义控件

com.shanghaibirkin.xxxx.base//项目中的基类

com.shanghaibirkin.xxxx.library//项目中用到的开源库

com.shanghaibirkin.xxxx.widget//所有模块都能用到的自定义的View类

com.shanghaibirkin.xxxx.util//所有模块常用的公共工具类(网络, IO, 日志等)


2.资源文件分包

配置我们的app文件夹下的build.gradle文件

如我的

//资源分包

sourceSets {

    main {

    jniLibs.srcDirs = ['libs']

    res.srcDirs =

    [

        'src/main/res',

        'src/main/res/layouts',

        'src/main/res/layouts/main',

        'src/main/res/layouts/home',

        'src/main/res/layouts/wealth',

        'src/main/res/layouts/person',

        'src/main/res/layouts/trade'

     ]

}

}

配置完之后,sync project一下就成功了,项目结构就变成了这样,就可以对应上面的模块分包

文件夹是要自己创建的,因为自己创建的文件夹gradle不能解析为资源文件来使用,所以需要在build.gradle中进行配置


3. 类命名

规则:采用大驼峰式命名法,首字母大写,尽量避免缩写,除非该缩写是众所周知的,比如HTML,URL,如果类名称包含单词缩写,则单词缩写的每个字母均应大写。以下列举的是android中几种最为常用的类的命名。

classLoginActivity;//activity类classDiscoverFragment;//fragment类classAnalysisService;//service类classWakeupRankAdapter;//adapter类classStringUtils;//工具类classUserBean;//模型类classApiImpl;//接口实现类


4. 接口命名

规则:命名规则与类命名一样采用大驼峰式命名法,首字母大写,多以able, ible, er结尾

interfaceComparable;interfaceAccessible;interfaceOnClickListener;


5. 方法

规则:采用小驼峰命名法,首字母小写,方法名采用动词或动名词结构。方法的命名应该与方法的真正行为具有对应关系,下面给出一些方法名的动词前缀标示的建议。

方法名描述

getXX()获取某个属性的返回值

setXX()设置某个属性值

initXX()初始化方法,如初始化布局initView()

isXX()判断是否true的方法;

checkXX()与isXX意义等价

processXX()处理数据

updateXX()更新数据

saveXX()保存数据

addXX()添加数据

deleteXX()删除数据

resetXX()重置数据

clearXX()清除数据

removeXX()移除数据或者视图等,如removeView();

drawXX()绘制数据或者视图


6. 变量

规则:采用小驼峰命名法,首字母小写。变量名应简短且能描述其用途,尽量避免拼音,无意义地缩写。除非是临时变量,否则不建议使用单个字符的变量名,如i, j, k。对于变量命名,还有一种风格是google的以字母m为前缀(m为member缩写),在android 源码中随处可见。

privateintuserName;//java的一般性风格privateintmUserName;//google的成员变量风格,m为member的缩写


7. 常量

规则:常量使用全大写字母加下划线的方式命名。

publicstaticfinalintTAG="tag";publicstaticfinalintSTART_CLASS_NOT_FOUND = -2;



8. 控件变量名

规则:首先需要满足第5条变量的规则,

模式:逻辑名 + view缩写

ButtonsendNewsBtn;TextViewpasswordTxt;

9. 控件ID

规则:view缩写_模块名_逻辑名

android:id="@+id/btn_news_send"//样例

view缩写如下:

View缩写

TextView tv

EditText edt

Button btn

ImageButton ibtn

ImageView img

ListView lv

RadioGroupr rgp

RadioButton rbtn

ProgressBar pb

SeekBar sb

CheckBox cbx

Spinner spn

TableLayout tbl

TableRow tbr

LinearLayout ll

RelativeLayout rl

ScrollView scll

SearchView sv

TabHost tbh

TabWidget tvg


10. 资源文件名

10.1 layout的文件命名

规则:全部小写,采用下划线命名法。layout文件命名:组件类型_{模块_}功能.xml

activity_news_title.xml//样例

命名规范组件类型

activity_{模块_}功能Activity命名格式

fragment_{模块_}功能Fragment命名格式

dialog_{模块_}功能Dialog命名格式

popup_{模块_}功能PopupWindow命名格式

item_list_{模块_}功能ListView的item命名格式

item_grid_{模块_}功能GridView的item命名格式

10.2  drawable的文件命名

模式:前缀{_控件}{_范围}{_后缀},控件、范围、后缀可选

bg_login_pressed.png//样例

区分状态时,默认状态添加normal后缀

区分状态时,按下时的状态添加pressed后缀

区分状态时,选中时的状态添加selected后缀

区分状态时,不可用时的状态添加disable后缀

多种状态的添加selector后缀

mipmap命名细则

图标类添加ic前缀

背景类添加bg前缀

分隔类添加div前缀

默认类添加def前缀

10.3 动画的文件命名

规则:{范围_}动画类型_动画方向。

login_fade_in.xml//样例

动画命名描述

fade_in淡入

fade_out淡出

push_down_in从下方推入

push_down_out从下方推出

slide_in_from_top从头部滑动进入

zoom_enter变形进入

shrink_to_middle中间缩小


11. 资源内的name命名

11.1 strings.xml

模式:activity名_{范围_}逻辑名

用户名//样例

11.2 colors.xml

模式:前缀{_控件}{_范围}{_后缀}, 控件、范围、后缀可选,

#FFFFFF//样例

colors命名细则

背景颜色添加bg前缀

文本颜色添加text前缀

分割线颜色添加div前缀

区分状态时,默认状态的颜色添加normal后缀

区分状态时,按下时的颜色添加pressed后缀

区分状态时,选中时的颜色添加selected后缀

区分状态时,不可用时的颜色添加disable后缀

代码风格

原则

不要直接忽略Exceptions

例如下面的示例,永远不要这样做,无法预测未来可能的变化

voidsetServerPort(Stringvalue){try{          serverPort = Integer.parseInt(value);      }catch(NumberFormatException e) { }  }

正确的做法应该如下:

voidsetServerPort(Stringvalue) throws ConfigurationException{try{          serverPort = Integer.parseInt(value);      }catch(NumberFormatException e) {thrownewConfigurationException("Port "+value+" is not valid.");      }  }

import采用完全限定名

不提倡:

importfoo.*;

正确做法:

importfoo.Bar;

括号风格:

不提倡:

if(condition)      body();

正确做法:

if(condition) {      body();  }

使用空格来缩进

使用4个空格缩进来代表块,而绝不使用tab键;

使用8个空格来代表行包裹,包括函数调用。

注释

1.类注释

每个类完成后应该有作者姓名和联系方式的注释,对自己的代码负责

/**

作者: nieshun

时间: 

描述: 用户登录

联系方式:

*/

public class Login{

}

2.方法注释

每一个成员方法(包括自定义成员方法、覆盖方法、属性方法)的方法头都必须做方法头注释

/*

方法名:

功    能:

参    数:

返回值:无

*/

3.快注释

private class MessageObserver extends ContentObserver {

public MessageObserver() {

super(mainHandler);

}

publicvoidonChange(booleanhasChanged){// 发送更新UI的消息mHandler.sendMessage(mHandler.obtainMessage(0x2));  }  }

4.资源文件注释

#FF0000

#0079FF

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

  • 序:团队开发有一套自己的命名规范,方便大家review和code,今天我总结一下,后面有需要用到的,可以直接按这套...
    tomatozheng阅读 2,327评论 0 1
  • 无论是哪种编程语言的学习,我们的命名都要有一定的规范才能更好的进行团队协作,更好的进行代码的的二次开发。所以在这里...
    李庆文阅读 654评论 2 3
  • Android开发代码规范相关系列文章: Android命名规范 Android编码规范 俗话说:无规矩不成方圆,...
    looper1211阅读 1,277评论 1 4
  • 作者简介 原创微信公众号郭霖 WeChat ID: guolin_blog 大家早上好,新的一周开始啦! 本篇来自...
    木木00阅读 557评论 1 4
  • 咦,这是谁呀,人没到声音先到。说话快的像“机关枪”一样。他就是这个虎头虎脑的小男生,魏子轩。魏是魏国的魏。子是儿子...
    魏子轩阅读 2,654评论 1 0