Java学习笔记(四)——google java编程风格指南(上)
【前面的话】
年后开始正式上班,计划着想做很多事情,但是总会有这样那样的打扰,不知道是自己要求太高还是自我的奋斗意识不够?接下来好好加油。好好学学技术,好好学习英语,好好学习做点自己喜欢的事情,趁着自己还是一个人。
如果你想要学习关于编码风格方面的知识,建议直接阅读参考资料中的文章,比看我这里写的好多了,这是真心话,我只是写自己的笔记。便于自己在以后的编码中注意。
【问题背景】
在做开发工作的时候,总是被说编码风格不好,现在自己找了Google Java编程风格指南进行学习,希望可以写出清晰的代码。
【学习资料】
1. Google Java编程风格指南,作者:Hawstein
http://hawstein.com/posts/google-java-style.html
【知识汇总】
一、源文件编码格式为:UTF-8
二、一个源文件按照下面顺序出现:
- 许可证或版权信息--如果需要
- package语句--出现在一行之内,不能换行
- import语句
1)出现在一行之内,不能换行;
2)不要出现通配符;
3)顺序和间距:
a)所有的静态导入独立成组,import static java.lang.System.out;
b)com.google import(仅当这个源文件是在com.google包下)
c)第三方的包。每个顶级包为一组,字典序。例如:android,com,junit,org,sun。
d)java imports
e)javax imports
组内不空行,按字典序排列
4. 一个顶级类
1)有且只有一个
2)类成员的顺序——每个类应该以某种逻辑去排序它的成员,维护者应该要能解释这种排序逻辑,也就是不能习惯性的将新添加的方法总是放在最后面。重载不能够分开,当一个类有多个构造函数,或是多个同名方法,这些函数/方法应该按顺序出现在一起,中间不要放进其它函数方法。
以上四个部分之间用一个空行隔开
三、大括号
- 大括号与
if, else, for, do, while
语句一起使用,即使只有一条语句(或是空),也应该把大括号写上。 - 对于非空块遵循K & R 风格
1)左大括号前不换行
2)左大括号后换行
3)右大括号前换行
4)如果右大括号是一个语句、函数体或类的终止,则右大括号后换行; 否则不换行。例如,如果右大括号后面是else或逗号,则不换行。
3. 空块:可以用简洁版本
一个空的块状结构里什么也不包含,大括号可以简洁地写成{},不需要换行。例外:如果它是一个多块语句的一部分(if/else 或 try/catch/finally) ,即使大括号内没内容,右大括号也要换行。
四、每当开始一个新的块,缩进增加2个空格
五、一行一个语句
六、列限制:80或100
例外:
- 不可能满足列限制的行(例如,Javadoc中的一个长URL,或是一个长的JSNI方法参考)。
- package和import语句
- 注释中那些可能被剪切并粘贴到shell中的命令行
七、自动换行
- 一般情况下,一行长代码为了避免超出列限制(80或100个字符)而被分为多行,我们称之为自动换行(line-wrapping)。
- 从哪里断开——自动换行的基本准则是:更倾向于在更高的语法级别处断开
1)如果在非赋值运算符处断开,那么在该符号前断开(比如+,它将位于下一行)。注意:这一点与Google其它语言的编程风格不同(如C++和JavaScript)。这条规则也适用于以下“类运算符”符号:点分隔符(.),类型界限中的&(<T extends Foo & Bar>),catch块中的管道符号(catch (FooException | BarException e)
2)如果在赋值运算符处断开,通常的做法是在该符号后断开(比如=,它与前面的内容留在同一行)。这条规则也适用于foreach语句中的分号。
3)方法名或构造函数名与左括号留在同一行。
4)逗号(,)与其前面的内容留在同一行。
3.自动换行时缩进至少+4个空格
八、空白
1. 垂直空白——一个空行
1)类内连续的成员之间:字段,构造函数,方法,嵌套类,静态初始化块,实例初始化块。例外:两个连续字段之间的空行是可选的,用于字段的空行主要用来对字段进行逻辑分组。
2)在函数体内,语句的逻辑分组间使用空行。
3)类内的第一个成员前或最后一个成员后的空行是可选的(既不鼓励也不反对这样做,视个人喜好而定)。
4)要满足本文档中其他节的空行要求(比如import语句)
2.水平空白——除了语言需求和其它规则,并且除了文字,注释和Javadoc用到单个空格,单个ASCII空格也出现在以下几个地方:
1)分隔任何保留字与紧随其后的左括号(()(如if, for catch等)。
2)分隔任何保留字与其前面的右大括号(})(如else, catch)。
3)在任何左大括号前({),两个例外:
a)@SomeAnnotation({a, b})(不使用空格)。
b)String[][] x = foo;(大括号间没有空格,见下面的Note)。
4)在任何二元或三元运算符的两侧。这也适用于以下“类运算符”符号:
a)类型界限中的&(<T extends Foo & Bar>)。
b)catch块中的管道符号(catch (FooException | BarException e)。
c)foreach语句中的分号。
5)在, : ;及右括号())后
6)如果在一条语句后做注释,则双斜杠(//)两边都要空格。这里可以允许多个空格,但没有必要。
7)类型和变量之间:List list。
8)数组初始化中,大括号内的空格是可选的,即new int[] {5, 6}和new int[] { 5, 6 }都是可以的。
3.水平对齐:不做要求
未对齐的代码:主要是看x
private int x; // this is fine
private Color color; // this too
对齐的代码:主要是看x
private int x; // permitted, but future edits
private Color color; // may leave it unaligned
九、在运算等涉及到优先级的地方,要用()的地方一定要用,这样便于理解。
未完待续,见下一篇文章。。。。。。
【后面的话】
要好好爱惜身体,今天有点不舒服。
——TT
Java学习笔记(四)——google java编程风格指南(上)的更多相关文章
- 读书笔记 |Google C++编程风格指南
Google C++编程风格指南 ## 0. 背景 每一个C++程序员都知道,C++具有很多强大的语言特性,但这种强大不可避免的导致它的复杂,这种复杂会使得代码更易于出现bug.难于阅读和维护. 本指 ...
- Google C++编程风格指南 - 中文版
Google C++编程风格指南 - 中文版 from http://code.google.com/p/google-styleguide/ 版本: 3.133原作者: Benjy Weinberg ...
- google C++编程风格指南之头文件的包括顺序
google C++编程风格对头文件的包括顺序作出例如以下指示: (1)为了加强可读性和避免隐含依赖,应使用以下的顺序:C标准库.C++标准库.其他库的头文件.你自己project的头文件.只是这里最 ...
- Java学习笔记心得——初识Java
初识Java 拿到这本厚厚的<Java学习笔记>,翻开目录:Java平台概论.从JDK到TDE.认识对象.封装.继承与多态...看着这些似懂非懂的术语名词,心里怀着些好奇与担忧,就这样我开 ...
- Google C++编程风格指南
作者:Hawstein 出处:http://hawstein.com/posts/google-cpp-style-guide.html 前言 越来越发现一致的编程风格的重要性,于是把Google的C ...
- Java学习笔记四---打包成双击可运行的jar文件
写笔记四前的脑回路是这样的: 前面的学习笔记二,提到3个环境变量,其中java_home好理解,就是jdk安装路径:classpath指向类文件的搜索路径:path指向可执行程序的搜索路径.这里的类文 ...
- Java学习笔记之:Java简介
一.引言 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称.由James Gosling和同事们共同研发,并在1995年正式推出. ...
- Java学习笔记三十一:Java 包(package)
Java 包(package) 一:包的作用: 如果我们在使用eclipse等工具创建Java工程的时候,经常会创建包,那么,这个包是什么呢. 为了更好地组织类,Java 提供了包机制,用于区别类名的 ...
- Java 学习笔记 ------第一章 Java平台概论
本章学习目标: Java版本迁移简介 认识Java SE.Java EE.Java ME 认识JDK规范与操作 了解JVM.JRE与JDK 下载与安装JDK 一.Java版本迁移简介 书上已经表达得非 ...
- 【Java学习笔记之一】java关键字及作用
Java关键字及其作用 一. 总览: 访问控制 private protected public 类,方法和变量修饰符 abstract class extends final implements ...
随机推荐
- Python Memcached Script
介绍 利用 python 书写了 memcached 的启动等一类操作 尽量的实现脚本的复用性,以及脚本的可扩展性,已达到一劳永逸的效果, 并且添加了 memcached 监控搭建 memcached ...
- Go
一.简介 https://zh.wikipedia.org/wiki/Go 二.安装 1)低版本 http://blog.sina.com.cn/s/blog_59cc90640102xm8r.htm ...
- 17110 Divisible(basic)
17110 Divisible 时间限制:1000MS 内存限制:65535K 题型: 编程题 语言: 无限制 Description Given n + m integers, I1,I2,. ...
- 开创学习的四核时代-迅为iTOP4412学习开发板
产品特点: 处理器: Exynos 4412 处理器,Cortex-A9四核,功耗性能俱佳! 性能: 1GB(可选2GB) 双通道 64bit数据总线 DDR3: 4GB(可选16GB)固态硬盘EMM ...
- codeforces 713B B. Searching Rectangles(二分)
题目链接: B. Searching Rectangles time limit per test 1 second memory limit per test 256 megabytes input ...
- 本地不安装Oracle,plsql远程连接数据库
由于Oracle的庞大,有时候我们需要在只安装Oracle客户端如plsql.toad等的情况下去连接远程数据库,可是没有安装Oracle就没有一切的配置文件去支持.最后终于发现一个很有效的方法,Or ...
- java 11-7String类里的方法的一些案例
1. 把int数组拼接成字符串的案例 需求:把数组中的数据按照指定个格式拼接成一个字符串 举例: int[] arr = {1,2,3}; 分析: A:首先定义一个空的字符串 B:其次先给这个字符串拼 ...
- 转载 ---> UITableViewCell的分割线
在iOS7中,表格中经常看到的一个情况是如下所示, 解决方法: 1,手写代码控制 1 self.tableView.separatorInset = UIEdgeInsetsMake(0, 0, ...
- 查看mysqll账号信息
也可以删除,和操作其他普通表一样
- jenkins配置记录(1)--添加用户权限
前一阵子在线上部署了一套jenkins环境,作为线上代码发布平台使用.部署记录:http://www.cnblogs.com/kevingrace/p/5651427.html 下面重点记录下jenk ...