`
taody
  • 浏览: 100084 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

《JAVA代码规范》(四)通用代码格式 - 注释(2.7)

 
阅读更多

转载自:http://www.javadt.com/thread-365-1-1.html

 



2.7      注释
Java程序有两类注释:实现注释(implementation comments)和文档注释(document comments)。实现注释是那些在C++中见过的,使用/*...*/和//界定的注释。文档注释(被称为"doc comments")是Java独有的,并由/**...*/界定。文档注释可以通过javadoc工具转换成HTML文件。
注意:频繁的注释有时反映出代码的低质量。当你觉得被迫要加注释的时候,考虑一下重写代码使其更清晰。
2.7.1        注释约定
Ø         注释应该增加代码的清晰度。代码注释的目的是要使代码更易于被同时参与程序设计的开发人员以及其他后继开发人员理解。
Ø         避免使用装饰性内容,也就是说,不要使用象广告横幅那样的注释语句。典型的是用星号将他们的内部注释圈起来。这只是在大量浪费时间,并不能给最终的产品增加丝毫价值。
Ø         保持注释的简洁。最好的注释应该是简单明了的注释。注释不必洋洋洒洒,只需提供足够的信息,使别人能够理解你的代码。
Ø         先写注释,后写代码。写代码注释的最好方法是在写代码之前就写注释。这使你在写代码之前可以想想代码的功能和运行。而且这样确保不会遗漏注释。另一种方法是边写代码边写注释。因为注释可以使代码更易理解,所以在程序开发的过程中,也可以利用这一点。如果打算花些时间写注释,那么至少你应从这个过程中获得些什么 。
Ø         注释信息不仅要包括代码的功能,还应给出原因。例如,下面例子中的代码显示金额在$1,000 以上(包括 $1,000)的定单可给予 5% 的折扣。为什么要这样做呢?难道有一个商业法则规定大额定单可以得到折扣吗?这种给大额定单的特殊是有时限的呢,还是一直都这样?最初的程序设计者是否只是由于慷慨大度才这样做呢?除非它们在某个地方(或者是在源代码本身,或者是在一个外部文档里)被注释出来,否则你不可能知道这些。
例:
if (grandTotal >= 1000.00) {
grandTotal = grandTotal * 0.95;
}
2.7.2        实现注释的格式
程序可以有4种实现注释的风格:块(block)、单行(single-line)、尾端(trailing)和行末(end-of-line)。
Ø        块注释
块注释通常用于提供对文件,方法,数据结构和算法的描述。块注释被置于每个文件的开始处以及每个方法之前。它们也可以被用于其他地方,比如方法内部。在功能和方法内部的块注释应该和它们所描述的代码具有一样的缩进格式。块注释之首应该有一个空行,用于把块注释和代码分割开来,比如:
  /*
   * Here is a block comment.
   */
      
块注释可以以/*-开头,这样indent(1)就可以将之识别为一个代码块的开始,而不会重排它。
   /*-
    * Here is a block comment with some very special
    * formatting that I want indent(1) to ignore.
    *
    *    one
    *        two
    *            three
    */      
Ø        单行注释
短注释可以显示在一行内,并与其后的代码具有一样的缩进层级。如果一个注释不能在一行内写完,就该采用块注释(参见"块注释")。单行注释之前应该有一个空行。以下是一个Java代码中单行注释的例子:
  if (condition) {
    /* Handle the condition. */
    ...
  }
Ø        尾端注释
极短的注释可以与它们所要描述的代码位于同一行,但是应该有足够的空白来分开代码和注释。若有多个短注释出现于大段代码中,它们应该具有相同的缩进。以下是一个Java代码中尾端注释的例子:
  if (a == 2) {
      return TRUE;              /* special case */
  } else {
      return isPrime(a);        /* works only for odd a */
  }
Ø        行末注释
注释界定符"//",可以注释掉整行或者一行中的一部分。它一般不用于连续多行的注释文本;然而,它可以用来注释掉连续多行的代码段。以下是所有三种风格的例子:
  if (foo > 1) {
      // Do a double-flip.
      ...
  }
  else {
      return false;          // Explain why here.
  }
  //if (bar > 1) {
  //
  //    // Do a triple-flip.
  //    ...
  //}
  //else {
  //    return false;
  //}
2.7.3        文档注释
文档注释描述Java的类、接口、构造器,方法,以及字段(field)。每个文档注释都会被置于注释定界符/**...*/之中,一个注释对应一个类、接口或成员。该注释应位于声明之前:
  /**
   * The Example class provides ...
   */
  public class Example { ...
        
注意顶层(top-level)的类和接口是不缩进的,而其成员是缩进的。描述类和接口的文档注释的第一行(/**)不需缩进;随后的文档注释每行都缩进1格(使星号纵向对齐)。成员,包括构造函数在内,其文档注释的第一行缩进4格,随后每行都缩进5格。
若你想给出有关类、接口、变量或方法的信息,而这些信息又不适合写在文档中,则可使用实现块注释或紧跟在声明后面的单行注释。例如,有关一个类实现的细节,应放入紧跟在类声明后面的实现块注释中,而不是放在文档注释中。
文档注释不能放在一个方法或构造器的定义块中,因为Java会将位于文档注释之后的第一个声明与其相关联。
2.7.4        快速浏览 javadoc
javadoc 的程序可以处理 Java 的源代码文件,并且为 Java 程序产生 HTML 文件形式的外部注释文档。Javadoc 支持一定数目的标记,标识注释文档中各段起始位置的保留字。详情请参考J2SDK javadoc 文档。
标记
用于
目的
@author name
类、
接口
说明特定某一段程序代码的作者。每一个作者各有一个标记。
@deprecated
类、
成员函数
说明该类的应用程序编程接口 (API) 已被废弃,因此应不再使用。
@exception name description
成员函数
说明由成员函数发出的异常。一个异常采用一个标记,并要给出异常的完整类名。
@param name description
成员函数
用来说明传递给一个成员函数的参数,其中包括参数的类型/类和用法。每个参数各有一个标记。
@return description
成员函数
若成员函数有返回值,对该返回值进行说明。应说明返回值的类型/类和可能的用途。
@since
类、成员函数
说明自从有 JDK 1.1 以来,该项已存在了多长时间。
@see ClassName
类、接口、成员函数、字段
在文档中生成指向特定类的超文本链接。可以并且应该采用完全合法的类名。
@see ClassName#member functionName
类、接口、成员函数、字段
在文档中生成指向特定成员函数的超文本链接。可以并且应该采用完全合法的类名。
@version text
类、接口
说明特定一段代码的版本信息。

转载请注明:http://www.javadt.com
分享到:
评论

相关推荐

    JAVA编程规范

    ### JAVA编程规范详解 #### 1. 为什么要有编码规范 在软件开发过程中,编码规范扮演着极其重要的角色。良好的编码规范能够确保代码的一致性和可读性,这对于团队合作和后期维护至关重要。以下是几个主要的原因: ...

    Java_开发规范,值得看一看

    本规范适用于所有的Java源代码,包括但不限于类、接口、方法、变量的定义,以及注释和文档的编写。 1.3 **参考文档** 开发者可以参考Oracle官方的Java编程指南,以及业界广泛认可的Google Java Style Guide和...

    个人笔记--JAVA基础

    代码注释与代码规范** - **代码注释** - 单行注释:`//` - 多行注释:`/* */` - 文档注释:`/** */` - **代码规范** - 遵循统一的编码风格,如命名规则、缩进等。 - 保持代码清晰易读,合理使用空行和空白...

    Thinking in Java 中文第四版+习题答案

    附录A 使用非Java代码 A.1 Java固有接口 A.1.1 调用固有方法 A.1.2 访问JNI函数:JNIEnv自变量 A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3.1 @...

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

    附录A 使用非Java代码 A.1 Java固有接口 A.1.1 调用固有方法 A.1.2 访问JNI函数:JNIEnv自变量 A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3 J/...

    java资料面试题

    1. **编写源代码**:使用文本编辑器或其他 IDE 编写 Java 源代码。 2. **编译**:使用 JDK 中的 javac 编译器将源代码编译成字节码 (.class 文件)。 3. **加载与解释执行**:Java 虚拟机 (JVM) 加载字节码文件,并将...

    java 讲师笔记

    2.16 Java基础其他注意事项:学习过程中需要注意的其他事项,例如代码规范、性能优化建议等。 面向对象知识点: 3.1 类:类是Java语言中定义对象的模板或蓝图。 3.2 对象:对象是类的实例。 3.3 包:包是一种管理类...

    Think in Java(中文版)chm格式

    附录A 使用非Java代码 A.1 Java固有接口 A.1.1 调用固有方法 A.1.2 访问JNI函数:JNIEnv自变量 A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 ...

    Thinking in Java(中文版 由yyc,spirit整理).chm

    附录A 使用非Java代码 A.1 Java固有接口 A.1.1 调用固有方法 A.1.2 访问JNI函数:JNIEnv自变量 A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3 J/...

    java 编程入门思考

    附录A 使用非Java代码 A.1 Java固有接口 A.1.1 调用固有方法 A.1.2 访问JNI函数:JNIEnv自变量 A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3 J/...

    Android开发编码规范

    - 《阿里巴巴Java开发手册》:作为基础框架,提供了通用的编码指导原则。 - Android官方文档:提供最新的API和最佳实践。 #### 2. 整体规范 ##### 2.1 Android命名与使用 **规范要点:** 1. **类名**:首字母...

    Java初学者入门教学

    附录A 使用非Java代码 A.1 Java固有接口 A.1.1 调用固有方法 A.1.2 访问JNI函数:JNIEnv自变量 A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3 J/...

    java联想(中文)

    附录A 使用非Java代码 A.1 Java固有接口 A.1.1 调用固有方法 A.1.2 访问JNI函数:JNIEnv自变量 A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3 J/...

    JAVA_Thinking in Java

    附录A 使用非Java代码 A.1 Java固有接口 A.1.1 调用固有方法 A.1.2 访问JNI函数:JNIEnv自变量 A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3 J/...

    spring data jpa1.7 中文

    - 可以为所有的 Repository 实例添加通用的行为。 - 示例: ```java public interface MyCustomOperations<T> { List<T> findCustom(String name); } ``` ##### 2.7 Spring 数据扩展 - **Spring MVC 支持**:...

    Thinking in Java简体中文(全)

    附录A 使用非Java代码 A.1 Java固有接口 A.1.1 调用固有方法 A.1.2 访问JNI函数:JNIEnv自变量 A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3 J/...

    JSP网络开发技术与整合应用.pdf

    - **Scriptlet**:在JSP页面中嵌入Java代码片段。 ##### 2.7 JSP表达式 - **表达式**:用于输出变量的值。 #### 三、JSP内置对象 JSP提供了多个内置对象,用于简化开发过程: - **request对象**:处理客户请求...

    前端开发设计规范文档 (2).pdf

    尽量减少页面中的Java代码,将其封装到外部JS文件中,以提高代码复用和页面加载速度。 2.7、网站页面布局规范 2.7.1、前台页面尺寸 考虑响应式设计,确保页面在不同设备上显示良好。 2.7.2、标准网页广告图标规格 ...

    JSP 程序设计从入门到精通 PDF 教程

    - **2.1.3 JSP语法之Scriptlet**:这部分解释了Scriptlet的概念,即在JSP页面中嵌入的Java代码段。 ##### 2.2 JSP的指令 - **2.2.1 page指令(Directive)**:这部分详细介绍了page指令的作用和使用方法,如设置页面...

    iReport-Ultimate-Guide中文手册

    手册中使用的代码遵循一定的格式和标准,以便于读者理解和学习。建议在实际操作中也遵循这些规范,确保代码的一致性和可读性。 #### 二、入门指南 ##### 2.1 平台要求 为了顺利安装和运行iReport,你需要满足以下...

Global site tag (gtag.js) - Google Analytics