﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Better Java,Lighter Java-文章分类-编码规约</title><link>http://www.blogjava.net/tangyong/category/18946.html</link><description>Java,生命中的支柱!</description><language>zh-cn</language><lastBuildDate>Thu, 01 Mar 2007 15:37:44 GMT</lastBuildDate><pubDate>Thu, 01 Mar 2007 15:37:44 GMT</pubDate><ttl>60</ttl><item><title>[转载]SpringSide的代码规范</title><link>http://www.blogjava.net/tangyong/articles/91609.html</link><dc:creator>会飞的鱼</dc:creator><author>会飞的鱼</author><pubDate>Wed, 03 Jan 2007 11:22:00 GMT</pubDate><guid>http://www.blogjava.net/tangyong/articles/91609.html</guid><wfw:comment>http://www.blogjava.net/tangyong/comments/91609.html</wfw:comment><comments>http://www.blogjava.net/tangyong/articles/91609.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tangyong/comments/commentRss/91609.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tangyong/services/trackbacks/91609.html</trackback:ping><description><![CDATA[
		<h1 class="block_title">
				<a id="viewpost1_TitleUrl" href="/calvin/archive/2006/12/15/87903.html">SpringSide的代码规范 </a>
		</h1>
		<div class="post">
				<div class="postcontent">
						<h2>
								<a name="CodingStandards-%E5%89%8D%E8%A8%80%26nbsp%3B%26nbsp%3B%26nbsp%3B">
								</a>前言   </h2>
						<p>    本文档反映的是SpringSide 团队的编码规范，同时推荐所有使用SpringSide框架的开发人员遵循。</p>
						<p>    本文档基本遵循<span class="nobr"><a title="Visit page outside Confluence" href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html" rel="nofollow">Sun's Coding Conventions<sup><img class="rendericon" height="7" alt="" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" /></sup></a></span>，补充了其中没有说明或者有所改动的地方。<br /><br />    <font size="3">本文档随SpringSide的开发而不断更新，最新版本请访问SpringSide Wiki：</font><br />    <br />    <a href="http://wiki.springside.org.cn/display/springside/Coding+Standards">http://wiki.springside.org.cn/display/springside/Coding+Standards</a>版权声明   </p>
						<h3>
						</h3>
						<p>    本规范由<span class="nobr"><a title="Visit page outside Confluence" href="http://www.springside.org.cn/team.php" rel="nofollow">springside团队<sup><img class="rendericon" height="7" alt="" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" /></sup></a></span>维护，相关评论与意见请发至springside@gmail.com，转载请注明出处。</p>
						<h3>
								<a name="CodingStandards-%E8%A7%84%E8%8C%83%E7%AD%89%E7%BA%A7%E8%AF%B4%E6%98%8E">
								</a>规范等级说明</h3>
						<ul>
								<li>
										<font color="#000000">级别I:   默认登记要求所有项目中的所有成员遵守。</font>
								</li>
								<li>
										<font color="#cc6600">级别II:  建议所有项目中的所有成员遵守。</font>
								</li>
								<li>
										<font color="#3333ff">级别III: 鼓</font>
										<font color="#3333ff">励各个项目根据实际情况执行。</font>
								</li>
						</ul>
						<h2>
								<a name="CodingStandards-1.%E6%A0%BC%E5%BC%8F%E4%B8%8E%E5%91%BD%E5%90%8D%E8%A7%84%E8%8C%83%28FormatingandNamingConventions%29">
								</a>1.格式与命名规范(Formating and Naming Conventions)</h2>
						<h3>
								<a name="CodingStandards-1.1%26nbsp%3B%26nbsp%3B%E7%BC%A9%E8%BF%9B">
								</a>1.1  缩进</h3>
						<p>  使用Tab缩进，而不是空格键--将缩进2，4，8字符的选择权留给阅读者。</p>
						<h3>
								<a name="CodingStandards-1.2%E6%8D%A2%E8%A1%8C">
								</a>1.2 换行</h3>
						<p>   每行120字符--因为已是1024*768的年代。</p>
						<p>   if,for,while语句只有单句时，如果该句可能引起阅读混淆，需要用" {"和"}"括起来，否则可以省略。</p>
						<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
								<div>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000">错误，需要使用花括号{}括起来</span>
										<span style="COLOR: #008000">
												<br />
										</span>
										<span style="COLOR: #0000ff">if</span>
										<span style="COLOR: #000000"> (condition)<br />    </span>
										<span style="COLOR: #0000ff">if</span>
										<span style="COLOR: #000000">(condition) doSomething();<br /></span>
										<span style="COLOR: #0000ff">else</span>
										<span style="COLOR: #000000">
												<br />    doSomething();</span>
								</div>
						</div>
						<h3>
								<a name="CodingStandards-1.3%26nbsp%3B%E5%91%BD%E5%90%8D%E8%A7%84%E5%88%99%26nbsp%3B">
								</a>1.3 命名规则 </h3>
						<ul>
								<li>不允许使用汉语拼音命名  
</li>
								<li>遇到缩写如XML时，仅首字母大写，即loadXmlDocument()而不是loadXMLDocument() 
</li>
								<li>Package名必须全部小写，尽量使用单个单词 
</li>
								<li>Interface名可以是一个名词或形容词(加上'able','ible', or 'er'后缀)，如Runnable，Accessible。<br />为了基于接口编程，不采用首字母为I或加上IF后缀的命名方式，如IBookDao,BookDaoIF。 
</li>
								<li>页面部件名建议命名为：btnOK、lblName或okBtn、nameLbl。<font color="#cc6600">(II)</font>  <br />其中btn、lbl缩写代表按钮(Button)、标签(Label)。 
</li>
								<li>局部变量及输入参数不要与类成员变量同名(get/set方法与构造函数除外) </li>
						</ul>
						<h3>
								<a name="CodingStandards-1.4%E5%A3%B0%E6%98%8E">
								</a>1.4 声明</h3>
						<ul>
								<li>修饰符应该按照如下顺序排列：public, protected, private, abstract, static, final, transient, volatile, synchronized, native, strictfp。 
</li>
								<li>类与接口的声明顺序(可用Eclipse的source-&gt;sort members功能自动排列):  
<ol><li>静态成员变量 / Static Fields 
</li><li>静态初始化块 / Static Initializers 
</li><li>成员变量 / Fields 
</li><li>初始化块 / Initializers 
</li><li>构造器 / Constructors 
</li><li>静态成员方法 / Static Methods 
</li><li>成员方法 / Methods 
</li><li>重载自Object的方法如toString(), hashCode() 和main方法 
</li><li>类型(内部类) / Types(Inner Classes) </li></ol></li>
						</ul>
						<p>     同等的类型，按public, protected, private的顺序排列。</p>
						<h2>
								<a name="CodingStandards-2.%E6%B3%A8%E9%87%8A%E8%A7%84%E8%8C%83%28DocumentConvertions%29">
								</a>2.注释规范(Document Convertions)</h2>
						<h3>
								<a name="CodingStandards-2.1%E6%B3%A8%E9%87%8A%E7%B1%BB%E5%9E%8B">
								</a>2.1 注释类型</h3>
						<h4>
								<a name="CodingStandards-2.1.1JavaDoc%E6%B3%A8%E9%87%8A">
								</a>2.1.1 JavaDoc注释</h4>
						<p>  略。</p>
						<h4>
								<a name="CodingStandards-2.1.2%E5%A4%B1%E6%95%88%E4%BB%A3%E7%A0%81%E6%B3%A8%E9%87%8A">
								</a>2.1.2 失效代码注释</h4>
						<p>  由/*<strong>...*</strong>/界定，标准的C-Style的注释。专用于注释已失效的代码。</p>
						<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
								<div>
										<span style="COLOR: #008000">/*</span>
										<span style="COLOR: #008000">
												<br /> * Comment out the code<br /> * String s = "hello";<br /> * System.out.println(s);<br /> </span>
										<span style="COLOR: #008000">*/</span>
								</div>
						</div>
						<p> </p>
						<h4>
								<a name="CodingStandards-2.1.3%E4%BB%A3%E7%A0%81%E7%BB%86%E8%8A%82%E6%B3%A8%E9%87%8A">
								</a>2.1.3 代码细节注释</h4>
						<p>  由//界定，专用于注释代码细节，即使有多行注释也仍然使用//，以便与用/**/注释的失效代码分开</p>
						<p>  除了私有变量外，不推荐使用行末注释。</p>
						<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
								<div>
										<span style="COLOR: #0000ff">class</span>
										<span style="COLOR: #000000"> MyClass {<br /><br />    </span>
										<span style="COLOR: #0000ff">private</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">int</span>
										<span style="COLOR: #000000"> myField; </span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000"> An end-line comment.</span>
										<span style="COLOR: #008000">
												<br />
										</span>
										<span style="COLOR: #000000">
												<br />    </span>
										<span style="COLOR: #0000ff">public</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">void</span>
										<span style="COLOR: #000000"> myMethod {<br /><br />       </span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000">a very very long<br />       </span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000">comment.</span>
										<span style="COLOR: #008000">
												<br />
										</span>
										<span style="COLOR: #000000">       </span>
										<span style="COLOR: #0000ff">if</span>
										<span style="COLOR: #000000"> (condition1) {<br />          </span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000">condition1 comment</span>
										<span style="COLOR: #008000">
												<br />
										</span>
										<span style="COLOR: #000000">          ...<br />        } </span>
										<span style="COLOR: #0000ff">else</span>
										<span style="COLOR: #000000"> {<br />          </span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000">elses condition comment</span>
										<span style="COLOR: #008000">
												<br />
										</span>
										<span style="COLOR: #000000">          ...<br />        }<br />    }<br />}</span>
								</div>
						</div>
						<p> </p>
						<h3>
								<a name="CodingStandards-2.2%26nbsp%3B%E6%B3%A8%E9%87%8A%E7%9A%84%E6%A0%BC%E5%BC%8F">
								</a>2.2 注释的格式</h3>
						<ul>
								<li>注释中的第一个句子要以（英文）句号、问号或者感叹号结束。Javadoc生成工具会将注释中的第一个句子放在方法汇总表和索引中。 
</li>
								<li>为了在JavaDoc和IDE中能快速链接跳转到相关联的类与方法，尽量多的使用@see xxx.MyClass，@see xx.MyClass#find(String)。 
</li>
								<li>Class必须以@author 作者名声明作者，不需要声明@version与@date，由版本管理系统保留此信息。<font color="#cc6600">(II)</font></li>
								<li>如果注释中有超过一个段落，用&lt;p&gt;分隔。<font color="#cc6600">(II)</font></li>
								<li>示例代码以&lt;pre&gt;&lt;/pre&gt;包裹。<font color="#cc6600">(II)</font></li>
								<li>标识(java keyword, class/method/field/argument名，Constants) 以&lt;code&gt;&lt;/code&gt;包裹。<font color="#cc6600">(II)</font></li>
								<li>标识在第一次出现时以{@linkxxx.Myclass}注解以便JavaDoc与IDE中可以链接。<font color="#cc6600">(II)</font></li>
						</ul>
						<h3>
								<a name="CodingStandards-2.3%26nbsp%3B%E6%B3%A8%E9%87%8A%E7%9A%84%E5%86%85%E5%AE%B9">
								</a>2.3 注释的内容</h3>
						<h4>
								<a name="CodingStandards-2.3.1%E5%8F%AF%E7%B2%BE%E7%AE%80%E7%9A%84%E6%B3%A8%E9%87%8A%E5%86%85%E5%AE%B9">
								</a>2.3.1 可精简的注释内容</h4>
						<p>    注释中的每一个单词都要有其不可缺少的意义，注释里不写"@param name -名字"这样的废话。<br />    如果该注释是废话，连同标签删掉它，而不是自动生成一堆空的标签，如空的@param name，空的@return。</p>
						<h4>
								<a name="CodingStandards-2.3.2%E6%8E%A8%E8%8D%90%E7%9A%84%E6%B3%A8%E9%87%8A%E5%86%85%E5%AE%B9">
								</a>2.3.2 推荐的注释内容</h4>
						<ul>
								<li>对于API函数如果存在契约，必须写明它的前置条件(precondition)，后置条件(postcondition)，及不变式(invariant)。<font color="#cc6600">(II)</font></li>
								<li>对于调用复杂的API尽量提供代码示例。<font color="#cc6600">(II)</font></li>
								<li>对于已知的Bug需要声明。<font color="#cc6600">(II)</font></li>
								<li>在本函数中抛出的unchecked exception尽量用@throws说明。<font color="#cc6600">(II)</font></li>
						</ul>
						<h4>
								<a name="CodingStandards-2.3.3Null%E8%A7%84%E7%BA%A6">
								</a>2.3.3 Null规约</h4>
						<p>   如果方法允许Null作为参数，或者允许返回值为Null，必须在JavaDoc中说明。<br />   如果没有说明，方法的调用者不允许使用Null作为参数，并认为返回值是Null Safe的。</p>
						<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
								<div>
										<span style="COLOR: #008000">/**</span>
										<span style="COLOR: #008000">
												<br /> * 获取对象.<br /> *<br /> * @ return the object to found or null if not found.<br /> </span>
										<span style="COLOR: #008000">*/</span>
										<span style="COLOR: #000000">
												<br />Object get(Integer id){<br />    ...<br />}</span>
								</div>
						</div>
						<p> </p>
						<h4>
								<a name="CodingStandards-2.3.4%E7%89%B9%E6%AE%8A%E4%BB%A3%E7%A0%81%E6%B3%A8%E9%87%8A">
								</a>2.3.4 特殊代码注释</h4>
						<ul>
								<li>代码质量不好但能正常运行，或者还没有实现的代码用//TODO: 或 //XXX:声明  
</li>
								<li>存在错误隐患的代码用//FIXME:声明 </li>
						</ul>
						<h2>
								<a name="CodingStandards-3.%E7%BC%96%E7%A8%8B%E8%A7%84%E8%8C%83%28ProgrammingConventions%29">
								</a>3.编程规范(Programming Conventions)</h2>
						<h3>
								<a name="CodingStandards-3.1%E5%9F%BA%E6%9C%AC%E8%A7%84%E8%8C%83">
								</a>3.1基本规范</h3>
						<ol>
								<li>当面对不可知的调用者时，方法需要对输入参数进行校验，如不符合抛出IllegalArgumentException，建议使用Spring的Assert系列函数。  
</li>
								<li>隐藏工具类的构造器，确保只有static方法和变量的类不能被构造 
</li>
								<li>变量，参数和返回值定义尽量基于接口而不是具体实现类，如Map map = new HashMap(); 
</li>
								<li>代码中不能使用System.out.println()，e.printStackTrace()，必须使用logger打印信息。 </li>
						</ol>
						<h3>
								<a name="CodingStandards-3.2%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86">
								</a>3.2 异常处理</h3>
						<ol>
								<li>重新抛出的异常必须保留原来的异常，即throw new NewException("message",e); 而不能写成throw new NewException("message")。 
</li>
								<li>在所有异常被捕获且没有重新抛出的地方必须写日志。  
</li>
								<li>如果属于正常异常的空异常处理块必须注释说明原因，否则不允许空的catch块。 
</li>
								<li>框架尽量捕获低级异常，并封装成高级异常重新抛出，隐藏低级异常的细节。<font color="#3333ff">(III)</font></li>
						</ol>
						<h3>
								<a name="CodingStandards-3.3%E4%BB%A3%E7%A0%81%E5%BA%A6%E9%87%8F">
								</a>3.3 代码度量</h3>
						<h4>
								<a name="CodingStandards-3.3.1%E8%80%A6%E5%90%88%E5%BA%A6%E5%BA%A6%E9%87%8F">
								</a>3.3.1 耦合度度量</h4>
						<ul>
								<li>DAC度量值不要不大于7 <font color="#3333ff">( III )</font><br />解释：DAC(Data Abstraction Coupling)数据抽象耦合度是描述对象之间的耦合度的一种代码度量。DAC度量值表示一个类中有实例化的其它类的个数。 
</li>
								<li>CFO度量值不要不大于20 <font color="#3333ff">( III )</font><br />解释：CFO(Class Fan Out)类扇出是描述类之间的耦合度的一种代码度量。CFO度量值表示一个类依赖的其他类的个数。 </li>
						</ul>
						<h4>
								<a name="CodingStandards-3.3.2%E6%96%B9%E6%B3%95%E5%BA%A6%E9%87%8F">
								</a>3.3.2 方法度量</h4>
						<li>方法（构造器）参数在5个以内 <font color="#cc6600">( II )</font><br />    太多的方法（构造器）参数影响代码可读性。考虑用值对象代替这些参数或重新设计。 
</li>
						<li>方法长度150行以内 <font color="#cc6600">( II )</font></li>
						<li>CC 度量值不大于10<font color="#3333ff">(III )</font><br /><font color="#000000">    解释：CC(CyclomaticComplexity)圈复杂度指一个方法的独立路径的数量，可以用一个方法内if,while,do,for,catch,switch,case,?:语句与&amp;&amp;,||操作符的总个数来度量。</font></li>
						<li>NPath度量值不大于200 <font color="#3333ff">( III )</font><br />    解释：NPath度量值表示一个方法内可能的执行路径的条数。  
<h4><a name="CodingStandards-3.3.3%E5%85%B6%E4%BB%96%E5%BA%A6%E9%87%8F"></a>3.3.3 其他度量</h4><ul><li>布尔表达式中的布尔运算符(&amp;&amp;,||)的个数不超过3个<font color="#3333ff">(III)</font>  
</li><li>if语句的嵌套层数3层以内<font color="#cc6600">(II)</font></li><li>文件长度2000行以内<font color="#cc6600">(II)</font></li><li>匿名内部类20行以内 <font color="#cc6600">( II )</font><br />太长的匿名内部类影响代码可读性, 建议重构为命名的（普通）内部类。 </li></ul><h3><a name="CodingStandards-3.4JDK5.0"></a>3.4 JDK5.0</h3><ol><li>重载方法必须使用@Override，可避免父类方法改变时导致重载函数失效。 
</li><li>不需要关心的warning报告用@SuppressWarnings("unused"), @SuppressWarnings("unchecked"),@SuppressWarnings("serial") 注释。 </li></ol><h2><a name="CodingStandards-4.%E8%87%AA%E5%8A%A8%E4%BB%A3%E7%A0%81%E6%A3%80%E6%9F%A5"></a>4.自动代码检查</h2><p>   使用<span class="nobr"><a title="Visit page outside Confluence" href="http://www.eclipse.org/" rel="nofollow" mce_href="http://www.eclipse.org" linktype="raw" linktext="Eclipse|http://www.eclipse.org">Eclipse<sup><img class="rendericon" height="7" alt="" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" mce_src="http://www.blogjava.net/images/icons/linkext7.gif" /></sup></a></span>  与 <span class="nobr"><a title="Visit page outside Confluence" href="http://www.jetbrains.com/" rel="nofollow" mce_href="http://www.jetbrains.com" linktype="raw" linktext="Inellij IDEA|http://www.jetbrains.com">Inellij IDEA<sup><img class="rendericon" height="7" alt="" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" mce_src="http://www.blogjava.net/images/icons/linkext7.gif" /></sup></a></span> 的代码校验已经可以排除很多问题。</p><p>   再配合使用<span class="nobr"><a title="Visit page outside Confluence" href="http://checkstyle.sf.net/" rel="nofollow" mce_href="http://checkstyle.sf.net" linktype="raw" linktext="Checkstyle|http://checkstyle.sf.net">Checkstyle<sup><img class="rendericon" height="7" alt="" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" mce_src="http://www.blogjava.net/images/icons/linkext7.gif" /></sup></a></span> ，<span class="nobr"><a title="Visit page outside Confluence" href="http://pmd.sf.net/" rel="nofollow" mce_href="http://pmd.sf.net" linktype="raw" linktext="PMD|http://pmd.sf.net">PMD<sup><img class="rendericon" height="7" alt="" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" mce_src="http://www.blogjava.net/images/icons/linkext7.gif" /></sup></a></span> ，<span class="nobr"><a title="Visit page outside Confluence" href="http://findbugs.sf.net/" rel="nofollow" mce_href="http://findbugs.sf.net" linktype="raw" linktext="FindBugs|http://findbugs.sf.net">FindBugs<sup><img class="rendericon" height="7" alt="" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" mce_src="http://www.blogjava.net/images/icons/linkext7.gif" /></sup></a></span> 三重检查，共五层的校验涵盖了大部分的Guide Line。</p><p>   如果代码要求不苛刻，可以仅使用Eclipse 或 IDEA 搭配 Checkstyle的两重保湿效果。</p><ol><li><strong>Eclipse</strong>：在Windows-&gt;Preferences-&gt;Java-Compiler-&gt;Errors/Warnings中，按本文档的规则将一些原来Ignore的规则打开。 
</li><li><strong>IDEA</strong>：在Setting-&gt;Errors中设定规则，调用Analyzer-&gt;Inspece Code进行校验。 
</li><li><strong>CheckStyle</strong>：安装<span class="nobr"><a title="Visit page outside Confluence" href="http://eclipse-cs.sourceforge.net/" rel="nofollow">CheckStyle的Eclipse插件<sup><img class="rendericon" height="7" alt="" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" /></sup></a></span>，在Windows-&gt;Preferences-&gt;CheckStyle导入springside团队预设在/tools/codereviewer/springside_check.xml的规则 
</li><li><strong>PMD</strong>：安装<span class="nobr"><a title="Visit page outside Confluence" href="http://pmd.sourceforge.net/eclipse/" rel="nofollow">PMD的Eclipse插件<sup><img class="rendericon" height="7" alt="" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" /></sup></a></span>，Windows-&gt;Preferences-&gt;PMD清除原来所有规则，导入springside团队预设在/tools/codereviewer/springside_pmd.xml的规则。 
</li><li>FindBugs：安装<span class="nobr"><a title="Visit page outside Confluence" href="http://findbugs.sourceforge.net/manual/eclipse.html" rel="nofollow">FindBugs的Eclipse插件<sup><img class="rendericon" height="7" alt="" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" /></sup></a></span>，在项目属性-&gt;FindBugs中，取消下列警告MS/EI/EI2/ ， SnVI/SE/WS/RS ，ST/NP/UwF/SS/UuF|UrF|SIC  </li></ol><h2><a name="CodingStandards-5.%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99"></a>5.参考资料</h2><ol><li><span class="nobr"><a title="Visit page outside Confluence" href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html" rel="nofollow">Sun's Coding Conventions<sup><img class="rendericon" height="7" alt="" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" /></sup></a></span>Sun MicroSystem； 
</li><li><span class="nobr"><a title="Visit page outside Confluence" href="http://www.ambysoft.com/books/elementsJavaStyle.html" rel="nofollow">The Elements of Java Style<sup><img class="rendericon" height="7" alt="" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" /></sup></a></span>  Scott W. Ambler 等著； 
</li><li>代码检测工具的规则： <span class="nobr"><a title="Visit page outside Confluence" href="http://checkstyle.sourceforge.net/checks.html" rel="nofollow">checkstyle<sup><img class="rendericon" height="7" alt="" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" /></sup></a></span>，<span class="nobr"><a title="Visit page outside Confluence" href="http://pmd.sourceforge.net/rules/index.html" rel="nofollow">pmd<sup><img class="rendericon" height="7" alt="" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" /></sup></a></span> ，<span class="nobr"><a title="Visit page outside Confluence" href="http://findbugs.sourceforge.net/bugDescriptions.html" rel="nofollow">findbugs<sup><img class="rendericon" height="7" alt="" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" /></sup></a></span></li></ol></li>
				</div>
		</div>
<img src ="http://www.blogjava.net/tangyong/aggbug/91609.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tangyong/" target="_blank">会飞的鱼</a> 2007-01-03 19:22 <a href="http://www.blogjava.net/tangyong/articles/91609.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>