iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java 程序编码规范有哪些
  • 438
分享到

Java 程序编码规范有哪些

2023-06-03 05:06:19 438人浏览 薄情痞子
摘要

这篇文章给大家介绍Java 程序编码规范有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java 程序编码的规范(转)[@more@]所有的程序开发手册都包含了各种规则。一些习惯自由程序人员可能对这些规则很不适 应

这篇文章给大家介绍Java 程序编码规范有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Java 程序编码的规范(转)[@more@]所有的程序开发手册都包含了各种规则。一些习惯自由程序人员可能对这些规则很不适
应,但是在多个开发人员 共同写作的情况下,这些规则是必需的。这不仅仅是为了开
发效率来考虑,而且也是为了后期维护考虑。
命名规范
定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少
项目组中因为换人而带来 的损失。(这些规范并不是一定要绝对遵守,但是一定要让
程序有良好的可读性)


Package 的命名
Package 的名字应该都是由一个小写单词组成。
Class 的命名
Class 的名字必须由大写字母开头而其他字母都小写的单词组成
Class 变量的命名
变量的名字必须用一个小写字母开头。后面的单词用大写字母开头。
Static Final 变量的命名
Static Final 变量的名字应该都大写,并且指出完整含义。
参数的命名
参数的名字必须和变量的命名规范一致。
数组的命名
数组应该总是用下面的方式来命名:

byte[] buffer;


而不是:

byte buffer[];



方法的参数
使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字:

SetCounter(int size){
this.size = size;
}




Java 文件样式
所有的 Java(*.java) 文件都必须遵守如下的样式规则


版权信息
版权信息必须在 java 文件的开头,比如:




其他不需要出现在 javadoc 的信息也可以包含在这里。


Package/Imports
package 行要在 import 行之前,import 中标准的包名要在本地的包名之前,而且按
照字母顺序排列。如 果 import 行中包含了同一个包中的不同子目录,则应该用 * 来
处理。

package hotlava.net.stats;

import java.io.*;
import java.util.Observable;
import hotlava.util.Application;


这里 java.io.* 使用来代替InputStream and OutputStream 的。


Class
接下来的是类的注释,一般是用来解释类的。




接下来是类定义,包含了在不同的行的 extends 和 implements

public class CounterSet
extends Observable
implements Cloneable



Class Fields
接下来是类的成员变量:


protected int[] packets;


public 的成员变量必须生成文档(JavaDoc)。proceted、private和 package 定义
的成员变量如果名字含义明 确的话,可以没有注释。


存取方法
接下来是类变量的存取的方法。它只是简单的用来将类的变量赋值获取值的话,可以简
单的写在一行上。


public int[] getPackets() { return copyArray(packets, offset); }
public int[] getBytes() { return copyArray(bytes, offset); }

public int[] getPackets() { return packets; }
public void setPackets(int[] packets) { this.packets = packets; }


其它的方法不要写在一行上


构造函数
接下来是构造函数,它应该用递增的方式写(比如:参数多的写在后面)。
访问类型 ("public", "private" 等.) 和 任何 "static", "final" 或 "synchronized"
应该在一行中,并且 方法和参数另写一行,这样可以使方法和参数更易读。

public
CounterSet(int size){
this.size = size;
}



克隆方法
如果这个类是可以被克隆的,那么下一步就是 clone 方法:

public
Object clone() {
try {
CounterSet obj = (CounterSet)super.clone();
obj.packets = (int[])packets.clone();
obj.size = size;
return obj;
}catch(CloneNotSupportedException e) {
throw new InternalError("Unexpected CloneNotSUpportedException: " + e.getMessage());
}
}



类方法
下面开始写类的方法:


protected final
void setArray(int[] r1, int[] r2, int[] r3, int[] r4)
throws IllegalArgumentException
{
//
// Ensure the arrays are of equal size
//
if (r1.length != r2.length || r1.length != r3.length || r1.length != r4.length)
throw new IllegalArgumentException("Arrays must be of the same size");
System.arraycopy(r1, 0, r3, 0, r1.length);
System.arraycopy(r2, 0, r4, 0, r1.length);
}




toString 方法
无论如何,每一个类都应该定义 toString 方法:

public
String toString() {
String retval = "CounterSet: ";
for (int i = 0; i < data.length(); i++) {
retval += data.bytes.toString();
retval += data.packets.toString();
}
return retval;
}
}



main 方法
如果main(String[]) 方法已经定义了, 那么它应该写在类的底部.

代码编写格式


代码样式
代码应该用 unix 的格式,而不是 windows 的(比如:回车变成回车+换行)
文档化
必须用 javadoc 来为类生成文档。不仅因为它是标准,这也是被各种 java 编译器都
认可的方法。使 用 @author 标记是不被推荐的,因为代码不应该是被个人拥有的。
缩进
缩进应该是每行2个空格. 不要在源文件中保存Tab字符. 在使用不同的源代码管理工具
时Tab字符将因为用户设 置的不同而扩展为不同的宽度.
如果你使用 UltrEdit 作为你的 Java 源代码编辑器的话,你可以通过如下操作来禁止
保存Tab字符, 方法是通 过 UltrEdit中先设定 Tab 使用的长度室2个空格,然后用
FORMat|Tabs to Spaces 菜单将 Tab 转换为空格。
页宽
页宽应该设置为80字符. 源代码一般不会超过这个宽度, 并导致无法完整显示, 但这一设
置也可以灵活调整. 在 任何情况下, 超长的语句应该在一个逗号或者一个操作符后折行.
一条语句折行后, 应该比原来的语句再缩进2 个字符.
{} 对
{} 中的语句应该单独作为一行. 例如, 下面的第1行是错误的, 第2行是正确的:

if (i>0) { i ++ }; // 错误, { 和 } 在同一行

if (i>0) {
i ++
}; // 正确, { 单独作为一行


} 语句永远单独作为一行.


如果 } 语句应该缩进到与其相对应的 { 那一行相对齐的位置。


括号
左括号和后一个字符之间不应该出现空格, 同样, 右括号和前一个字符之间也不应该出
现空格. 下面的例子说明 括号和空格的错误及正确使用:

CallProc( AParameter ); // 错误
CallProc(AParameter); // 正确

不要在语句中使用无意义的括号. 括号只应该为达到某种目的而出现在源代码中。下面
的例子说明错误和正确的 用法:

if ((I) = 42) { // 错误 - 括号毫无意义
if (I == 42) or (J == 42) then // 正确 - 的确需要括号


程序编写规范


exit()
exit 除了在 main 中可以被调用外,其他的地方不应该调用。因为这样做不给任何代码
代码机会来截获退出。 一个类似后台服务地程序不应该因为某一个库模块决定了要退出
就退出。
异常
申明的错误应该抛出一个RuntimeException或者派生的异常。
顶层的main()函数应该截获所有的异常,并且打印(或者记录在日志中)在屏幕上。
垃圾收集
JAVA使用成熟的后台垃圾收集技术来代替引用计数。但是这样会导致一个问题:你必须在
使用完对象的实例以后 进行清场工作。比如一个prel的程序员可能这么写:

...
{
FileOutputStream fos = new FileOutputStream(projectFile);
project.save(fos, "IDE Project File");
}
...


除非输出流一出作用域就关闭,非引用计数的程序语言,比如JAVA,是不能自动完成变
量的清场工作的。必须象 下面一样写:

FileOutputStream fos = new FileOutputStream(projectFile);
project.save(fos, "IDE Project File");
fos.close();



Clone
下面是一种有用的方法:

implements Cloneable

public
Object clone()
{
try {
ThisClass obj = (ThisClass)super.clone();
obj.field1 = (int[])field1.clone();
obj.field2 = field2;
return obj;
} catch(CloneNotSupportedException e) {
throw new InternalError("Unexpected CloneNotSUpportedException: " + e.getMessage());
}
}



final 类
绝对不要因为性能的原因将类定义为 final 的(除非程序的框架要求)
如果一个类还没有准备好被继承,最好在类文档中注明,而不要将她定义为 final 的。
这是因为没有人可以保 证会不会由于什么原因需要继承她。
访问类的成员变量
大部分的类成员变量应该定义为 protected 的来防止继承类使用他们。
注意,要用"int[] packets",而不是"int packets[]",后一种永远也不要用。

public void setPackets(int[] packets) { this.packets = packets; }

CounterSet(int size)
{
this.size = size;
}




编程技巧


byte 数组转换到 characters
为了将 byte 数组转换到 characters,你可以这么做:

"Hello world!".getBytes();


Utility 类
Utility 类(仅仅提供方法的类)应该被申明为抽象的来防止被继承或被初始化。


初始化
下面的代码是一种很好的初始化数组的方法:

objectArguments = new Object[] { arguments };


枚举类型
JAVA 对枚举的支持不好,但是下面的代码是一种很有用的模板:

class Colour {
public static final Colour BLACK = new Colour(0, 0, 0);
public static final Colour RED = new Colour(0xFF, 0, 0);
public static final Colour GREEN = new Colour(0, 0xFF, 0);
public static final Colour BLUE = new Colour(0, 0, 0xFF);
public static final Colour WHITE = new Colour(0xFF, 0xFF, 0xFF);
}


这种技术实现了RED, GREEN, BLUE 等可以象其他语言的枚举类型一样使用的常量。
他们可以用 '==' 操作符来 比较。
但是这样使用有一个缺陷:如果一个用户用这样的方法来创建颜色 BLACK

new Colour(0,0,0)

那么这就是另外一个对象,'=='操作符就会产生错误。她的 equal() 方法仍然有效。
由于这个原因,这个技术 的缺陷最好注明在文档中,或者只在自己的包中使用。

Swing


避免使用 AWT 组件
混合使用 AWT 和 Swing 组件
如果要将 AWT 组件和 Swing 组件混合起来使用的话,请小心使用。实际上,尽量不
要将他们混合起来使用。


滚动的 AWT 组件
AWT 组件绝对不要用 jscrollPane 类来实现滚动。滚动 AWT 组件的时候一定要用
AWT ScrollPane 组件来实 现。


避免在 InternalFrame 组件中使用 AWT 组件
尽量不要这么做,要不然会出现不可预料的后果。


Z-Order 问题
AWT 组件总是显示在 Swing 组件之上。当使用包含 AWT 组件的 POP-UP 菜单的时候要
小心,尽量不要这样使 用。



调试


调试在软件开发中是一个很重要的部分,存在软件生命周期的各个部分中。调试能够用
配置开、关是最基本 的。

很常用的一种调试方法就是用一个 PrintStream 类成员,在没有定义调试流的时候就为
null,类要定义一 个 debug 方法来设置调试用的流。



性能


在写代码的时候,从头至尾都应该考虑性能问题。这不是说时间都应该浪费在优化代码上,
而是我们时刻应该提 醒自己要注意代码的效率。比如:如果没有时间来实现一个高效的
算法,那么我们应该在文档中记录下来,以便 在以后有空的时候再来实现她。

不是所有的人都同意在写代码的时候应该优化性能这个观点的,他们认为性能优化的问题
应该在项目的后期再去 考虑,也就是在程序的轮廓已经实现了以后。
不必要的对象构造
不要在循环中构造和释放对象


使用 StringBuffer 对象
在处理 String 的时候要尽量使用 StringBuffer 类,StringBuffer 类是构成 String 类
的基础。String 类 将 StringBuffer 类封装了起来,(以花费更多时间为代价)为开发
人员提供了一个安全的接口。当我们在构造 字符串的时候,我们应该用 StringBuffer
来实现大部分的工作,当工作完成后将 StringBuffer 对象再转换为 需要的 String 对象。
比如:如果有一个字符串必须不断地在其后添加许多字符来完成构造,那么我们应该使
用 StringBuffer 对象和她的 append() 方法。如果我们用 String 对象代替 StringBuffer
对象的话,会花费 许多不必要的创建和释放对象的 CPU 时间。

避免太多的使用 synchronized 关键字
避免不必要的使用关键字 synchronized,应该在必要的时候再使用她,这是一个避免死
的好方法。

可移植性
Borland Jbulider 不喜欢 synchronized 这个关键字,如果你的断点设在这些关键字的
作用域内的话,调试的 时候你会发现的断点会到处乱跳,让你不知所措。除非必须,尽
量不要使用。


换行
如果需要换行的话,尽量用 println 来代替在字符串中使用""。
你不要这样:

System.out.print("Hello,world!");

要这样:

System.out.println("Hello,world!");

或者你构造一个带换行符的字符串,至少要象这样:

String newline = System.getProperty("line.separator");
System.out.println("Hello world" + newline);


PrintStream
PrintStream 已经被不赞成(deprecated)使用,用 PrintWrite 来代替她。

关于Java 程序编码规范有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: Java 程序编码规范有哪些

本文链接: https://www.lsjlt.com/news/232845.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java 程序编码规范有哪些
    这篇文章给大家介绍Java 程序编码规范有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java 程序编码的规范(转)[@more@]所有的程序开发手册都包含了各种规则。一些习惯自由程序人员可能对这些规则很不适 应...
    99+
    2023-06-03
  • java编程规范有哪些
    java中的编程规范有:1.命名规范;2.注释规范;3.编码规范;4.书写规范;java中的编程规范有以下几点命名规范java中命名可以使用的字符集有26个英文字母、0到9的阿拉伯数字和下划线,且命名尽量短,如何命名过长,可以采用别名或缩写...
    99+
    2022-10-05
  • VB.NET编码规范有哪些
    今天就跟大家聊聊有关VB.NET编码规范有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、类型级单位的命名 类。 以Class声明的类,都必须以名词或名词短语命名,体现类的作用...
    99+
    2023-06-17
  • Python编码规范有哪些
    Python编码规范有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。编码在Python编码规范中,所有的 Python 脚本文件都应在文件头标上 # -*- codin...
    99+
    2023-06-17
  • VB.NET有哪些编码规范
    本篇文章为大家展示了VB.NET有哪些编码规范,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、类型级单位的命名类。以Class声明的类,都必须以名词或名词短语命名,体现类的作用。如:Class I...
    99+
    2023-06-17
  • Go编码规范有哪些
    本文小编为大家详细介绍“Go编码规范有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Go编码规范有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1. 代码风格1.1 代码格式代码必须用 gofmt 进行...
    99+
    2023-07-04
  • Java代码规范有哪些
    这篇文章给大家介绍Java代码规范有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.命名规范(1)所有的标示符都只能用ASCⅡ字母(A-Z或a-z)、数字(0-9)和下划线“_”。(2)一个***包名的前缀总是全...
    99+
    2023-06-17
  • JavaScript的编码规范有哪些
    本篇文章给大家分享的是有关JavaScript的编码规范有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。JavaScript 文件引用Ja...
    99+
    2022-10-19
  • .Net Framework编码规范有哪些
    .Net Framework编码规范有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。.Net Framework编码规范:·委托类型的名称都应该以EventHandle...
    99+
    2023-06-17
  • Kitty-Cloud编码规范有哪些
    本篇文章给大家分享的是有关Kitty-Cloud编码规范有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。API 层autoconfigure:自动配置包名,类名以 Auto...
    99+
    2023-06-03
  • Android编程规范有哪些
    今天就跟大家聊聊有关Android编程规范有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。命名规则1). 类名,接口名:以大写开头,如果一个类的类名由多个单词组成,所有单词的首字...
    99+
    2023-06-17
  • CSS有哪些编程规范
    本篇内容介绍了“CSS有哪些编程规范”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在参与规模庞大、历时漫长...
    99+
    2022-10-19
  • javascript编程规范有哪些
    javascript中的编程规范有:1.函数名,小驼峰式命名法;2.变量名,小驼峰式命名法;3.变量定义,使用var关键字定义;4.对象定义,将属性在构造函数内定义;5.字符串定义,使用单引号 '';6.函数定义,使用命名函...
    99+
    2022-10-07
  • python编程规范有哪些
    本篇文章为大家展示了python编程规范有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。每个缩进层级使用4个空格。每行最多79个字符。顶层的函数或类的定义之间空两行。采用ASCII或UTF-8编...
    99+
    2023-06-04
  • JavaScript编程语言的编码规范有哪些
    小编给大家分享一下JavaScript编程语言的编码规范有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!JavaScript 编码规范建议本文就 JavaSc...
    99+
    2023-06-27
  • Python基本编码规范有哪些
    这篇“Python基本编码规范有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python基本编码规范有哪些”文章吧。P...
    99+
    2023-06-29
  • HTML/CSS/JS编码规范有哪些
    这篇文章主要讲解了“HTML/CSS/JS编码规范有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“HTML/CSS/JS编码规范有哪些”吧!一、HTML...
    99+
    2022-10-19
  • XHTML编码基本规范有哪些
    这篇文章主要介绍了XHTML编码基本规范有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、所有的标记都必须要有一个相应的结束标记 &n...
    99+
    2022-10-19
  • C#中有哪些.NetFramework编码规范
    本篇文章给大家分享的是有关C#中有哪些.NetFramework编码规范,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。.Net Framework中的委托与事件尽管很多范例都能...
    99+
    2023-06-17
  • Python中的编码规范有哪些
    这篇“Python中的编码规范有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python中的编码规范有哪些”文章吧。编...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作