Android编码规范指南


title: Android编码规范指南
tags: Android,基础


本文参考最全面的 Android 编码规范指南标准的Java编码规范手册。该文档仅供参考,只要形成一个统一的风格即可。

源文件基础

  • 文件名
    源文件以其最顶层的类名来命名,大小写敏感,文件扩展名为.java。
  • 文件编码
    源文件编码格式为 UTF-8。

源文件结构

一个源文件包含(按顺序地):

  1. 许可证或版权信息(如有需要)
  2. package语句
  3. import语句
  4. 一个顶级类(只有一个)以上每个部分之间用一个空行隔开。
  1. 许可证或版权信息
    如果一个文件包含许可证或版权信息,那么它应当被放在文件最前面。
  2. package语句
    package 语句不换行。
  3. import语句
    3.1 import不要使用通配符
    即,不要出现类似这样的import语句:import java.util.*;
    3.2 不要换行
    图例:
源文件结构1.1.png

格式规范

  • 缩进
    每当开始一个新的块,缩进增加4个空格,当块结束时,缩进返回先前的缩进级别。缩进级别适用于代码和注释

  • 一行一个语句
    每个语句后要换行。

  • 行长度
    每行80或100字符,package和import语句除外

  • 换行

    • 从哪里换行
      基本准则是:更倾向于在更高的语法级别处断开。

    如果在非赋值运算符处断开,那么在该符号前断开(比如+,它将位于下一行)。
    这条规则也适用于以下”类运算符”符号:点分隔符(.),类型界限中的 &()
    如果在赋值运算符处断开,通常的做法是在该符号后断开(比如=,它与前面的内容留在同一行)。这条规则也适用于foreach语句中的分号。
    方法名或构造函数名与左括号留在同一行。
    逗号(,)与其前面的内容留在同一行

    • 换行时缩进至少+8个空格
换行位置2.1.png
  • 使用空行
    以下情况使用一个空行:

1.类内连续的成员之间:字段,构造函数,方法,嵌套类,静态初始化块,实例初始化块。
2.在函数体内,语句的逻辑分组间使用空行。

  • 使用空格

1.分隔任何保留字与紧随其后的左括号(()(如if, for catch等)。
2.分隔任何保留字与其前面的右大括号(})(如else, catch)。
3.在任何左大括号前({)
4.在任何二元或三元运算符的两侧。
5.在, : ;及右括号())后
6.如果在一条语句后做注释,则双斜杠(//)两边都要空格。
7.类型和变量之间:List list。
8.数组初始化中,大括号内的空格是可选的,即new int[] {5, 6}和new int[] { 5, 6 }都是可以的。

命名规则

  1. 对所有标识符都通用的规则
    标识符只能使用ASCII字母和数字,因此每个有效的标识符名称都能匹配正则表达式\w+。

  2. 标识符类型的规则
    2.1 包名全部小写,连续的单词只是简单地连接起来,不使用下划线。采用反域名命名规则,全部使用小写字母。一级包名为com,二级包名为xx(可以是公司或则个人的随便),三级包名根据应用进行命名,四级包名为模块名或层级名。

package com.anxin.changbaishan.view;
package com.anxin.changbaishan.utils;

2.2 类命名
类名是个一名词,采用大小写混合的方式,每个单词的首字母大写。尽量使类名简洁而富于描述。使用完整单词,避免缩写词(除非该缩写词被更广泛使用,像URL,HTML) 。

public class Base64Util
public class AccountFragment

2.3 接口命名
接口类名以大写“I”开头,大小写规则与类名相似。

public interface IProjGroupService

2.4 方法命名
方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。

public void onCreate(Bundle savedInstanceState)
public void run()

2.5 常量命名
(Constants [采用stiatc final 修饰]) 类常量的声明,应该全部大写,单词间用下划线隔开。

private static final int MIN_WIDTH = 4;
private static final int MAX_WIDTH = 999;

2.6 局部变量
采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。变量名应简短且富于描述。变量名的选用应该易于记忆,即,能够指出其用途。尽量避免单个字符的变量名,除非是一次性的临时变量。临时变量通常被取名为i,j,k,m和n,它们一般用于整型。c,d,e,它们一般用于字符型,变量名不应以下划线或美元符号开头。

int i = 0;
float imageWidth = 0;

2.7 实例变量
大小写规则和类名相似,除了前面需要一个m。

private int mEmployeeId = 0;
private String mName = "";

  1. 资源文件命名规范
    3.1 资源布局文件(XML文件(layout布局文件)):
    全部小写,采用下划线命名法
  • 必须以全部单词小写,单词间以下划线分割,使用名词或名词词组。所有Activity或Fragment的contentView必须与其类名对应,对应规则为:将所有字母都转为小写,将类型和功能调换(也就是后缀变前缀)。
资源布局文件命名3.1.png
  • Dialog命名:dialog_描述.xml

dialog_hint.xml

3.2 资源文件(图片drawable文件夹下)
全部小写,采用下划线命名法,加前缀区分
命名模式:可加后缀 small 表示小图, big 表示大图,逻辑名称可由多个单词加下划线组成,采用以下规则:
控件类型
模块名
逻辑名称
控件类型模块名颜色
控件类型逻辑名称
控件类型
颜色

btn_main_home.png 按键
divider_maket_white.png 分割线
ic_edit.png 图标
bg_main.png 背景
btn_red.png 红色按键
btn_red_big.png 红色大按键
ic_head_small.png 小头像
bg_input.png 输入框背景
divider_white.png 白色分割线

3.3 layout中的id命名
命名模式为:view缩写_view的逻辑名称

<EditText 
        android:id="@+id/et_username"/>
<Button 
        android:id="@+id/btn_login"/>

UI控件缩写表

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

推荐阅读更多精彩内容

  • Android编码规范 源文件基础 文件名 源文件以其最顶层的类名来命名,大小写敏感,文件扩展名为.java。 文...
    呼呼哥阅读 878评论 0 0
  • Android 编码规范 1. 前言 这份文档是 Google Java Code Style 的译文,并稍有添加...
    人失忆阅读 423评论 0 3
  • 作者:李旺成 时间:2016年4月3日 1. 前言 这份文档参考了 Google Java 编程风格规范和 Goo...
    diygreen阅读 39,659评论 19 224
  • 介绍 为什么需要编码规范? 编码规范对于程序员而言尤为重要,有以下几个原因:  一个软件的生命周期中,80%...
    lucas777阅读 424评论 0 0
  • 源文件规范 文件名:源文件名必须和它包含的顶层类名保持一致,包括大小写,并以.java作为后缀名。 文件编码:所有...
    LilacZiyun阅读 506评论 0 1