Java编码规范,在您进行编码之前应该阅读的规范

为什么80%的码农都做不了架构师?>>>   hot3.png

本文转载于:http://www.web3d.com.cn/new/teach/java3d/2006/11/13/363276161.html

 

Java编码规范 说明 1.1 为什么要有编码规范 编码规范对于程序员而言尤为重要,有以下几个原因: 一个软件的生命周期中,80%的花费在于维护。 几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护。 编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码。


如果你将源码作为产品发布,就需要确任它是否被很好的打包并且清晰无误,一如你已构建的其它任何产品。 为了执行规范,每个软件开发人员必须一致遵守编码规范。每个人!!! 1.2版权声明 本文档反映的是Sun MicroSystems公司,Java语言规范中的编码标准部分。主要贡献者包括:Peter King,Patrick Naughton,Mike DeMoney,Jonni Kanerva,Kathy Walrath以及Scott Hommel。本文档现由Scott Hommel维护,有关评论意见请发至shommel@eng.sun.com 2. 文件名(File Names) 这部分列出了常用的文件名及其后缀。 2.1 文件后缀(File Suffixes) Java程序使用下列文件后缀:

文件类别 文件后缀 Java源文件 .java
Java字节码文件 .class
2.2 常用文件名(Common File Names)
常用的文件名包括:

文件名 用途

GNUmakefile makefiles的首选文件名。我们采用gnumake来创建(build)软件。 README 概述特定目录下所含内容的文件的首选文件名 3. 文件组织(File Organization) 一个文件由被空行分割而成的段落以及标识每个段落的可选注释共同组成。超过2000行的程序难以阅读,应该尽量避免。“Java源文件范例”提供了一个布局合理的Java程序范例。 3.1 Java源文件(Java Source Files) 每个Java源文件都包含一个单一的公共类或接口。若私有类和接口与一个公共类相关联,可以将它们和公共类放入同一个源文件。公共类必须是这个文件中的第一个类或接口。 Java源文件还遵循以下规则: 开头注释(参见"开头注释")
包和引入语句(参见"包和引入语句")
类和接口声明(参见"类和接口声明") 3.1.1 开头注释(Beginning Comments) 所有的源文件都应该在开头有一个C语言风格的注释,其中列出类名、版本信息、日期和版权声明: /*
* Classname
*
* Version information
*
* Date
*
* Copyright notice
*/ 3.1.2 包和引入语句(Package and Import Statements)
在多数Java源文件中,第一个非注释行是包语句。在它之后可以跟引入语句。 例如:
package java.awt;
import java.awt.peer.CanvasPeer; 3.1.3 类和接口声明(Class and Interface Declarations) 下表描述了类和接口声明的各个部分以及它们出现的先后次序。参见“Java源文件范例”中一个包含注释的例子。

类/接口声明的各部分 注解 1、 类/接口文档注释(/**……*/) 该注释中所需包含的信息,参见"文档注释"

2、 类或接口的声明

3、 类/接口实现的注释(/*……*/)如果有必要的话 该注释应包含任何有关整个类或接口的信息,而这些信息又不适合作为类/接口文档注释。

4、 类的(静态)变量 首先是类的公共变量,随后是保护变量,再后是包一级别的变量(没有访问修饰符,access modifier),最后是私有变量。

5、 实例变量 首先是公共级别的,随后是保护级别的,再后是包一级别的(没有访问修饰符),最后是私有级别的。

6、 构造器 7、 方法 这些方法应该按功能,而非作用域或访问权限,分组。例如,一个私有的类方法可以置于两个公有的实例方法之间。其目的是为了更便于阅读和理解代码。

4. 缩进排版(Indentation) 4个空格常被作为缩进排版的一个单位。缩进的确切解释并未详细指定(空格 vs. 制表符)。一个制表符等于8个空格(而非4个)。 4.1 行长度(Line Length) 尽量避免一行的长度超过80个字符,因为很多终端和工具不能很好处理之。 注意:用于文档中的例子应该使用更短的行长,长度一般不超过70个字符。 4.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; //PREFFER
longName1 = longName2 * (longName3 + longName4
- longName5) + 4 * longname6; //AVOID 以下是两个缩进方法声明的例子。前者是常规情形。后者若使用常规的缩进方式将会使第二行和第三行移得很靠右,所以代之以缩进8个空格 //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; 5. 注释(Comments) Java程序有两类注释:实现注释(implementation comments)和文档注释(document comments)。实现注释是那些在C++中见过的,使用/*...*/和//界定的注释。文档注释(被称为“doc comments”)是Java独有的,并由/**...*/界定。文档注释可以通过javadoc工具转换成HTML文件。 实现注释用以注释代码或者实现细节。文档注释从实现自由(implementation-free)的角度描述代码的规范。它可以被那些手头没有源码的开发人员读懂。 注释应被用来给出代码的总括,并提供代码自身没有提供的附加信息。注释应该仅包含与阅读和理解程序有关的信息。例如,相应的包如何被建立或位于哪个目录下之类的信息不应包括在注释中。 在注释里,对设计决策中重要的或者不是显而易见的地方进行说明是可以的,但应避免提供代码中己清晰表达出来的重复信息。多余的的注释很容易过时。通常应避免那些代码更新就可能过时的注释。
注意:频繁的注释有时反映出代码的低质量。当你觉得被迫要加注释的时候,考虑一下重写代码使其更清晰。 注释不应写在用星号或其他字符画出来的大框里。注释不应包括诸如制表符和回退符之类的特殊字符。 5.1 实现注释的格式(Implementation Comment Formats) 程序可以有4种实现注释的风格:块(block)、单行(single-line)、尾端(trailing)和行末(end-of-line)。 5.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)作让步。

转载于:https://my.oschina.net/CYZ/blog/32313

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296563.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ensp查看历史配置命令_华为eNSP常用命令

开启DHCP功能[R1-GigabitEthernet0/0/2]dhcp select interface开启接口的DHCP服务功能[R1-GigabitEthernet0/0/2]dhcp server lease day 2配置IP地址租用有效期限为2天,默认为1天,超过租期后该地址将会重新分配[R1-GigabitEthernet0/0/2]dhcp server excluded-ip-address 192.1…

.NET Core 如何调试 CPU 爆高?

在这篇文章中我们将会分析一个 CPU 爆高的案例,测试demo链接 :https://docs.microsoft.com/en-us/samples/dotnet/samples/diagnostic-scenarios/ 。你将会学到:如何使用 dotnet-counters 确定真实的 cpu 使用率。使用 dotnet-trace 追踪代码…

[OIBH] 糖果盒(Candy Box)——又一个最大子矩形

http://codewaysky.sinaapp.com/problem.php?id1056 这题和奶牛浴场略有区别,奶牛浴场只需要求出最大子矩形,而这题要求的是最大权重子矩形,不一定要最大的面积,但要最大的权重和 思路是先求出每个最大子矩形,然后求出…

百度面试

1 算法:写LRU算法 2 算法思想,二维矩阵中查找一个数,矩阵的按行递增和按列递增。 3 将int i的一个数转换为大端形式,例如0x1a2b3c4d为0x4d3c2b1a。 4 已知一随机发生器,产生0的概率是p,产生1的概率是1-p&am…

日本第一赘婿!他入赘近20年拿下诺贝尔奖,成名后不忘教光棍讨老婆......

全世界只有3.14 % 的人关注了爆炸吧知识谁能凭感性要诺贝尔奖私有1949年12月10号,日本民众发出了暌违多年的欢呼声,因为诺贝尔奖史无前例地颁给了一位日本物理学家——汤川秀树。报道汤川秀树获奖新闻的报纸获奖后,在自传《旅人:一…

xs128 双定时器PIT0和PIT1

/***************************************************************** ** 函数说明:xs128 双定时器PIT0和PIT1 ** 版 本:V1.00 ** 修 改:庞辉 芜湖联大飞思卡尔工作室 …

修改mongodb最大查询数_WebFlux系列(十二)MongoDB应用,新增、修改、查询、删除

#Java#Spring#SpringBoot#Mongo#reactor#webflux#数据库#新增#修改#查询#删除#Spring Boot WebFlux Mongo数据库新增、删除、查询、修改视频讲解 : https://www.bilibili.com/video/av84240038/Employee.javapackage com.example.spring.webfluxmongo;import lombok.AllArgsCon…

如何捕获 EF 生成的 SQL 脚本?

咨询区 nos:请问我如何查看 entity framewrok 生成的 SQL 脚本,我用的是 MySQL Provider 。回答区 Nick Berardi:你可以像下面这样做:IQueryable query from x in appEntitieswhere x.id 32select x;var sql ((System.Data.Obj…

函数体中的全局变量与局部变量

首先看一道笔试题: 1 var a 100; 2 function testResult(){ 3 var b 2 * a; 4 var a 200; 5 var c a / 2; 6 alert(b); 7 alert(c); 8 } 9 testResult(); 输出结果为:NaN和100; 因为当全局变…

笔试题 遗忘点记录 面向对象特点 + 产生死锁条件+ windows内存管理方法

)单一职责原则。就一个类而言,应该仅有一个引起它变化的原因。 //感觉这个是 低耦合 高内聚 (2)开放封闭原则。软件实体对外扩展开放,对修改封闭。 //这个基础。。 &am…

为什么每个理发店门口都有彩色的柱子?你不知道吧

全世界只有3.14 % 的人关注了爆炸吧知识为什么街上的理发店门口都有一根旋转着的彩色灯柱?好学的小编忍不住去寻找真相...理发店门口彩色的柱子这根彩柱与医疗有关彩柱通常是3种颜色,白红蓝。一般认为:白色绷带,红色绷带上的血(动…

前台jsp页面向后台传汉字出现乱码问题解决办法

如下&#xff1a; jsp页面代码&#xff1a; var groupsName"全体技能组"; window.location.href encodeURI("<%path%>/CustomersServletmethodservice_95518_telephone&provinceCode"provinceCode"&cityCode"cityCode"…

是否显示展开_Creo7.0教程之绝对精度对钣金件展开的作用详解

在讲Creo7.0绝对精度对钣金展开的帮助之前&#xff0c;我们有必要先来说明一下Creo的精度定义。刚使用Creo7.0版本的新建模型&#xff0c;很多网友就问&#xff0c;怎么模板文件中有两个同样单位的选择&#xff0c;“abs”和“rel”有什么区别&#xff1f;新建文件选项其实这就…

UrlRewrite(Url重写技术)

ASP.NET伪静态 UrlRewrite(Url重写) 实现和配置------转载 ASP.NET伪静态 UrlRewrite(Url重写) 实现和配置 核心提示&#xff1a;大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧&#xff0c;那么大家有怀疑过他真的是一个…

“快准顺”而不是“信达雅”

在今年夏天策马翻译举办的翻译讲座上&#xff0c;我和詹成教授交流过一个问题&#xff1a;詹教授讲的很多知识点和经验并不符合“信达雅”&#xff1f;詹教授的回答是&#xff1a;“信达雅”并非翻译界的标准&#xff0c;他自己在日常翻译工作中的标准是“快准顺”。詹教授的回…

知乎点赞超过10万的科学脱单法!这绝对是我见过最硬核的撩妹套路......

全世界只有3.14 % 的人关注了爆炸吧知识科学脱单硬核撩妹前两天&#xff0c;超模君在知乎上看到一个热门的问答&#xff1a;开学后如何快速找到对象&#xff1f;这个话题&#xff0c;让超模君回想起了当年刚进入大学的那会儿&#xff0c;校园中秀恩爱的情侣无处不在&#xff0c…

二叉树的非递归遍历

非递归实现二叉树的前序/后序/中序遍历 中序遍历 // arr[1]// arr[2] arr[3] // arr[4] arr[5] arr[6] // arr[7] arr[8]如上数据, 以栈来代替递归实现,输出为4,2,(遍历右元素7,5,8).那么就要想办法以上面的方法入栈4,2…

InfoQ宣布成立CNUT容器技术俱乐部 欲连接中国容器社区

2015年8月28日&#xff0c;首届CNUTCon全球容器技术大会在北京举行。在大会上&#xff0c;极客邦科技与InfoQ中国创始人兼CEO霍泰稳宣布&#xff0c;InfoQ联合国内一线IT技术公司共同成立CNUT容器技术俱乐部&#xff0c;连接中国容器技术社区&#xff0c;推动容器技术以及开源在…

office 高效办公智慧树_干货高效实用的office办公小技巧之word篇

对于office三剑客ppt、Word、Excel的使用成了日常&#xff0c;作为办公党&#xff0c;今天就拿出自己在平时工作之中发现、学到的小技巧来做个总结&#xff0c;分享给大家。相信很多大神对于这些小技巧都已经精通&#xff0c;所以lz会先列出目录&#xff0c;大家可以自行依据目…

POJ 1904 【强连通分量】.cpp

题意&#xff1a; 很久很久以前.. 有一个国王.. 他有好几个儿子.. 这些王子都喜欢上了邻国的公主.. 他们准备迎娶自己喜欢的公主中的一个.. 国王就让宰相给列一个清单.. 宰相就给了国王一个清单..上面写明了哪个王子将迎娶哪个邻国的公主.. 但是调皮的国王不太满意~~ 他还想知道…