zoukankan      html  css  js  c++  java
  • Java学习笔记(四)——google java编程风格指南(上)

    【前面的话】

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

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

    【问题背景】

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

    学习资料】

         1Google 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

  • 相关阅读:
    poj 2584 T-Shirt Gumbo (二分匹配)
    hdu 1757 A Simple Math Problem (乘法矩阵)
    矩阵之矩阵乘法(转载)
    poj 2239 Selecting Courses (二分匹配)
    hdu 3661 Assignments (贪心)
    hdu 1348 Wall (凸包)
    poj 2060 Taxi Cab Scheme (二分匹配)
    hdu 2202 最大三角形 (凸包)
    hdu 1577 WisKey的眼神 (数学几何)
    poj 1719 Shooting Contest (二分匹配)
  • 原文地址:https://www.cnblogs.com/xt0810/p/3543972.html
Copyright © 2011-2022 走看看