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

  • 相关阅读:
    nginx系列之七:限流配置
    nginx系列之六:cache服务
    nginx系列之五: 负载均衡
    nginx系列之四:web服务器
    nginx系列之三:日志配置
    nginx系列之二:配置文件解读
    nginx系列之一:nginx入门
    [面试题]25个MySQL经典面试题
    常用的 Linux iptables 规则
    java new一个对象的过程中发生了什么
  • 原文地址:https://www.cnblogs.com/xt0810/p/3543972.html
Copyright © 2011-2022 走看看