在实验3-1中,娄老师的http://www.cnblogs.com/rocedu/p/4795776.html这篇博客中提到了编码标准,我自己是一个代码的强迫症患者,缩进和换行都会严格执行,要不然就会觉得自己的代码不好看(虽然有的时候也不好用),但是因为这篇博客年久失修,给出的链接和照片都已经无法查看,所以直接在百度上查了Google Java Style Guide,也就是Google关于Java语言的编程标准。
https://google.githb.io/styleguide/javaguide.html
这个是Google的官方文档,全英文版本,并不是很难懂,时间关系只看了前3章。
第一章:简介
1.1 术语笔记
在本文件中, 除非另有澄清:
- 术语类的使用包含, 指的是一个 "普通" 类、枚举类、接口或注释类型 (@interface)。
- 术语成员 (类的) 被包含在指嵌套的类、字段、方法或构造函数;也就是说, 类的所有顶级内容, 除了初始化器和注释。
- "注释" 一词始终是指实现注释。我们不使用短语 "文档注释", 而是使用常用术语 "Javadoc"。
其他 "术语说明" 偶尔会出现在整个文档中。
1.2导览说明
本文档中的示例代码是不规范的。也就是说, 虽然这些例子是在谷歌风格, 但它们可能并不能说明表示代码的唯一时尚方式。在示例中进行的可选格式选择不应作为规则强制执行。
第二章:源文件结构
2.1文件名
源文件以其顶级类的类名来命名,大小写敏感,文件扩展名为.java。
2.2文件编码:UTF-8
源文件编码格式为UTF-8
2.3 特殊字符
2.3.1 的空白字符
除了行终止符序列外, ASCII 水平空间字符 (0x20) 是源文件中任何位置显示的唯一空白字符。这意味着:
1.字符串和字符文本中的所有其他空白字符都将被转义。
2.制表符不用于缩进。
2.3.2 特殊转义序列
对于具有特殊转义序列的任何字符 (、 、
、f、
、"、'及), 使用该序列而不是相应的八进制 (例如 12) 或 Unicode (例如 u000a)。
2.3.3非ASCII字符
对于其余的非 ascii 字符, 使用实际的 Unicode 字符 (例如) 或等效 Unicode 转义 (例如 u221e)。选择只取决于哪个使代码更易于阅读和理解, 尽管强烈建议不鼓励使用 unicode 在字符串文本和注释之外进行操作。
第三章:源文件结构
源文件按顺序组成:
- 许可或版权信息 (如果存在)
- 包装声明
- 导入语句
- 正好是一个顶级类
3.1 许可或版权信息 (如果存在)
如果许可证或版权信息属于文件, 则它属于此处。
3.2 包声明
包语句不是换行的。列限制 (第4.4 节, 列限制: 100) 不适用于包语句。
3.3 导入语句
3.3.1 无通配符导入
不使用通配符导入, 无论是静态的还是其他的。
3.3.2 无换行
导入语句不是换行的。列限制 (第4.4 节, 列限制: 100) 不适用于导入语句。
3.3.3 排序和间距
进口的订购方式如下:
所有静态导入在一个块中。
单个块中的所有非静态导入。
如果同时存在静态和非静态导入, 则单个空行将两个块分开。导入语句之间没有其他空行。
在每个块中, 导入的名称按 ASCII 排序顺序显示。(注意: 这与导入语句按 ASCII 排序顺序不一样, 因为 "." 排序 ";"。
3.3.4 类没有静态导入
静态导入不适用于静态嵌套类。它们是在正常进口的情况下进口的。
3.4 类声明
3.4.1 正好是一个顶级类声明
每个顶级类都驻留在自己的源文件中。
类内容的3.4.2 排序
您为班级成员和初始值设定器选择的顺序会对学习能力产生很大影响。然而, 对于如何做到这一点, 并没有单一的正确配方;不同的类可能会以不同的方式对其内容进行排序。
重要的是, 每个类都使用一些逻辑顺序, 如果有人问, 它的维护者可以解释这些顺序。例如, 新方法不只是习惯性地添加到类的末尾, 因为这将产生 "按时间顺序添加日期" 排序, 这不是一个逻辑排序。
3.4.2.1 重载: 从不拆分
当一个类具有多个构造函数或多个同名的方法时, 这些构造函数会按顺序显示, 中间没有其他代码 (甚至没有私有成员)。
参考博客:
https://blog.csdn.net/zen99t/article/details/50763231
参考简书文章:
https://www.jianshu.com/p/c0e5a4a896be