【前面的话】

年后开始正式上班,计划着想做很多事情,但是总会有这样那样的打扰,不知道是自己要求太高还是自我的奋斗意识不够?接下来好好加油。好好学学技术,好好学习英语,好好学习做点自己喜欢的事情,趁着自己还是一个人。

    如果你想要学习关于编码风格方面的知识,建议直接阅读参考资料中的文章,比看我这里写的好多了,这是真心话,我只是写自己的笔记。便于自己在以后的编码中注意。

【问题背景】

在做开发工作的时候,总是被说编码风格不好,现在自己找了Google Java编程风格指南进行学习,希望可以写出清晰的代码。

学习资料】

     1. Google Java编程风格指南,作者:Hawstein

     http://hawstein.com/posts/google-java-style.html

【知识汇总】

一、源文件编码格式为:UTF-8

二、一个源文件按照下面顺序出现:

  1. 许可证或版权信息--如果需要
  2. package语句--出现在一行之内,不能换行
  3. 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)类成员的顺序——每个类应该以某种逻辑去排序它的成员,维护者应该要能解释这种排序逻辑,也就是不能习惯性的将新添加的方法总是放在最后面。重载不能够分开,当一个类有多个构造函数,或是多个同名方法,这些函数/方法应该按顺序出现在一起,中间不要放进其它函数方法。

以上四个部分之间用一个空行隔开

三、大括号

  1. 大括号与if, else, for, do, while语句一起使用,即使只有一条语句(或是空),也应该把大括号写上。
  2. 对于非空块遵循K & R 风格

1)左大括号前不换行

2)左大括号后换行

3)右大括号前换行

4)如果右大括号是一个语句、函数体或类的终止,则右大括号后换行; 否则不换行。例如,如果右大括号后面是else或逗号,则不换行。

3. 空块:可以用简洁版本

一个空的块状结构里什么也不包含,大括号可以简洁地写成{},不需要换行。例外:如果它是一个多块语句的一部分(if/else 或 try/catch/finally) ,即使大括号内没内容,右大括号也要换行。

四、每当开始一个新的块,缩进增加2个空格

五、一行一个语句

六、列限制:80100

例外:

  1. 不可能满足列限制的行(例如,Javadoc中的一个长URL,或是一个长的JSNI方法参考)。
  2. package和import语句
  3. 注释中那些可能被剪切并粘贴到shell中的命令行

七、自动换行

  1. 一般情况下,一行长代码为了避免超出列限制(80或100个字符)而被分为多行,我们称之为自动换行(line-wrapping)。
  2. 从哪里断开——自动换行的基本准则是:更倾向于在更高的语法级别处断开

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编程风格指南(上)的更多相关文章

  1. 读书笔记 |Google C++编程风格指南

    Google C++编程风格指南 ## 0. 背景 每一个C++程序员都知道,C++具有很多强大的语言特性,但这种强大不可避免的导致它的复杂,这种复杂会使得代码更易于出现bug.难于阅读和维护. 本指 ...

  2. Google C++编程风格指南 - 中文版

    Google C++编程风格指南 - 中文版 from http://code.google.com/p/google-styleguide/ 版本: 3.133原作者: Benjy Weinberg ...

  3. google C++编程风格指南之头文件的包括顺序

    google C++编程风格对头文件的包括顺序作出例如以下指示: (1)为了加强可读性和避免隐含依赖,应使用以下的顺序:C标准库.C++标准库.其他库的头文件.你自己project的头文件.只是这里最 ...

  4. Java学习笔记心得——初识Java

    初识Java 拿到这本厚厚的<Java学习笔记>,翻开目录:Java平台概论.从JDK到TDE.认识对象.封装.继承与多态...看着这些似懂非懂的术语名词,心里怀着些好奇与担忧,就这样我开 ...

  5. Google C++编程风格指南

    作者:Hawstein 出处:http://hawstein.com/posts/google-cpp-style-guide.html 前言 越来越发现一致的编程风格的重要性,于是把Google的C ...

  6. Java学习笔记四---打包成双击可运行的jar文件

    写笔记四前的脑回路是这样的: 前面的学习笔记二,提到3个环境变量,其中java_home好理解,就是jdk安装路径:classpath指向类文件的搜索路径:path指向可执行程序的搜索路径.这里的类文 ...

  7. Java学习笔记之:Java简介

    一.引言 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称.由James Gosling和同事们共同研发,并在1995年正式推出. ...

  8. Java学习笔记三十一:Java 包(package)

    Java 包(package) 一:包的作用: 如果我们在使用eclipse等工具创建Java工程的时候,经常会创建包,那么,这个包是什么呢. 为了更好地组织类,Java 提供了包机制,用于区别类名的 ...

  9. Java 学习笔记 ------第一章 Java平台概论

    本章学习目标: Java版本迁移简介 认识Java SE.Java EE.Java ME 认识JDK规范与操作 了解JVM.JRE与JDK 下载与安装JDK 一.Java版本迁移简介 书上已经表达得非 ...

  10. 【Java学习笔记之一】java关键字及作用

    Java关键字及其作用 一. 总览: 访问控制 private protected public 类,方法和变量修饰符 abstract class extends final implements ...

随机推荐

  1. Python Memcached Script

    介绍 利用 python 书写了 memcached 的启动等一类操作 尽量的实现脚本的复用性,以及脚本的可扩展性,已达到一劳永逸的效果, 并且添加了 memcached 监控搭建 memcached ...

  2. Go

    一.简介 https://zh.wikipedia.org/wiki/Go 二.安装 1)低版本 http://blog.sina.com.cn/s/blog_59cc90640102xm8r.htm ...

  3. 17110 Divisible(basic)

    17110 Divisible 时间限制:1000MS  内存限制:65535K 题型: 编程题   语言: 无限制 Description Given n + m integers, I1,I2,. ...

  4. 开创学习的四核时代-迅为iTOP4412学习开发板

    产品特点: 处理器: Exynos 4412 处理器,Cortex-A9四核,功耗性能俱佳! 性能: 1GB(可选2GB) 双通道 64bit数据总线 DDR3: 4GB(可选16GB)固态硬盘EMM ...

  5. codeforces 713B B. Searching Rectangles(二分)

    题目链接: B. Searching Rectangles time limit per test 1 second memory limit per test 256 megabytes input ...

  6. 本地不安装Oracle,plsql远程连接数据库

    由于Oracle的庞大,有时候我们需要在只安装Oracle客户端如plsql.toad等的情况下去连接远程数据库,可是没有安装Oracle就没有一切的配置文件去支持.最后终于发现一个很有效的方法,Or ...

  7. java 11-7String类里的方法的一些案例

    1. 把int数组拼接成字符串的案例 需求:把数组中的数据按照指定个格式拼接成一个字符串 举例: int[] arr = {1,2,3}; 分析: A:首先定义一个空的字符串 B:其次先给这个字符串拼 ...

  8. 转载 ---> UITableViewCell的分割线

    在iOS7中,表格中经常看到的一个情况是如下所示, 解决方法: 1,手写代码控制   1 self.tableView.separatorInset = UIEdgeInsetsMake(0, 0, ...

  9. 查看mysqll账号信息

    也可以删除,和操作其他普通表一样

  10. jenkins配置记录(1)--添加用户权限

    前一阵子在线上部署了一套jenkins环境,作为线上代码发布平台使用.部署记录:http://www.cnblogs.com/kevingrace/p/5651427.html 下面重点记录下jenk ...