??xml version="1.0" encoding="utf-8" standalone="yes"?>导航福利在线,国产精品毛片va一区二区三区,国语自产精品视频在线看8查询8http://www.aygfsteel.com/tangyong/category/18946.htmlJava,生命中的支柱!zh-cnThu, 01 Mar 2007 15:37:44 GMTThu, 01 Mar 2007 15:37:44 GMT60[转蝲]SpringSide的代码规?/title><link>http://www.aygfsteel.com/tangyong/articles/91609.html</link><dc:creator>?x)飞的?/dc:creator><author>?x)飞的?/author><pubDate>Wed, 03 Jan 2007 11:22:00 GMT</pubDate><guid>http://www.aygfsteel.com/tangyong/articles/91609.html</guid><wfw:comment>http://www.aygfsteel.com/tangyong/comments/91609.html</wfw:comment><comments>http://www.aygfsteel.com/tangyong/articles/91609.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/tangyong/comments/commentRss/91609.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/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 id="wmqeeuq" class="post"> <div id="wmqeeuq" class="postcontent"> <h2> <a name="CodingStandards-%E5%89%8D%E8%A8%80%26nbsp%3B%26nbsp%3B%26nbsp%3B"> </a>前言   </h2> <p>    本文档反映的是SpringSide 团队的编码规范,同时推荐所有用SpringSide框架的开发h员遵循?/p> <p>    本文档基本遵?span class="nobr"><a title="Visit page outside Confluence" 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>Q补充了其中没有说明或者有所改动的地斏V?br /><br />    <font size="3">本文档随SpringSide的开发而不断更斎ͼ最新版本请讉KSpringSide WikiQ?/font><br />    <br />    <a >http://wiki.springside.org.cn/display/springside/Coding+Standards</a>版权声明   </p> <h3> </h3> <p>    本规范由<span id="wmqeeuq" class="nobr"><a title="Visit page outside Confluence" 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>l护Q相兌Z意见请发至springside@gmail.comQ{载请注明出处?/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">U别I(xin):   默认登记要求所有项目中的所有成员遵守?/font> </li> <li> <font color="#cc6600">U别I(xin)I:  所有项目中的所有成员遵守?/font> </li> <li> <font color="#3333ff">U别I(xin)II: ?/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~进Q而不是空格键--羃q?Q?Q?字符的选择权留l阅读者?/p> <h3> <a name="CodingStandards-1.2%E6%8D%A2%E8%A1%8C"> </a>1.2 换行</h3> <p>   每行120字符--因ؓ(f)已是1024*768的年代?/p> <p>   if,for,while语句只有单句Ӟ如果该句可能引v阅读hQ需要用" {"?}"括v来,否则可以省略?/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">错误Q需要用花括号{}括v?/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Ӟ仅首字母大写Q即loadXmlDocument()而不是loadXMLDocument() </li> <li>Package名必d部小写,量使用单个单词 </li> <li>Interface名可以是一个名词或形容?加上'able','ible', or 'er'后缀)Q如RunnableQAccessible?br />ZZ接口~程Q不采用首字母ؓ(f)I或加上IF后缀的命名方式,如IBookDao,BookDaoIF? </li> <li>面部g名徏议命名ؓ(f)QbtnOK、lblName或okBtn、nameLbl?font color="#cc6600">(II)</font>  <br />其中btn、lbl~写代表按钮(Button)、标{?Label)? </li> <li>局部变量及(qing)输入参数不要与类成员变量同名(get/setҎ(gu)与构造函数除? </li> </ul> <h3> <a name="CodingStandards-1.4%E5%A3%B0%E6%98%8E"> </a>1.4 声明</h3> <ul> <li>修饰W应该按照如下顺序排列:(x)public, protected, private, abstract, static, final, transient, volatile, synchronized, native, strictfp? </li> <li>cM接口的声明顺?可用Eclipse的source->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>成员Ҏ(gu) / Methods </li><li>重蝲自Object的方法如toString(), hashCode() 和mainҎ(gu) </li><li>cd(内部c? / 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 注释cd</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>/界定Q标准的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 代码l节注释</h4> <p>  ?/界定Q专用于注释代码l节Q即使有多行注释也仍然?/Q以便与?**/注释的失效代码分开</p> <p>  除了U有变量外,不推荐用行末注释?/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>注释中的W一个句子要以(英文Q句受问h者感叹号l束。Javadoc生成工具?x)将注释中的W一个句子放在方法汇总表和烦引中? </li> <li>Z在JavaDoc和IDE中能快速链接蟩转到相关联的cMҎ(gu)Q尽量多的用@see xxx.MyClassQ@see xx.MyClass#find(String)? </li> <li>Class必须以@author 作者名声明作者,不需要声明@version与@dateQ由版本理pȝ保留此信息?font color="#cc6600">(II)</font></li> <li>如果注释中有过一个段落,?lt;p>分隔?font color="#cc6600">(II)</font></li> <li>CZ代码?lt;pre></pre>包裹?font color="#cc6600">(II)</font></li> <li>标识(java keyword, class/method/field/argument名,Constants) ?lt;code></code>包裹?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>    注释中的每一个单词都要有其不可缺的意义Q注释里不写"@param name -名字"q样的废话?br />    如果该注释是废话Q连同标{ֈ掉它Q而不是自动生成一堆空的标{,如空的@param nameQ空的@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函数如果存在契约Q必d明它的前|条?precondition)Q后|条?postcondition)Q及(qing)不变?invariant)?font color="#cc6600">(II)</font></li> <li>对于调用复杂的API量提供代码CZ?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>   如果Ҏ(gu)允许Null作ؓ(f)参数Q或者允许返回gؓ(f)NullQ必dJavaDoc中说明?br />   如果没有说明Q方法的调用者不允许使用Null作ؓ(f)参数Qƈ认ؓ(f)q回值是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 Ҏ(gu)代码注释</h4> <ul> <li>代码质量不好但能正常q行Q或者还没有实现的代码用//TODO: ?//XXX:声明  </li> <li>存在错误隐?zhn)的代码?/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>当面对不可知的调用者时Q方法需要对输入参数q行校验Q如不符合抛出IllegalArgumentExceptionQ徏议用Spring的Assertpd函数。? </li> <li>隐藏工具cȝ构造器Q确保只有staticҎ(gu)和变量的cM能被构? </li> <li>变量Q参数和q回值定义尽量基于接口而不是具体实现类Q如Map map = new HashMap(); </li> <li>代码中不能用System.out.println()Qe.printStackTrace()Q必M用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>重新抛出的异常必M留原来的异常Q即throw new NewException("message",e); 而不能写成throw new NewException("message")? </li> <li>在所有异常被捕获且没有重新抛出的地方必须写日志。? </li> <li>如果属于正常异常的空异常处理块必L释说明原因,否则不允许空的catch块? </li> <li>框架量捕获低异常Qƈ装成高U异帔R新抛出,隐藏低异常的细节?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度量g要不大于7 <font color="#3333ff">( III )</font><br />解释QDAC(Data Abstraction Coupling)数据抽象耦合度是描述对象之间的耦合度的一U代码度量。DAC度量DCZ个类中有实例化的其它cȝ个数? </li> <li>CFO度量g要不大于20 <font color="#3333ff">( III )</font><br />解释QCFO(Class Fan Out)cL出是描述cM间的耦合度的一U代码度量。CFO度量DCZ个类依赖的其他类的个数?</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 Ҏ(gu)度量</h4> <li>Ҏ(gu)Q构造器Q参数在5个以?<font color="#cc6600">( II )</font><br />    太多的方法(构造器Q参数媄响代码可L。考虑用值对象代替这些参数或重新设计? </li> <li>Ҏ(gu)长度150行以?<font color="#cc6600">( II )</font></li> <li>CC 度量g大于10<font color="#3333ff">(III )</font><br /><font color="#000000">    解释QCC(CyclomaticComplexity)圈复杂度指一个方法的独立路径的数量,可以用一个方法内if,while,do,for,catch,switch,case,?:语句?amp;&,||操作W的M数来度量?/font></li> <li>NPath度量g大于200 <font color="#3333ff">( III )</font><br />    解释QNPath度量DCZ个方法内可能的执行\径的条数。? <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>布尔表达式中的布?yu)(dng)运?&&,||)的个C过3?font color="#3333ff">(III)</font>  </li><li>if语句的嵌套层?层以?font color="#cc6600">(II)</font></li><li>文g长度2000行以?font color="#cc6600">(II)</font></li><li>匿名内部c?0行以?<font color="#cc6600">( II )</font><br />太长的匿名内部类影响代码可读? 重构为命名的Q普通)内部cR?</li></ul><h3><a name="CodingStandards-3.4JDK5.0"></a>3.4 JDK5.0</h3><ol><li>重蝲Ҏ(gu)必须使用@OverrideQ可避免父类Ҏ(gu)改变时导致重载函数失效? </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 id="wmqeeuq" class="nobr"><a title="Visit page outside Confluence" rel="nofollow" mce_ 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.aygfsteel.com/images/icons/linkext7.gif" /></sup></a></span>??<span id="wmqeeuq" class="nobr"><a title="Visit page outside Confluence" rel="nofollow" mce_ 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.aygfsteel.com/images/icons/linkext7.gif" /></sup></a></span> 的代码校验已经可以排除很多问题?/p><p>   再配合?span class="nobr"><a title="Visit page outside Confluence" rel="nofollow" mce_ 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.aygfsteel.com/images/icons/linkext7.gif" /></sup></a></span> ,<span id="wmqeeuq" class="nobr"><a title="Visit page outside Confluence" rel="nofollow" mce_ 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.aygfsteel.com/images/icons/linkext7.gif" /></sup></a></span> ,<span id="wmqeeuq" class="nobr"><a title="Visit page outside Confluence" rel="nofollow" mce_ 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.aygfsteel.com/images/icons/linkext7.gif" /></sup></a></span> 三重检查,׃层的校验늛了大部分的Guide Line?/p><p>   如果代码要求不苛刻,可以仅用Eclipse ?IDEA 搭配 Checkstyle的两重保湿效果?/p><ol><li><strong>Eclipse</strong>Q在Windows->Preferences->Java-Compiler->Errors/Warnings中,按本文档的规则将一些原来Ignore的规则打开? </li><li><strong>IDEA</strong>Q在Setting->Errors中设定规则,调用Analyzer->Inspece Codeq行校验? </li><li><strong>CheckStyle</strong>Q安?span class="nobr"><a title="Visit page outside Confluence" rel="nofollow">CheckStyle的Eclipse插g<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>Q在Windows->Preferences->CheckStyle导入springside团队预设?tools/codereviewer/springside_check.xml的规? </li><li><strong>PMD</strong>Q安?span class="nobr"><a title="Visit page outside Confluence" rel="nofollow">PMD的Eclipse插g<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>QW(xu)indows->Preferences->PMD清除原来所有规则,导入springside团队预设?tools/codereviewer/springside_pmd.xml的规则? </li><li>FindBugsQ安?span class="nobr"><a title="Visit page outside Confluence" rel="nofollow">FindBugs的Eclipse插g<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>Q在目属?>FindBugs中,取消下列警告MS/EI/EI2/ Q SnVI/SE/WS/RS QST/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 id="wmqeeuq" class="nobr"><a title="Visit page outside Confluence" 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 MicroSystemQ? </li><li><span id="wmqeeuq" class="nobr"><a title="Visit page outside Confluence" 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 {著Q? </li><li>代码工L(fng)规则Q?<span id="wmqeeuq" class="nobr"><a title="Visit page outside Confluence" 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>Q?span class="nobr"><a title="Visit page outside Confluence" 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> Q?span class="nobr"><a title="Visit page outside Confluence" 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.aygfsteel.com/tangyong/aggbug/91609.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/tangyong/" target="_blank">?x)飞的?/a> 2007-01-03 19:22 <a href="http://www.aygfsteel.com/tangyong/articles/91609.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">ذ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">°Ͷ</a>| <a href="http://" target="_blank">˴</a>| <a href="http://" target="_blank">ͨ</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">ͼƬ</a>| <a href="http://" target="_blank">ͨ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">ʯɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϸ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʡ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ӯ</a>| <a href="http://" target="_blank">Ӽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">౱</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͺ</a>| <a href="http://" target="_blank">̽</a>| <a href="http://" target="_blank">ʦ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̫</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">կ</a>| <a href="http://" target="_blank">ߺ</a>| <a href="http://" target="_blank">Ǧɽ</a>| <a href="http://" target="_blank">Dz</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>