1、静态常量字段( static final ) 全部采用大写字母,单词之间用下划线分隔; public static final Long FEEDBACK;public static Long USER_STATUS;1.风格务必保持一贯性(Consistent)一位同胞顶着我的鼻子问,为什么我们的Java代码缩进格式非得是这样,而不能是他那样,他就是喜欢他自己的这一种,因此他写的代码总是用他自己习惯的风格。结果在Code Review里被大家毙掉,责令修改。因此他是大大地不服。就是风格一贯性问题。其实他的风格,本来也没有什么问题,但在项目里,和其他程序员的程序的风格,显得扃异,那就存在问题了
2、。比如这个缩进,又比如变量命名方法,不同的类,不同的Methods里,各自不同,这程序就很难看了。所以一旦你选择了某种风格,一定要贯彻始终。如果一个项目里规定了一个风格,即便很不符合你自己的习惯,也要贯彻始终,绝不应该有标新立异。2.缩进风格(indent)既然是从缩进说起,就先说说缩进风格;一般来说,象Java这样的类C语言,都采用缩进风格。而常用的,有四种A.K&R风格这是C程序最早的缩进风格,由C的发明者Ritchie和他的合作者Kernighan率先使用:if()其特点,是大括号和if判断在同一行。通常,缩进为8个空格或一个tab键,但在C+和Java里,也常缩进4个空格。有人喜欢用两
3、个空格,窃以为不好,不明显。B.BSD风格又称AllmanStyle,源自UnixBSD程序员EricAllman-他为BSD写过很多程序:)特点:大括号和条件判断分在两行。C.Whitesmith风格这种风格源于WhitesmithC:D.GNU风格这种风格仅见于GNUEMACS的源程序中:那么在Java里用哪种好呢?建议只采用A或B。SUN有一个JavaCodeNameConvention,建议的是A。3.Tab还是空格(TabsvsSpace)还是缩进问题。那么一次缩进应该多大距离?是八个空格键,还是一个Tab键?Java有一个特点,就是跨平台性。不过跨平台指的是它的Class可以在不同
4、平台的虚拟机上运行。Java的源程序,有时候可不是跨平台的。什么?源程序还能不跨平台?是的。有次一个程序员送来一些Code,在我的环境里打开,程序难看得一塌糊涂,有该缩进的地方,没有缩进,有的则缩进一大截,如同怪石一样,嶙峋参差。这样的代码质量可不行!叫来程序员一问,答曰在他那里漂亮得很啊,他还专门花时间去美化它们了呢?原来他的缩进没有注意一个风格,在有的地方用Tab键,有的地方打空格。在一些不同的平台上,Tab键的宽度可是不一样的。说道这里,相信大家比较清楚了,在缩进的时候,尽量不用Tab,而是用空格。好在许多编辑器,都可以把你的键盘上的Tab键定义成几个空格。赶紧去定义它!每次用多少空格呢
5、?4个。2个太少不明显,8个太多占空间。4.行宽说道8个空格键占空间,那么我一行有320列,8个空格算什么?打住!请寄住,一行尽量不要超过80列。许多终端一个屏幕只能显示80列,为它们想想巴。如果你的语句太长,想办法折断它,分几列来写。5.变量命名SUNJavaConvention里定义了Java里package,class,method和普通变量的命名规则,我就不用再浪费字节了。这里提提一些注意事项和一些SUN没提到但大家常用的方式。a.用有意义的名字命名变量首先,用完整的英语单词或约定俗成的简写命名你的变量,如:firstNamezipCode如果英语不够好,至少用别人看得懂的拼音命名,如
6、zhuZhi(住址)胡乱简写,或者胡乱命名,则没有人看得懂你的变量的含义:fnzczzb.常量用全大写加下画线命名Java里的常量,就是staticfinal:staticfinalSMTH_BBS=;c.用复数命名collection类变量collection包括数组,vector等。命名时请用复数:customersclassMates也可以用一些修饰词命名:someStudentsallDepartmentsd.循环变量一般大家都用i,j,k等做循环变量。e.Stream变量一般习惯用in,out作为Stream变量,对应inputStream,outputStream类。如果即读又写的
7、ioStream,可以用inOut。f.变量的命名习惯习惯MFC的人喜欢采用匈牙利命名法(HungarianNotation)。如果你习惯这样,尽管用,但注意要和同Project的人保持一致。还有些人习惯C+里的下画线方式,也可以采用。HungarianNotation:sFirstNameUnderScoreStyle:_firstName这里提供一个HungarianNotation的前缀命名习惯:intibytebcharcdoubledfloatflongloffsetofflengthlenObjectoStrings(orstr)Arbitrayvalue v6.Java文件格式有
8、许多方式定义你的文件语句格式,以下是一个例子:文件头说明(可无)Package定义空行Import语句类定义packagecom.midi;/JavaClassesimportjava.awt.*;java.io.*;javax.swing.event.*;/WebLogicweblogic.internal.*;/*Blahblahauthormidiversion22.2*/publicclassMyFirstextendsJFrame.Foo.38.2Foo7.import顺序杂乱无章的顺序,看起来很不顺眼。应该对你要import的classes归类,按顺序罗列:Java标准类(java
9、.*)Java扩充类(javax.*)第三方类你的应用程序的类而且注意在第三方类里注释它们,说明它们的来源:java.*;java.util.Date;java.util.Enumeration;javax.sql.*;/ApacheXercesorg.apache.xml.*;org.apache.xerces.dom.*;/Applicationclassescom.midi.util.*;8.Classes的顺序Javadoc注释或者其它文件头注释类声明Fields声明构造函数g.方法(不包括main)h.i.Inner类j.k.main()例:ThisisasimpleDOMtreeX
10、MLparser.author:version:0.0.1*/MyParser/constantsTITLE=MyParserVERSION0.0.1PrivatevariablesprivateiSchemaVersion;Constructor()iSchemaVersion1;param.(iSchemaVersion)this.iSchemaVersionInitializethevoidmyInitthrowsException.startapplicationmain(Stringargvs)9.Field定义请遵从以下顺序:Public常量Public变量Protected常量Protected变量Package常量Package变量Private常量Private变量