1.       缩进排版(Indentation)

4个空格常被作为缩进排版的一个单位。缩进的确切解释并未详细指定(空格 vs. 制表符)。一个制表符等于n个空格(视具体的编辑器而定,Eclipse默认一个制表符为4个字符)。

3.1    行长度(Line Length)

尽量避免一行的长度超过80个字符,因为很多终端和工具不能很好处理之。

注意:鉴于Eclipse开发工具工作区的左侧和右侧都被非代码编辑器所占据,因此建议每行的代码长度不要超过70个字符。

3.2    换行(Wrapping Lines)

当一个表达式无法容纳在一行内时,可以依据如下一般规则断开之:

·在一个逗号后面断开;

·在一个操作符前面断开;

·宁可选择较高级别(higher-level)的断开,而非较低级别(lower-level)的断开;

·新的一行应该与上一行同一级别表达式的开头处对齐。

·如果以上规则导致你的代码混乱或者使你的代码都堆挤在右边,那就代之以缩进8个空格,或者以调用参数的首个括号对齐,或者以首个运算法对齐。

以下是断开方法调用的一些例子:

someMethod(longExpression1, longExpression2, longExpression3, longExpression4,

longExpression5);

var = someMethod1(longExpression1,

someMethod2(longExpression2, longExpression3));

以下是两个断开算术表达式的例子。前者更好,因为断开处位于括号表达式的外边,这是个较高级别的断开。

longName1 = longName2 * ( longName3 + longName4 - longName5 ) +

4 * longname6; //推荐使用

longName1 = longName2 * ( longName3 + longName4

- longName5 ) + 4 * longname6; //应避免这样使用

以下是两个缩进方法声明的例子。前者是常规情形。后者若使用常规的缩进方式将会使第二行和第三行移得很靠右,所以代之以缩进空格,尽量与运算符或者括号对齐。

//CONVENTIONAL INDENTATION

someMethod(int anArg, Object anotherArg, String yetAnotherArg,

Object andStillAnother) {

...

}

//INDENT 8 SPACES TO AVOID VERY DEEP INDENTS

private static synchronized horkingLongMethodName(int anArg,

Object anotherArg, String yetAnotherArg, Object andStillAnother) {

...

}

if语句的换行通常使用8个空格的规则,因为常规缩进(4个空格)会使语句体看起来比较费劲。比如:

//DON’T USE THIS INDENTATION

if ((condition1 && condition2)

|| (condition3 && condition4)

||!(condition5 && condition6)) { //BAD WRAPS

doSomethingAboutIt(); //MAKE THIS LINE EASY TO MISS

}

//USE THIS INDENTATION INSTEAD

if ((condition1 && condition2)

|| (condition3 && condition4)

||!(condition5 && condition6)) {

doSomethingAboutIt();

}

//OR USE THIS

if ((condition1 && condition2) || (condition3 && condition4)

||!(condition5 && condition6)) {

doSomethingAboutIt();

}

这里有三种可行的方法用于处理三元运算表达式:

alpha = (aLongBooleanExpression) ? beta : gamma; //表达式代码不长时,应尽量使用该方法

alpha = (aLongBooleanExpression) ? beta            //表达式代码较长时可以使用该法

: gamma;

alpha = (aLongBooleanExpression)                      //表达式代码较长时也可以使用该法

? beta

: gamma;

2.       注释(Comments)

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

实现注释用以注释代码或者实现细节。文档注释从实现自由(implementation-free)的角度描述代码的规范。它可以被那些手头没有源码的开发人员读懂。

注释应被用来给出代码的总括,并提供代码自身没有提供的附加信息。注释应该仅包含与阅读和理解程序有关的信息。例如,相应的包如何被建立或位于哪个目录下之类的信息不应包括在注释中。

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

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

注释不应写在用星号或其他字符画出来的大框里。注释不应包括诸如制表符和回退符之类的特殊字符。

4.1  实现注释的格式(Implementation Comment Formats)

程序可以有4种实现注释的风格:块(block)、单行(single-line)、尾端(trailing)和行末(end-of-line)。

4.1.1        块注释(Block Comments)

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

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

/*

* 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

*/

注意:如果你不使用indent(1),就不必在代码中使用/*-,或为他人可能对你的代码运行indent(1)作让步。

4.1.2        单行注释(Single-Line Comments)

短注释可以显示在一行内,并与其后的代码具有一样的缩进层级。如果一个注释不能在一行内写完,就该采用块注释(参见“块注释”)。单行注释之前应该有一个空行。以下是一个Java代码中单行注释的例子:

if (condition) {

/* Handle the condition. */

...

}

4.1.3        尾端注释(Trailing Comments)

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

以下是一个Java代码中尾端注释的例子:

if (a == 2) {

return TRUE; /* special case */

} else {

return isPrime(a); /* works only for odd a */

}

4.1.4        行末注释(End-Of-Line Comments)

注释界定符"//",可以注释掉整行或者一行中的一部分。它一般不用于连续多行的注释文本;然而,它可以用来注释掉连续多行的代码段。以下是所有三种风格的例子:

if (foo > 1) {

// Do a double-flip.

...

}

else {

return false; // Explain why here.

}

//if (bar > 1) {

//

//    // Do a triple-flip.

// ...

//}

//else {

// return false;

//}

4.2  文档注释(Documentation Comments)

注意:此处描述的注释格式之范例,参见"Java源文件范例"

若想了解更多,参见"How to Write Doc Comments for Javadoc",其中包含了有关文档注释标记的信息(@return, @param, @see):http://java.sun.com/javadoc/writingdoccomments/index.html

若想了解更多有关文档注释和javadoc的详细资料,参见javadoc的主页: http://java.sun.com/javadoc/index.html

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

/**

* The Example class provides ...

*/

public class Example { ...

注意顶层(top-level)的类和接口是不缩进的,而其成员是缩进的。描述类和接口的文档注释的第一行(/**)不需缩进;随后的文档注释每行都缩进1格(使星号纵向对齐)。成员,包括构造函数在内,其文档注释的第一行缩进4格,随后每行都缩进5格。

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

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

java 缩进_java编码规范_缩进和注释相关推荐

  1. Android编码规范_优码客软件

              Android编码规范 日期 作者 备注 2013年7月30日星期二 王明东 初稿 前  言 编写本规范的目的是为了进一步规范Android软件编程风格,提高软件源程序的可读性.可 ...

  2. 黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三)

    黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三) 1.1 异常概述与异常体系结构 1.2 JVM遇到异常时的默认处理方案 1.3 异常处理 1.4 异常处理之try--catch ...

  3. java开发用allman风格_缩进风格

    在程序设计中,缩进风格(indent style)是管理代码块(英语:Block (programming))缩进(英语:Indentation (typesetting))以表达程序结构的一种约定. ...

  4. 编码规范二 缩进与注释

    编码规范 缩进与注释 目标: 通过缩进与注释,让代码更易于阅读 缩进 三种注释 例子 单行注释 演练 用法 // 我是单行注释,描述内容只能写在双斜线后面,不可以换行哦 例子 多行注释 演练 用法 / ...

  5. 中科方德java开发编码规范_插件推荐:如何将Java编码规范落地实际开发中

    一个软件需要花费80%的生命周期成本去维护. 几乎没有任何软件的整个生命周期仅由其原作者来维护. 编码规范改善软件的可读性,让工程师更快更彻底地理解新的代码. 如果你将源代码转变为一个产品,那么您需要 ...

  6. 编码 括号_Java编码规范整理汇总

    来源:博学谷 作者:照照 在Java的入门过程中,我们首先要养成一个良好的编写代码习惯.那么,了解清楚Java的编码规范就显得尤为必要了.编码格式不仅仅是美不美观的问题.这里我们可以试想一下,如果在J ...

  7. pep8 python 编码规范_实用的python编码规范

    编码规范在程序开发中是一项很重要要求,良好的编码规范对程序的可读性.代码的可维护性都有很大的提高,从而提高开发效率.下面总结了python中一些实用的开发规范,供大家借鉴和参考. 1.每行不超过80个 ...

  8. 软件开发编码规范_如果您只喜欢编码,请不要成为软件开发人员

    软件开发编码规范 If you are starting now or thinking about to start a software development career. Or even i ...

  9. pep8 python 编码规范_「原创」「python自学笔记」python编码规范

    编码规范是学习一个语言前必须要了解的. Python采用PEP8作为编码规范,PEP是Python Enhancement Proposal(Python 增强建议书)的缩写,8代表的是Python代 ...

最新文章

  1. python从基础到进阶_无需编程基础,Python从入门到进阶大法
  2. labelme数据增强_NO. 21 标注工具 amp; 合成数据生成工具
  3. Android安全与逆向之Dex动态加载
  4. java 月份_java+javascript获得两个日期之间的所有月份
  5. leetcood学习笔记-167-两数之和 II - 输入有序数组
  6. android+geturl+方法,浅入浅出Android(014):HTTP GET获取文本内容
  7. Web应用程序的开发步骤
  8. kafka 脚本发送_Apache-Flink深度解析-DataStream-Connectors之Kafka
  9. 利用WPF创建含多种交互特性的无边框窗体
  10. Linux 设备驱动 ==== 字符驱动
  11. UML建模工具最近更新汇总(-2022年7月)共16款:Visual State、UML Diagrammer……
  12. Python抓取行政区域划分存入MySQL数据库
  13. 马士兵servletjsp视频教程——第二部分jsp笔记及源代码、servlet和jsp的通信
  14. CDN的原理技术及使用方法
  15. html多重阴影,求问:CSS3多重阴影效果实现的问题。为什么没有任何的效果,怎么改颜色都没用。...
  16. MySQL--增删改查
  17. 自定义seekbar,风格适用于TV版--仿电视猫的seekbar
  18. 信息学奥赛一本通 1005:地球人口承载力估计
  19. 妙不可言,Sklearn 做异常检测这么简单
  20. Matlab中有与、 或、 异或的操作

热门文章

  1. 实用的工具,有趣的人
  2. 计算机信息管理招聘笔试题,计算机信息管理专业卫生事业单位招聘考试笔试模拟题(六)...
  3. 2022-3-26 Leetcode 04.回文排列
  4. 2021-09-13计算机网络自顶向下WireShark Lab(三)DNS
  5. Prometheus监控Kafka集群
  6. linux中的cpu idle,linux下如何获得系统信息,比如cpu占用率
  7. html5视频播放自动全屏
  8. 在python中对于函数定义代码的理解正确的理解是_Python 5 函数
  9. redmine备份_Bitnami Redmine备份方法
  10. 多分类svm的hinge loss公式推导_损失函数—深度学习常见损失函数总结【图像分类|下】...