Java编码规范

简介:   本文讲述了Java语言的编码规范,也是我多年书写java代码的总结。其中借鉴了oracle官方的java规范,并且结合现代互联网企业对java代码的要求,以及自己在代码书写过程中的感悟。尽量做到使代码美观,易读,易维护。由于美观,易读的代码有很多种形式,所以我只介绍我使用的形式。其实对于公司或者

Java编码规范

  本文讲述了Java语言的编码规范,也是我多年书写java代码的总结。其中借鉴了oracle官方的java规范,并且结合现代互联网企业对java代码的要求,以及自己在代码书写过程中的感悟。尽量做到使代码美观,易读,易维护。由于美观,易读的代码有很多种形式,所以我只介绍我使用的形式。其实对于公司或者团队来说,也只需要一种,也只能是其中一种。当然有些简单,大家一直在使用的规律,可能不会全部写出来,可以直接看官方文档。

  • 缩进
  • 注释
  • 声明
  • 语句
  • 命名规范
  • 代码范例

1.缩进

  1. 4个空格常被作为缩进排版的一个单位。缩进的确切解释并未详细指定(空格 vs. 制表符)。一个制表符等于8个空格(而非4个)。
  2. 尽量避免一行的长度超过80个字符,因为很多终端和工具不能很好处理。
  3. 当一个表达式无法容纳在一行时,可以依据以下规则断开

1.在逗号后面断开
2.在操作符前面断开
3.宁可选择较高级别(higher-level)的断开,而非较低级别(lower-level)的断开
4.新的一行应该与上一行同一级别表达式的开头处对齐
5.如果以上规则导致你的代码混乱或者使你的代码都堆挤在右边,那就代之以缩进8个空格。

function(longExpression1, longExpression2, longExpression3,
 longExpression4, longExpression5);

var = function1(longExpression1,
               function2(longExpression2,
                         longExpression3));

2.注释
Java程序有两类注释:实现注释(implementation comments)和文档注释(document comments)。实现注释是那些在C++中见过的,使用/…/和//界定的注释。文档注释(被称为”doc comments”)是Java独有的,并由/*…/界定。文档注释可以通过javadoc工具转换成HTML文件。

在注释里,对设计决策中重要的或者不是显而易见的地方进行说明是可以的,但应避免提供代码中己清晰表达出来的重复信息。多余的的注释很容易过时。

频繁的注释有时反映出代码的低质量。当你觉得被迫要加注释的时候,考虑一下重写代码使其更清晰。

块注释

块注释通常用于提供对文件,方法,数据结构和算法的描述。块注释被置于每个文件的开始处以及每个方法之前。它们也可以被用于其他地方,比如方法内部。在功能和方法内部的块注释应该和它们所描述的代码具有一样的缩进格式。

块注释之首应该有一个空行,用于把块注释和代码分割开来,比如:

/*
* Here is a block comment.
*/

单行注释

单行注释(Single-Line Comments)。单行注释之前应该有一个空行。以下是一个Java代码中单行注释的例子:

极短的注释可以与它们所要描述的代码位于同一行,但是应该有足够的空白来分开代码和注释。若有多个短注释出现于大段代码中,它们应该具有相同的缩进。

if (a == 2) {
          return TRUE;              /* special case */
          } else {
          return isPrime(a);         /* works only for odd a */
          }

文档注释

文档注释描述Java的类、接口、构造器,方法,以及字段(field)。每个文档注释都会被置于注释定界符/*…/之中,一个注释对应一个类、接口或成员。该注释应位于声明之前:

/**
           * The Example class provides ...
           */
           public class Example { ...

若你想给出有关类、接口、变量或方法的信息,而这些信息又不适合写在文档中,则可使用实现块注释或紧跟在声明后面的单行注释。例如,有关一个类实现的细节,应放入紧跟在类声明后面的实现块注释中,而不是放在文档注释中。

文档注释不能放在一个方法或构造器的定义块中,因为Java会将位于文档注释之后的第一个声明与其相关联。

3.声明(Declarations)

  1. 每行只声明一个变量(方便注释)
  2. 尽量在声明局部变量的同时初始化,如int i=0;唯一不这么做的理由是变量的初始值依赖于某些先前发生的计算
  3. 只在代码块的开始处声明变量(否则会妨碍代码在该作用域内的可移植性)

  4. myMethod() {
    int int1 = 0; // beginning of method block
    if (condition) {
    int int2 = 0; // beginning of "if" block
    ...
    }
    }

  5. 在方法名与其参数列表之前的左括号”(“间不要有空格
  6. 左大括号”{“位于声明语句同行的末尾
  7. 右大括号”}”另起一行,与相应的声明语句对齐,除非是一个空语句,”}”应紧跟在”{“之后

  8. Sample extends Object {
    int ivar1;
    int ivar2;
    Sample(int i, int j) {
    ivar1 = i;
    ivar2 = j;
    }
    int emptyMethod() {}
    ...
    }

  9. 方法与方法之间以空行分隔
  10. 注意:if语句总是用”{“和”}”括起来,避免使用如下容易引起错误的格式:
if (condition) //AVOID! THIS OMITS THE BRACES {}!
            statement;

4.命名规范(Naming Conventions)

包(Packages)

一个唯一包名的前缀总是全部小写的ASCII字母并且是一个顶级域名,通常是com,edu,gov,mil,net,org。包名的后续部分根据不同机构各自内部的命名规范而不尽相同。这类命名规范可能以特定目录名的组成来区分部门(department),项目(project),机器(machine),或注册名(login names)。
com.sun.eng
com.apple.quicktime.v2
edu.cmu.cs.bovik.cheese
类(Classes)
类名是个一名词,采用大小写混合的方式,每个单词的首字母大写。尽量使你的类名简洁而富于描述。使用完整单词,避免缩写词(除非该缩写词被更广泛使用,像URL,HTML)
class Raster;
class ImageSprite;
接口(Interfaces)
大小写规则与类名相似
interface RasterDelegate;
interface Storing;
方法(Methods)
方法名是一个动词,第一个单词的首字母小写,其后单词的首字母大写。
run();
runFast();
getBackground();
变量(Variables)
变量名应简短且富于描述。变量名的选用应该易于记忆,即,能够指出其用途。尽量避免单个字符的变量名,除非是一次性的临时变量。临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,它们一般用于字符型。
char c;
int i;
float myWidth;
全局变量(Global Variables)
大小写规则和变量名相似,除了前面需要一个”m_” ,类似于C++
String m_name;
Customer m_customer;

只有你看过很多的代码,很复杂的代码,你才知道知道一个变量是全局的重要性。然而很多程序员都不这样做

常量(Constants)
类常量和ANSI常量的声明,应该全部大写,单词间用下划线隔开。(尽量避免ANSI常量,容易引起错误)
static final int MIN_WIDTH = 4;
static final int MAX_WIDTH = 999;
static final int GET_THE_CPU = 1;

5.代码例子(Code Examples)

/*
            *
            * Copyright (c) 1998-2016 glowd.
            * 2046 Century Road,WUHOU, CHENGDU,CHINA.
            * All rights reserved.
            */
            package com.glowd;
            import com.glowd.silver;
            /**
            * Class description goes here.
            *
            * @version  1.23 18 Mar 2016
            * @author   glowd
            */
            public class Glowd extends God{
                /* A class implementation comment can go here. */
                /** m_num documentation comment */
                public static int m_num;
                /**
                * m_ideaPointdocumentation comment 
                * that happens to be
                * more than one line long
                */
                private static Object m_ideaPoint;
                /** m_friend documentation comment */
                public Object m_friend;
                /** m_students documentation comment */
                private Object[] m_students;
                /**
                * ...constructor glowd documentation comment...
                */
                public Glowd() {
                // ...implementation goes here...
                }
                /**
                * ...method doSomething documentation comment...
                */
                public void doSomething() {
                // ...implementation goes here...
                }
                /**
                * ...method doSomething Else documentation comment...
                * @param someParam description
                */
                public void doSomethingElse(Object someParam) {
                // ...implementation goes here...
                }
            }

作者:glowd
原文:https://blog.csdn.net/zengqiang1/article/details/53113549
版权声明:本文为博主原创文章,转载请附上博文链接!

相关文章
|
安全 Java 容器
阿里巴巴编码规范(Java)证明(下)
阿里云上有个阿里巴巴编码规范认证,我估算一下时间成本很低,多个认证也没什么坏处,就花了1分钱报了个名。这个认证报名后就可以下载链接下的编码规范,然后参加个考试应该就OK了。 共48页的规范实际上每读一遍都是要花一些时间的,因为每读一遍就会发现上面有些东西我不信。我需要去证明。过去证明过的因为JDK版本升级迭代有可能需要继续证明。下面是其中的一些证明过程。
阿里巴巴编码规范(Java)证明(下)
|
5月前
|
XML IDE Java
Nutz Java 编码规范 (V1.0)
Nutz Java 编码规范 (V1.0)
65 0
|
10月前
|
开发框架 Oracle 安全
JAVA简介及其编码规范
Java的发展 Sun公司1995年推出、96发布JDK1.0、19年发布J2SE、J2EE、 J2ME、05年、09年被Oracle收购; C/S(Client/Server):需要下载安装本地客户端软件 B/S(Browser/Server):通过浏览器,输入域名可直接访问的软件 Java语言的特点 面向对象: 使用计算机模拟现实世界,解决现实问题,贴近人类思维。 简单: 不易造成内存溢出、减...
121 0
|
SQL XML 安全
java安全编码规范
java安全编码规范
|
Java
JAVA语言编码规范___IDEA常用快捷键__IDEA目录结构
JAVA语言编码规范___IDEA常用快捷键__IDEA目录结构
91 0
JAVA语言编码规范___IDEA常用快捷键__IDEA目录结构
|
存储 安全 Java
华为Java编码规范
华为Java编码规范
701 0
阿里巴巴编码规范(Java)证明(上)
阿里云上有个阿里巴巴编码规范认证,我估算一下时间成本很低,多个认证也没什么坏处,就花了1分钱报了个名。这个认证报名后就可以下载链接下的编码规范,然后参加个考试应该就OK了。 共48页的规范实际上每读一遍都是要花一些时间的,因为每读一遍就会发现上面有些东西我不信。我需要去证明。过去证明过的因为JDK版本升级迭代有可能需要继续证明。下面是其中的一些证明过程。
1189 0
阿里巴巴编码规范(Java)证明(上)
编码规范 | Java函数优雅之道(下)
本文总结了一套与Java函数相关的编码规则,旨在给广大Java程序员一些编码建议,有助于大家编写出更优雅、更高质、更高效的代码。这套编码规则,通过在高德采集部门的实践,已经取得了不错的成效。
|
架构师 Java 索引
Java架构师教你编码规范-如何校验参数?
Java架构师教你编码规范-如何校验参数?
4822 0
Java架构师教你编码规范-如何校验参数?
|
XML IDE 安全
插件推荐:如何将Java编码规范落地实际开发中
阿里近万名Java技术开发者通过不断总结与提炼,并经历了多次大规模一线实战检验及完善,出版了众所周知的《阿里巴巴Java开发手册》,但对于很多人而言,手册始终无法直接应用在日常的开发工作中,如果有相应的IDE插件进行支持,那简直完美。因此,Cloud Toolkit应运而生。
3016 0
插件推荐:如何将Java编码规范落地实际开发中

热门文章

最新文章