JAVA代码编程规范 G]xYQ]
类的成员变量定义 4TQmEM,
Q<szH1-
大部分类的成员变量应该定义为protected来防止继承类使用他们。 f"\klfrRI_
-1$z=,q'
数组标识 (!m6>m2
H#X*OJ
要用"int[]packets",而不是"intpackets[]",后一种永远也不要用。 Y1AZ%{^0a
-#<{3BJTrz
成员变量与函数内局部变量用this `o9:6X?RA
2>.b~q@
publicvoidsetPackets(int[]packets){this.packets=packets;}//一般函数 {[bpvK
9I5AYa?
CounterSet(intsize){this.size=size;}//构造函数 Q|VBH5}1O
$B9?>a|{A
可读性 c|'$3dB*
{&Rz>JK
避免使用不易理解的数字,用有意义的标识来替代。不要使用难懂的技巧性很高的语句。 2u0B=0x
toj5b;+4F
源程序中关系较为紧密的代码应尽可能相邻。 ETH
($$M
7Kj7or|
可移植性 C\Ob!sv%H
fMHw=wJQ
BorlandJbulider不喜欢synchronized这个关键字,如果你的断点设在这些关键字的作用域内的话,调试的时候你会发现的断点会到处乱跳,让你不知所措。除非必须,尽量不要使用。 g@t..xJ,
]m&Ss
换行 %PPy0RZ^
AU}|o0Ur
如果要换行的话,尽量用println来代替在字符串中使用"\n"。 V3|"
v4
L*p7|rq$"
你不要这样:System.out.print("Hello,world!\n"); ~rq:I<5
e<8KZ
要这样:System.out.println("Hello,world!"); S<*1b 6%D
",5=LW&,
或者构造一个带换行符的字符串,至少要象这样: 4__HH~j ?Q
.W9
*-
Stringnewline=System.getProperty("line.separator"); 1n*"C!q
FyXO @yF
System.out.print("Helloworld"+newline); :YLYCVi|
x a\~(B.
PrintStream "*c&[ALw
2>J;P C[;
PrintStream已经被不赞成(deprecated)使用,用PrintWrite来代替她。 q{[y4c1bG{
?}uvpB1}
排版规范 a>y e
tp ky
关键词和操作符之间加适当的空格。 LR4W
QD-Bt=S7l
相对独立的程序块与块之间加空行。 {)kL7>u]^V
8[
ZuVJ]
较长的语句、表达式等要分成多行书写。 D51O/.:U2
}\A0g}
划分出的新行要进行适应的缩进,使排版整齐,语句可读。 ;s4e8L "
不要在循环中构造和释放对象 `K2vG`c
"?Jf#
使用StringBuffer对象 Gl T/JZ9
a7]Z_Gk
在处理String的时候要尽量使用StringBuffer类,StringBuffer类是构成String类的基础。String类将StringBuffer类封装了起来,(以花费更多时间为代价)为开发人员提供了一个安全的接口。当我们在构造字符串的时候,我们应该用StringBuffer来实现大部分的工作,当工作完成后将StringBuffer对象再转换为需要的String对象。比如:如果有一个字符串必须不断地在其后添加许多字符来完成构造,那么我们应该使用StringBuffer对象和她的append()方法。如果我们用String对象代替StringBuffer对象的话,会花费许多不必要的创建和释放对象的CPU时间。 kPnuU!
Sh<A936/E
避免太多或不必要的使用synchronized关键字 J =#9eW
NE@P8pQ>
,应该在必要的时候再使用她,这是个避免死锁的好方法。 .n}k,da@(
l-'\E6grdH
代码测试、维护 ,^T0!k$
tkdyR1-
1.单元测试要求至少达到语句覆盖。 EmV ZqW
>>>MTV f
2.单元测试开始要跟踪每一条语句,并观察数据流及变量的变化。 9:Z|Z?>?
*jy"g64j
3.清理、整理或优化后的代码要经过审查及测试。 8WG_4e
2\[
Q{T=Qe
4.代码版本升级要经过严格测试。