目录介绍
1. 命名
1. 为什么需要编码规范
2. 包命名
3. 类和接口命名
4. 方法的命名
5. 变量命名
6. 成员变量命名
7. 常量命名
8. 异常命名
9.layout 命名
10.id 命名
11. 资源命名
2. 注释
1. 文件注释
2. 类注释
3. 方法注释
4. 类成员变量和常量注释
5. 其他注释
6.XML 注释
3. 代码风格
1. 缩进
2. 空行
3. 行宽
4. 其他问题说明
4.1 版本更新情况
4.2 参考链接
4.2 个人博客
0. 备注
建议结合代码, 看博客更加高效, 项目地址: https://github.com/yangchong211/
博客大汇总, 持续更新目录说明, 记录所有开源项目和博客
如果那个项目好, 可以 star 一下
1. 命名
1. 为什么需要编码规范?
编码规范对于程序员而言尤为重要, 有以下几个原因:
一个软件的生命周期中, 80% 的花费在于维护
几乎没有任何一个软件, 在其整个生命周期中, 均由最初的开发人员来维护
编码规范可以改善软件的可读性, 可以让程序员尽快而彻底地理解新的代码
如果你将源码作为产品发布, 就需要确任它是否被很好的打包并且清晰无误, 一如你已构建的其它任何产品
2. 包命名
命名规则:
一个唯一包名的前缀总是全部小写的 ASCII 字母并且是一个顶级域名
通常是 com.edu.gov.mil.net.org 包名的后续部分根据不同机构各自内部的命名规范而不尽相同
这类命名规范可能以特定目录名的组成来区分部门 (department) , 项目(project), 机器(machine), 或注册名(login names)
例如: com.ycbjie.player
规约: 包命名必须以 com.ycbjie 开始, 后面跟有项目名称(或者缩写), 再后面为模块名或层级名称
如: com.ycbjie. 项目缩写. 模块名 com.ycbjie.player.bookmark
如: com.ycbjie. 项目缩写. 层级名 com.ycbjie.player.activities
模块包命名的含义
activity 放 activity 相关的文件
service 放 Service 相关的文件
broadcast 放广播接收者相关的文件
fragment 放 fragment 相关的文件
view 放自定义 view 或者 view 文件
utils 放工具类文件
bean/entry 放实体类文件
http 放请求网络文件
api 放服务器端提供接口的文件
base 放抽取公共类文件
cache 放缓存处理的文件
db 放数据库处理相关的文件
inter 放接口类文件
listener
adapter 放适配器 adapter 相关的文件
callback
3. 类和接口命名
命名规则: 类名是个一名词, 采用大小写混合的方式, 每个单词的首字母大写
尽量使你的类名简洁而富于描述, 见名知意使用完整单词, 避免缩写词(除非该缩写词被更广泛使用, 像 URL,html)
接口一般要使用 ableibleer 等后缀
例如: class Raster; class ImageSprite;
规约: 类名必须使用驼峰规则, 即首字母必须大写, 如果为词组, 则每个单词的首字母也必须要大写, 类名必须使用名词, 或名词词组
如: class BookMarkAdd 正确
如: class AddBookReadPlanActivity 错误! 应为 class BookReadPlanAdd
4. 方法的命名
命名规则: 方法名是一个动词, 采用大小写混合的方式, 第一个单词的首字母小写, 其后单词的首字母大写
例如: public void run(); public String getBookName();
类中常用方法的命名:
类的获取方法 (一般具有返回值) 一般要求在被访问的字段名前加上 get, 如 getFirstName(),getLastName()一般来说, get 前缀方法返回的是单个值, find 前缀的方法返回的是列表值
类的设置方法(一般返回类型为 void): 被访问字段名的前面加上前缀 set, 如 setFirstName(),setLastName().
类的布尔型的判断方法一般要求方法名使用单词 is 或 has 做前缀, 如 isPersistent(),isString()或者使用具有逻辑意义的单词, 例如 equal 或 equals
类的普通方法一般采用完整的英文描述说明成员方法功能, 第一个单词尽可能采用动词, 首字母小写, 如 openFile(),addCount()
构造方法应该用递增的方式写(参数多的写在后面)
toString()方法: 一般情况下, 每个类都应该定义 toString(), 其格式为:
5. 变量命名
命名规则: 第一个单词的首字母小写, 其后单词的首字母大写
变量名不应以下划线或美元符号开头, 尽管这在语法上是允许的
变量名应简短且富于描述变量名的选用应该易于记忆, 即, 能够指出其用途
尽量避免单个字符的变量名, 除非是一次性的临时变量临时变量通常被取名为 i,j,k,m 和 n, 它们一般用于整型; c,d,e, 它们一般用于字符型
规约: 变量命名也必须使用驼峰规则, 但是首字母必须小写, 变量名尽可能的使用名词或名词词组要求简单易懂, 不允许无意义的单词
如: String bookYCName; 正确
如: String bookYCNameString; 错误!
6. 成员变量命名
同变量命名, 但不要在私有变量前添加 m 字样!
7. 常量命名
命名规则: 类常量的声明, 应该全部大写, 单词间用下划线隔开
例如: static final int MIN_WIDTH = 4;
例如: static final int MAX_WIDTH = 999;
例如: static final int GET_THE_CPU = 1;
8. 异常命名
自定义异常的命名必须以 Exception 为结尾已明确标示为一个异常
9.layout 命名
规约: layout xml 的命名必须以 全部单词小写, 单词间以下划线分割, 并且使用名词或名词词组, 即使用 模块名_功能名称 来命名
如: knowledge_gained_main.xml 正确
如: list_book.xml 错误!
10.id 命名
规约: layout 中所使用的 id 必须以全部单词小写, 单词间以下划线分割, 并且使用名词或名词词组, 要求能够通过 id 直接理解当前组件要实现的功能
如: 某 TextView @+id/tvbookname 错误 ! 应为 @+id/tv_book_name
如: 某 EditText @+id/etbookname 错误 ! 应为 @+id/et_book_name
11. 资源命名
规约: layout 中所使用的所有资源 (如 drawable,style 等) 命名必须以全部单词小写, 单词间以下划线分割, 并且尽可能的使用名词或名词组, 即使用 模块名_用途 来命名如果为公共资源, 如分割线等, 则直接用用途来命名
如: menu_icon_navigate.png 正确
如: 某分割线: line.png 或 separator.png 正确
2. 注释
Java 程序有两类注释:
实现注释(implementation comments), 实现注释是使用 /.../ 和 // 界定的注释
文档注释 (document comments) 文档注释由 /*.../ 界定文档注释可以通过 javadoc 工具转换成 HTML 文件
1. 文件注释
来源: http://click.aliyun.com/m/42033/