iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >java开发规范
  • 294
分享到

java开发规范

2023-06-03 07:06:56 294人浏览 泡泡鱼
摘要

所有的程序开发手册都包含了各种规则。一些习惯自由程序人员可能对这些规则很不适 应,但是在多个开发人员 共同写作的情况下,这些规则是必需的。这不仅仅是为了开 发效率来考虑,而且也是为了后期维护考虑。 命名规范 定义这个规范的目的是让项目中所有

所有的程序开发手册都包含了各种规则。一些习惯自由程序人员可能对这些规则很不适
应,但是在多个开发人员 共同写作的情况下,这些规则是必需的。这不仅仅是为了开
发效率来考虑,而且也是为了后期维护考虑。

命名规范
定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少
项目组中因为换人而带来 的损失。(这些规范并不是一定要绝对遵守,但是一定要让
程序有良好的可读性)


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 来代替她。
[@more@]

--结束END--

本文标题: java开发规范

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

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

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

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

下载Word文档
猜你喜欢
  • java开发规范
    所有的程序开发手册都包含了各种规则。一些习惯自由程序人员可能对这些规则很不适 应,但是在多个开发人员 共同写作的情况下,这些规则是必需的。这不仅仅是为了开 发效率来考虑,而且也是为了后期维护考虑。 命名规范 定义这个规范的目的是让项目中所有...
    99+
    2023-06-03
  • 阿里开发手册规范(JAVA)
    目录 一、编程规约  (一) 命名规范 (二) 常量定义 (三) 代码格式  (四) OOP规约 (五) 日期时间 (六) 集合处理  (七) 并发处理 (八) 控制语句 (九) 注释规约 (十) 前后端规约 二、异常日志  (一) 错误码...
    99+
    2023-09-10
    java 开发语言
  • PHP开发规范与PSR4命名空间规范
    引言:PHP作为一种广泛应用的编程语言,在开发过程中遵守规范是非常重要的,不仅可以提高代码的可读性和可维护性,还能提高团队协作效率。在本文中,我们将探讨PHP开发规范以及PSR-4命名空间规范,并且提供一些具体的代码示例。一、PHP开发规范...
    99+
    2023-10-21
    编程关键词 PHP开发规范 PSR命名空间规范
  • Java开发常用规范技巧有哪些
    本篇内容主要讲解“Java开发常用规范技巧有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java开发常用规范技巧有哪些”吧!1、Object 的 equals 方法容易抛空指针异常。从源码...
    99+
    2023-06-02
  • java开发文档编写规范是什么
    Java开发文档编写规范是一套规范,用于指导Java开发人员编写清晰、一致和易于理解的文档。以下是一些常见的Java开发文档编写规范...
    99+
    2023-08-28
    java
  • Redis开发规范有哪些
    这篇文章主要介绍“Redis开发规范有哪些”,在日常操作中,相信很多人在Redis开发规范有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Redis开发规范有哪些”的疑惑...
    99+
    2024-04-02
  • MySQL有哪些开发规范
    这期内容当中小编将会给大家带来有关MySQL有哪些开发规范,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 #MySQL开发规范 ##命名规范 ...
    99+
    2024-04-02
  • mongodb开发规范有哪些
    1. 命名规范:- 集合(Collection)名应使用小写字母和下划线组成,如:users, orders。- 字段(Field)...
    99+
    2023-09-04
    mongodb
  • INFORMATICA 开发规范有哪些
    INFORMATICA 开发规范有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。  ETL研发运维责任人界定 &nbs...
    99+
    2024-04-02
  • python 开发规范 预览版
    本文主要参考 pep8和jumpserver开发规范,结合实际,进行修改,欢迎提出修改意见。 代码检查工具 pylint pycharm --> code --> Reformat Code 格式化当前文件代码格式 pyc...
    99+
    2023-01-31
    预览版 python
  • MySQL开发规范有哪些
    这篇文章将为大家详细讲解有关MySQL开发规范有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。基础规范使用innodb存储引擎表字符集使用utf-8所有表添加注释单表...
    99+
    2024-04-02
  • python开发规范有哪些
    Python开发规范通常包括以下几个方面:1. 命名规范:使用有意义的变量、函数和类名,采用下划线命名法(例如:my_variabl...
    99+
    2023-09-22
    python
  • Redis的开发规范有哪些
    本篇内容主要讲解“Redis的开发规范有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis的开发规范有哪些”吧!一、键值设计1、key名设计可读性和可...
    99+
    2024-04-02
  • uniapp开发小程序的开发规范总结
    目录一、项目结构二、开发规范遵循Vue 单文件组件 (SFC) 规范组件及接口规范三、css样式规范全局样式与局部样式尺寸响应式字体的使用请使用flex布局方式总结一、项目结构 在完...
    99+
    2024-04-02
  • MySQL开发设计规范有哪些
    这期内容当中小编将会给大家带来有关MySQL开发设计规范有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。命名规范 l  库名、表名、字段名禁止超过32个...
    99+
    2024-04-02
  • Python开发规范及文件命名
    常用目录 目录名 作用 log 日志目录 conf 配置目录 core 核心代码 libs/modules 第三方库 docs 文档库 README 帮助文档 bin 启动入口,存放可执行文...
    99+
    2023-01-31
    文件 Python
  • PHP开发内部规范有哪些
    本篇内容介绍了“PHP开发内部规范有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!       ...
    99+
    2023-06-25
  • PSR2和PSR4规范对团队合作开发的规范化要求
    引言:在团队合作开发过程中,代码规范是至关重要的。它能够提高代码的可读性、可维护性,并确保多人协作开发时的代码一致性。而PHP-FIG(PHP-Framework Interoperability Group,PHP框架互操作性小组)提出的...
    99+
    2023-10-21
    PSR规范 团队合作开发
  • Web前端开发规范有哪些
    这篇文章给大家介绍Web前端开发规范有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。基本准则符合web标准, 语义化html, 结构表现行为分离, 兼容性优良. 页面性能方面, 代...
    99+
    2024-04-02
  • web前端开发规范是什么
    这篇文章主要为大家展示了“web前端开发规范是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“web前端开发规范是什么”这篇文章吧。 一、css书写规范 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作