java程序书写规范.docx

上传人:b****7 文档编号:11371454 上传时间:2023-02-28 格式:DOCX 页数:11 大小:49.12KB
下载 相关 举报
java程序书写规范.docx_第1页
第1页 / 共11页
java程序书写规范.docx_第2页
第2页 / 共11页
java程序书写规范.docx_第3页
第3页 / 共11页
java程序书写规范.docx_第4页
第4页 / 共11页
java程序书写规范.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

java程序书写规范.docx

《java程序书写规范.docx》由会员分享,可在线阅读,更多相关《java程序书写规范.docx(11页珍藏版)》请在冰豆网上搜索。

java程序书写规范.docx

java程序书写规范

java程序书写规范

java程序书写规范

命名规范

  1、一般概念

      1、尽量使用完整的英文描述符

      2、采用适用于相关领域的术语

      3、采用大小写混合使名字可读

      4、尽量少用缩写,但如果用了,必须符合整个工程中的统一定义

    

      5、避免使用长的名字(小于15个字母为正常选择)

      6、避免使用类似的名字,或者仅仅是大小写不同的名字

      7、避免使用下划线(除静态常量等)

    2、标识符类型说明

的基础之上,保证开头第一个字母为”E”,

        便于与普通的Class区别开。

      如:

EUserRole

      5、异常(Exception)的命名

        异常(Exception)通常采用字母e表示异常,对于自定义的异常类,其后缀必须为Exception

      如:

BusinessException

      6、方法(Method)的命名

        方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。

        方法名尽可能的描述出该方法的动作行为。

返回类型为Boolean值的方法一般由“is”或“has”来开头

      如:

getCurrentUser()、addUser()、hasAuthority()

      7、参数(Param)的命名

        第一个单词的首字母小写,其后单词的首字母大写。

参数量名不允许以下划线或美元符号开头,

        虽然这在语法上是允许的。

参数名应简短且富于描述。

      如:

publicUserContextgetLoginUser(StringloginName);

    

      8、常量字段(Constants)的命名

        静态常量字段(staticfinal)全部采用大写字母,单词之间用下划线分隔;

      如:

publicstaticfinalLongFEEDBACK;

      publicstaticLongUSER_STATUS;

 

1. 风格务必保持一贯性(Consistent)

一位同胞顶着我的鼻子问,为什么我们的Java代码缩进格式非得是这样,而不能是他那样,他就是喜欢他自己的这一种,因此他写的代码总是用他自己习惯的风格。

结果在CodeReview里被大家毙掉,责令修改。

因此他是大大地不服。

就是风格一贯性问题。

其实他的风格,本来也没有什么问题,但在项目里,和其他程序员的程序的风格,显得扃异,那就存在问题了。

比如这个缩进,又比如变量命名方法,不同的类,不同的Methods里,各自不同,这程序就很难看了。

所以一旦你选择了某种风格,一定要贯彻始终。

如果一个项目里规定了一个风格,即便很不符合你自己的习惯,也要贯彻始终,绝不应该有标新立异。

2. 缩进风格(indent)

既然是从缩进说起,就先说说缩进风格;一般来说,象Java这样的类C语言,都采用缩进风格。

而常用的,有四种

A.K&R风格

这是C程序最早的缩进风格,由C的发明者Ritchie和他的合作者Kernighan率先使用:

if () {

    

}

其特点,是大括号和if判断在同一行。

通常,缩进为8个空格或一个tab键,但在C++和Java里,也常缩进4个空格。

有人喜欢用两个空格,窃以为不好,不明显。

B. BSD 风格

又称Allman Style,源自Unix BSD程序员Eric Allman--他为BSD写过很多程序:

if (

{

    

}

特点:

大括号和条件判断分在两行。

C. Whitesmith风格

这种风格源于Whitesmith C:

if (

    {

    

    }

D. GNU风格

这种风格仅见于GNU EMACS的源程序中:

if (

  {

    

  }

那么在Java里用哪种好呢?

建议只采用A或B。

SUN有一个Java Code Name Convention,建议的是A。

3. Tab还是空格(Tabs vs Space)

还是缩进问题。

那么一次缩进应该多大距离?

是八个空格键,还是一个Tab键?

Java有一个特点,就是跨平台性。

不过跨平台指的是它的Class可以在不同平台的虚拟机上运行。

Java的源程序,有时候可不是跨平台的。

什么?

源程序还能不跨平台?

是的。

有次一个程序员送来一些Code,在我的环境里打开,程序难看得一塌糊涂,有该缩进的地方,没有缩进,有的则缩进一大截,如同怪石一样,嶙峋参差。

这样的代码质量可不行!

叫来程序员一问,答曰在他那里漂亮得很啊,他还专门花时间去美化它们了呢?

原来他的缩进没有注意一个风格,在有的地方用Tab键,有的地方打空格。

在一些不同的平台上,Tab键的宽度可是不一样的。

说道这里,相信大家比较清楚了,在缩进的时候,尽量不用Tab,而是用空格。

好在许多编辑器,都可以把你的键盘上的Tab键定义成几个空格。

赶紧去定义它!

每次用多少空格呢?

4个。

2个太少不明显,8个太多占空间。

4. 行宽

说道8个空格键占空间,那么我一行有320列,8个空格算什么?

打住!

请寄住,一行尽量不要超过80列。

许多终端一个屏幕只能显示80列,为它们想想巴。

如果你的语句太长,想办法折断它,分几列来写。

5. 变量命名

SUN Java Code Convention里定义了Java里package, class, method和普通变量的命名规则,我就不用再浪费字节了。

这里提提一些注意事项和一些SUN没提到但大家常用的方式。

a. 用有意义的名字命名变量

首先,用完整的英语单词或约定俗成的简写命名你的变量,如:

firstName

zipCode

如果英语不够好,至少用别人看得懂的拼音命名,如

zhuZhi (住址)

胡乱简写,或者胡乱命名,则没有人看得懂你的变量的含义:

fn

zc

zz

b. 常量用全大写加下画线命名

Java里的常量,就是static final:

static final SMTH_BBS="";

c. 用复数命名collection类变量

collection包括数组,vector等。

命名时请用复数:

customers

classMates

也可以用一些修饰词命名:

someStudents

allDepartments

d. 循环变量

一般大家都用i, j, k等做循环变量。

e. Stream变量

一般习惯用in, out作为Stream变量,对应inputStream, outputStream

类。

如果即读又写的ioStream,可以用inOut。

f. 变量的命名习惯

习惯MFC的人喜欢采用匈牙利命名法(Hungarian Notation)。

如果你习惯这样,尽管用,但注意要和同Project的人保持一致。

还有些人习惯C++里的下画线方式,也可以采用。

Hungarian Notation:

sFirstName

Under Score Style:

_firstName

这里提供一个Hungarian Notation的前缀命名习惯:

int                    i

byte                  b

char                 c

double              d

float                 f

long                 l

offset               off

length              len

Object             o

String               s (or str)

Arbitray value   v

6. Java文件格式

有许多方式定义你的文件语句格式,以下是一个例子:

a. 文件头说明 (可无)

b. Package定义

c. 空行

d. Import语句

e. 空行

f. 类定义

如:

package com.midi;

//Java Classes

import java.awt.*;

import java.io.*;

import javax.swing.event.*;

//WebLogic Classes

import weblogic.internal.*;

/**

 * Blah blah

 * @author midi

 * @version 22.2

 */

public class MyFirst extends JFrame {

    ...

}

/**

 * Foo...

 * @author midi

 * @version 38.2

 */

class Foo {

    ...

}

7. import顺序

杂乱无章的顺序,看起来很不顺眼。

应该对你要import的classes归类,按顺序罗列:

a. Java标准类(java.*)

b. Java扩充类(javax.*)

c. 第三方类

d. 你的应用程序的类

而且注意在第三方类里注释它们,说明它们的来源:

import java.*;

import java.util.Date;

import java.util.Enumeration;

import javax.sql.*;

//Apache Xerces

import org.apache.xml.*;

import org.apache.xerces.dom.*;

//Application classes

import com.midi.util.*;

8. Classes的顺序

a. Javadoc注释或者其它文件头注释

b. 类声明

c. Fields声明

d. 空行

e. 构造函数

f. 空行

g. 方法(不包括main)

h. 空行

i. Inner类

j. 空行

k. main()

例:

/**

 * This is a simple DOM tree XML parser...

 * ...

 * @author:

 midi

 * @version:

 0.0.1

 **/

public class MyParser {

    // public constants

    public static final String TITLE = "MyParser";

    public static final String VERSION = "0.0.1";

    // Private variables

    private int iSchemaVersion;

    /**

     * Constructor

     */

    public MyParser () {

        iSchemaVersion = 1;

    }

    /**

     * Constructor

     * @param...

     */

    public MyParser (iSchemaVersion) {

        this.iSchemaVersion = iSchemaVersion;

    }

    /**

     * Initialize the parser...

     */

    public void myInit () throws Exception {

        ....

    }

    /**

     * start the application

     */

    public static void main (String[] argvs) {

        ...

    }

}

9. Field定义

请遵从以下顺序:

a. Public常量

b. Public变量

c. Protected常量

d. Protected变量

e. Package常量

f. Package变量

g. Private常量

h. Private变量

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1