java代码规范

1.   风格务必保持一贯性(Consistent)
前面说到的那个朋友的问题,就是风格一贯行问题。其实他的风格,本来也没有什么
问题,但在项目里,和其他程序员的程序的风格,显得扃异,那就存在问题了。
比如这个缩进,又比如变量命名方法,不同的类,不同的Methods里,各自不同,
这程序就很难看了。所以一旦你选择了某种风格,一定要贯彻始终。如果一个项目
里规定了一个风格,即便很不符合你自己的习惯,也要贯彻始终,绝不应该有
标新立异。
2.   缩进风格(indent)
既然是从缩进说起,就先说说缩进风格
一般来说,象Java这样的类C语言,都采用缩进风格。
3.   Tab还是空格?(Tabs   vs   Space)
还是缩进问题。那么一次缩进应该多大距离?是八个空格键,
还是一个Tab键?
Java有一个特点,就是跨平台性。不过跨平台指的是它的Class
可以在不同平台的虚拟机上运行。Java的源程序,有时候可不是
跨平台的。什么?源程序还能不跨平台?是的。有次一个程序员
送来一些Code,在我的环境里打开,程序难看得一塌糊涂,有该
缩进的地方,没有缩进,有的则缩进一大截,如同怪石一样,嶙
峋参差。这样的代码质量可不行!叫来程序员一问,答曰在他那
里漂亮得很啊,他还专门花时间去美化它们了呢?
原来他的缩进没有注意一个风格,在有的地方用Tab键,有的地方
打空格。在一些不同的平台上,Tab键的宽度可是不一样的。
说道这里,相信大家比较清楚了,在缩进的时候,尽量不用Tab,
而是用空格。好在许多编辑器,都可以把你的键盘上的Tab键定义
成几个空格。赶紧去定义它!

里漂亮得很啊,他还专门花时间去美化它们了呢?
原来他的缩进没有注意一个风格,在有的地方用Tab键,有的地方
打空格。在一些不同的平台上,Tab键的宽度可是不一样的。

说道这里,相信大家比较清楚了,在缩进的时候,尽量不用Tab,
而是用空格。好在许多编辑器,都可以把你的键盘上的Tab键定义
成几个空格。赶紧去定义它!

每次用多少空格呢?4个。2个太少不明显,8个太多占空间。

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

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= "bbs.tsinghua.edu.cn ";
static   final   SMTH_BBS= "bbs.tsinghua.edu.cn ";

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
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.*;
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.   空行
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;
        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)   {
                ...
        }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值