【前面的话】

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

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

【问题背景】

在做开发工作的时候,总是被说编码风格不好,现在自己找了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. 编译流程,C开发常见文件类型名

    编译流程 我们常说的编译是一个整体的概念,是指从源程序到可执行程序的整个过程,实际上,C语言编译的过程可以进一步细分为预编译->编译->汇编->链接 预编译是把include关键字所 ...

  2. 02_嵌套矩形(DAG最长路问题)

    来源:刘汝佳<算法竞赛入门经典--训练指南> P60 问题2: 问题描述:有n个矩形,每个矩形可以用两个整数a,b描述,表示它们的长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中的条件 ...

  3. nyoj 284 坦克大战 简单搜索

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=284 题意:在一个给定图中,铁墙,河流不可走,砖墙走的话,多花费时间1,问从起点到终点至少 ...

  4. CSS中的 backgroundPosition 属性

    body { background-image:url('bgimage.gif'); background-repeat:no-repeat; background-attachment:fixed ...

  5. Linux nmap

    一.简介 Nmap(Network Mapper)是一款开放源代码的网络探测和安全审核工具.它用于快速扫描一个网络和一台主机开放的端口,还能使用TCP/IP协议栈特征探测远程主机的操作系统类型.nma ...

  6. 基于元数据的ETL系统

     从努力到选择  从实现到设计 从部分到整体 以下是我对DW design的一些想法 下次使用C#来实现一下   ETL中Source 的信息       数据提供形式:DB(ORACLE SQLSE ...

  7. NOIP2008 普及组T1 ISBN号码 解题报告-S.B.S.

    题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”就是分隔符(键盘上的减号),最后一 ...

  8. hdu-5904 LCIS(水题)

    题目链接: LCIS Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  9. UESTC 876 爱管闲事 --DP

    题意:即求给定n个数字(a1,a2,……an),不改变序列,分成M份,使每一份和的乘积最大. 思路:dp[i][j]表示把前i个数字,分成j份所能得到的最大乘积. 转移方程:dp[i][j] = ma ...

  10. uGUI VS NGUI

    前言 这篇日志的比较是根据自己掌握知识所写的,请各路大神多多指教. 引擎版本: Unity 4.6 beta 两者区别 1.uGUI的Canvas 有世界坐标和屏幕坐标 2.uGUI的Button属性 ...