定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失。(这些规范并不是一定要绝对遵守,但是一定要让程序有良好的可读性) " m7 v0 b& F2 z6 |) t. R+ m# j5 a
4 t2 n. p/ d2 ?: `
. W( T' b2 O# M$ G: s# ~/ b# B
Package 的命名 ; [. C( r: D# m2 ]
Package 的名字应该都是由一个小写单词组成。 1 D0 k) x9 p! y, x# T+ g6 g8 gClass 的命名 $ Q; z/ D8 @6 X8 i: y2 E% K" F$ g# n
Class 的名字必须由大写字母开头而其他字母都小写的单词组成 5 \1 |% I' O, _& E' K! c: Y3 A+ c) XClass 变量的命名 6 b6 E3 |" [' i2 C! N. j
变量的名字必须用一个小写字母开头。后面的单词用大写字母开头。 9 u* N% u; n: H; A% e5 |* S* NStatic Final 变量的命名 ' i2 x3 [3 X; ]$ o, [7 [9 o, hStatic Final 变量的名字应该都大写,并且指出完整含义。 9 G- B$ A# Y. \& q7 X参数的命名 1 [" S6 Y H9 ?4 |/ F, }
参数的名字必须和变量的命名规范一致。 7 u' f1 x, r3 u w
数组的命名 % X% P2 w1 l- e
数组应该总是用下面的方式来命名: ! j9 h% F7 X7 n3 v g 6 H+ V' H* H A) Sbyte[] buffer; $ g, I8 Z8 B! Y, Y! T) J
1 d2 y0 I2 w8 Y) J
/ W) ^/ d% O5 i. D, g: }' N而不是: " k2 \1 @2 i$ b+ n7 S" P
! e* B+ Q( z, ~& Q) G# Y r4 rbyte buffer[]; 1 Q# n! f6 G: t: M7 X 7 i% n, N) t7 }& A* D6 g$ w; C+ [3 i3 d
& P+ e. \' e4 L( v4 n4 s
方法的参数 8 K9 T5 r8 P, V1 @9 u1 b
使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字: 2 `1 j5 ?1 n' Q# |% J/ J
7 P- M. W8 ^# u. a
SetCounter(int size){ - ], J1 h5 |0 |( g' o. d5 H: ^) D
this.size = size; 9 @! d/ G8 y4 Z} . m( Q) n3 u2 a- i, x+ ^4 P0 C 4 L1 H8 T( U. E, p( w% `% l& c& A% [- P3 V/ i: u! L
+ H5 @2 N- {# |# d . J& B* {, @% o, m3 BJava 文件样式 : g9 o. n _5 ~4 R
所有的 Java(*.java) 文件都必须遵守如下的样式规则 ( t5 o- n3 x) n2 x; D& c1 c& }3 ]1 p4 B) c3 a- z5 B! F$ @
3 B( x0 a; }, ^6 }( E( `版权信息 ( S4 \3 F+ A: I, y1 I
版权信息必须在 java 文件的开头,比如: 9 u" f9 T5 }" l! ?! u & r8 ]7 G$ Q. @7 z9 X/** # y. H0 o; l4 `+ F0 N. D
* Copyright ® 2000 Shanghai XXX Co. Ltd. # a# n1 s, N: @
* All right reserved. 4 J" \% }( W' c! f
*/ ( \. b# T/ ?$ O; h0 H# T! ]6 \; Q' R* P+ p. C% G) Y, l
: @8 `3 h7 K7 i4 B+ {9 S8 B
其他不需要出现在 javadoc 的信息也可以包含在这里。 * ~! T+ K# k. q% X
2 h: z- N, ~- {' K
* n" Y+ d/ k3 D6 f1 Q5 K" @
Package/Imports , z! h1 L: z, ^+ ~3 C
package 行要在 import 行之前,import 中标准的包名要在本地的包名之前,而且按照字母顺序排列。如果 import 行中包含了同一个包中的不同子目录,则应该用 * 来处理。 9 C& Y o* t3 K1 t& R3 c, X3 r, x: K! u% P3 h
package hotlava.net.stats; f+ o7 L3 E$ F' U; o
0 s" y8 ^' H9 n( g; R9 Vimport java.io.*; ( F) F* \$ m; e: m4 \" l1 B
import java.util.Observable; " k2 F) W4 o5 z8 Wimport hotlava.util.Application; ' ]# v7 H7 d6 C a' V& p) b7 G/ Q 4 A( T" P7 k3 U0 z% y) z s' C& J: z0 |# `# G0 ^# N( D
这里 java.io.* 使用来代替InputStream and OutputStream 的。 6 b$ U) r9 {1 l$ ?1 s+ }8 c& x' H1 \8 T" B; @+ `/ i
6 o9 `# s3 i$ z7 F
Class 8 z: f5 W0 p* u8 l- V7 x- }2 H
接下来的是类的注释,一般是用来解释类的。 ' {6 x6 F' W! M/ X * J9 E; j/ s. B: V/ ` `+ p/** 0 z6 `) \2 v8 v9 P, D
* A class representing a set of packet and byte counters $ a7 N. n, ~7 D
* It is observable to allow it to be watched, but only i0 m) a! }' I- X! K& w
* reports changes when the current set is complete 5 y+ K( h' x X4 ]4 p
*/ ; {5 L; T6 {4 j i9 z/ n5 V7 b* J& j# S8 S
* ~1 T) q% W2 r' ]% Q2 D) g2 m接下来是类定义,包含了在不同的行的 extends 和 implements ( j: ]: b6 x7 O; M+ u6 p / C3 ?/ m" m, v6 p3 s' vpublic class CounterSet / L4 P$ C$ e: _
extends Observable - z9 _4 { q% c$ \% Jimplements Cloneable . M) q, B. o( B) P1 c, f5 k: K) X2 o1 }$ O8 N+ _6 }% ^