﻿<?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-so.java-随笔分类-随想随记</title><link>http://www.blogjava.net/xxllnnn/category/36187.html</link><description>so.java</description><language>zh-cn</language><lastBuildDate>Fri, 24 Jul 2009 03:21:15 GMT</lastBuildDate><pubDate>Fri, 24 Jul 2009 03:21:15 GMT</pubDate><ttl>60</ttl><item><title>maven简介</title><link>http://www.blogjava.net/xxllnnn/archive/2009/07/24/288143.html</link><dc:creator>so.java</dc:creator><author>so.java</author><pubDate>Fri, 24 Jul 2009 01:27:00 GMT</pubDate><guid>http://www.blogjava.net/xxllnnn/archive/2009/07/24/288143.html</guid><wfw:comment>http://www.blogjava.net/xxllnnn/comments/288143.html</wfw:comment><comments>http://www.blogjava.net/xxllnnn/archive/2009/07/24/288143.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xxllnnn/comments/commentRss/288143.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xxllnnn/services/trackbacks/288143.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: MavenMaven简介Maven最初的目的是在Jakarta Turbine项目中使构建处理简单化。几个项目之间使用到的Ant build文件差异很小，各个JAR都存入CVS。因此希望有一个标准的方法构建各个工程，清晰的定义一个工程的组成，一个容易的方法去发布项目信息并且去提供一种在各个项目之间共享JAR包。结果出现了一种功能能用于构建和管理任何基于java的工程。Maven小组希望...&nbsp;&nbsp;<a href='http://www.blogjava.net/xxllnnn/archive/2009/07/24/288143.html'>阅读全文</a><img src ="http://www.blogjava.net/xxllnnn/aggbug/288143.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xxllnnn/" target="_blank">so.java</a> 2009-07-24 09:27 <a href="http://www.blogjava.net/xxllnnn/archive/2009/07/24/288143.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>国际：写出漂亮代码的七种方法(zt)</title><link>http://www.blogjava.net/xxllnnn/archive/2008/12/18/247024.html</link><dc:creator>so.java</dc:creator><author>so.java</author><pubDate>Thu, 18 Dec 2008 01:23:00 GMT</pubDate><guid>http://www.blogjava.net/xxllnnn/archive/2008/12/18/247024.html</guid><wfw:comment>http://www.blogjava.net/xxllnnn/comments/247024.html</wfw:comment><comments>http://www.blogjava.net/xxllnnn/archive/2008/12/18/247024.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xxllnnn/comments/commentRss/247024.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xxllnnn/services/trackbacks/247024.html</trackback:ping><description><![CDATA[<p>转自CSDN http://news.csdn.net/n/20081217/121810.html<font face="Arial"><br />
<br />
首先我想说明我本文阐述的是纯粹从美学的角度来写出<a class="vLink1" id="vad_6" onmouseover="this.style.borderBottom='2px #FF3366 solid';var fxEvent=arguments[0];kwmouseover(this,6,fxEvent);" title="中国站长－我要做属于自己的网站 @Vogate.com" style="font-size: 1em; cursor: hand; color: #ff3366; border-bottom: #ff3366 1px dotted; text-decoration: underline" onmouseout="this.style.borderBottom='1px #FF3366 dotted';kwmouseout(this,6)" href="http://action.vogate.com/c/c.php?r=http%3A//www.csdn.net&amp;aid=4744&amp;sid=6235007045049473&amp;click=1&amp;url=http%3A//www.cnzz.cn&amp;v=0&amp;k=%u4EE3%u7801&amp;s=http%3A//news.csdn.net/n/20081217/121810.html&amp;rn=62835" target="_blank" name="6">代码</a>，而非技术、逻辑等。以下为写出<a class="vLink1" id="vad_2" onmouseover="this.style.borderBottom='2px #FF3366 solid';var fxEvent=arguments[0];kwmouseover(this,2,fxEvent);" title="皮艺术画 @Vogate.com" style="font-size: 1em; cursor: hand; color: #ff3366; border-bottom: #ff3366 1px dotted; text-decoration: underline" onmouseout="this.style.borderBottom='1px #FF3366 dotted';kwmouseout(this,2)" href="http://action.vogate.com/c/c.php?r=http%3A//www.csdn.net&amp;aid=10831&amp;sid=6235007045049473&amp;click=1&amp;url=http%3A//www.zhonhdq.com/web/products/index.asp%3Fcid%3D0101%26pcid%3D01&amp;v=0&amp;k=%u6F02%u4EAE&amp;s=http%3A//news.csdn.net/n/20081217/121810.html&amp;rn=116213" target="_blank" name="2">漂亮</a>代码的七种方法：</font></p>
<p><font face="Arial">1，&nbsp;尽快结束 if语句</font></p>
<p><font face="Arial">例如下面这个JavaScript语句，看起来就很恐怖：</font></p>
<p><font face="Arial">1 function findShape(flags, point, attribute, list) {<br />
2&nbsp;&nbsp;&nbsp; if(!findShapePoints(flags, point, attribute)) {<br />
3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!doFindShapePoints(flags, point, attribute)) {<br />
4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!findInShape(flags, point, attribute)) {<br />
5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!findFromGuide(flags,point) {<br />
6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(list.count() &gt; 0 &amp;&amp; flags == 1) {<br />
7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; doSomething();<br />
8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
12&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />
13&nbsp; }</font></p>
<p><font face="Arial">但如果这么写就好看得多：<br />
</font></p>
1 function findShape(flags, point, attribute, list) {<br />
2&nbsp;&nbsp;&nbsp; if(findShapePoints(flags, point, attribute)) {<br />
3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br />
4&nbsp;&nbsp;&nbsp; }<br />
5 <br />
6&nbsp;&nbsp;&nbsp; if(doFindShapePoints(flags, point, attribute)) {<br />
7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br />
8&nbsp;&nbsp;&nbsp; }<br />
9 <br />
10&nbsp;&nbsp;&nbsp; if(findInShape(flags, point, attribute)) { <br />
11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br />
12&nbsp;&nbsp;&nbsp; }<br />
13 <br />
14&nbsp;&nbsp;&nbsp; if(findFromGuide(flags,point) {<br />
15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br />
16&nbsp;&nbsp;&nbsp; }<br />
17 <br />
18&nbsp;&nbsp;&nbsp; if (!(list.count() &gt; 0 &amp;&amp; flags == 1)) {<br />
19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br />
20&nbsp;&nbsp;&nbsp; }<br />
21 <br />
22&nbsp;&nbsp;&nbsp; doSomething();<br />
23 <br />
24 }
<p><font face="Arial">你可能会很不喜欢第二种的表述方式，但反映出了迅速返回if值的思想，也可以理解为：避免不必要的else陈述。</font></p>
<p><font face="Arial">2，&nbsp;如果只是简单的布尔运算（逻辑运算），不要使用if语句</font></p>
<p><font face="Arial">例如：<br />
1 function isStringEmpty(str){<br />
2&nbsp;&nbsp;&nbsp; if(str === "") { <br />
3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br />
4&nbsp;&nbsp;&nbsp; }<br />
5&nbsp;&nbsp;&nbsp; else {<br />
6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br />
7&nbsp;&nbsp;&nbsp; }<br />
8 }</font></p>
<p><font face="Arial">可以写为：<br />
1 function isStringEmpty(str){<br />
2&nbsp;&nbsp;&nbsp; return (str === "");<br />
3 }</font></p>
<p><font face="Arial">3，&nbsp;使用空白，这是<a class="vLink1" id="vad_4" onmouseover="this.style.borderBottom='2px #FF3366 solid';var fxEvent=arguments[0];kwmouseover(this,4,fxEvent);" title="《游戏人生》火石软件荣誉出品 @Vogate.com" style="font-size: 1em; cursor: hand; color: #ff3366; border-bottom: #ff3366 1px dotted; text-decoration: underline" onmouseout="this.style.borderBottom='1px #FF3366 dotted';kwmouseout(this,4)" href="http://action.vogate.com/c/c.php?r=http%3A//www.csdn.net&amp;aid=10966&amp;sid=6235007045049473&amp;click=1&amp;url=http%3A//i.wanku.com/c.php%3Fid%3D683&amp;v=0&amp;k=%u514D%u8D39&amp;s=http%3A//news.csdn.net/n/20081217/121810.html&amp;rn=219668" target="_blank" name="4">免费</a>的<br />
例如：<br />
1 function getSomeAngle() {<br />
2&nbsp;&nbsp;&nbsp; // Some code here then<br />
3&nbsp;&nbsp;&nbsp; radAngle1 = Math.atan(slope(center, point1));<br />
4&nbsp;&nbsp;&nbsp; radAngle2 = Math.atan(slope(center, point2));<br />
5&nbsp;&nbsp;&nbsp; firstAngle = getStartAngle(radAngle1, point1, center);<br />
6&nbsp;&nbsp;&nbsp; secondAngle = getStartAngle(radAngle2, point2, center);<br />
7&nbsp;&nbsp;&nbsp; radAngle1 = degreesToRadians(firstAngle);<br />
8&nbsp;&nbsp;&nbsp; radAngle2 = degreesToRadians(secondAngle);<br />
9&nbsp;&nbsp;&nbsp; baseRadius = distance(point, center);<br />
10&nbsp;&nbsp;&nbsp; radius = baseRadius + (lines * y);<br />
11&nbsp;&nbsp;&nbsp; p1["x"] = roundValue(radius * Math.cos(radAngle1) + center["x"]);<br />
12&nbsp;&nbsp;&nbsp; p1["y"] = roundValue(radius * Math.sin(radAngle1) + center["y"]);<br />
13&nbsp;&nbsp;&nbsp; pt2["x"] = roundValue(radius * Math.cos(radAngle2) + center["y"]);<br />
14&nbsp;&nbsp;&nbsp; pt2["y"] = roundValue(radius * Math.sin(radAngle2) + center["y");<br />
15&nbsp;&nbsp;&nbsp; // Now some more code<br />
16 }</font></p>
<p><font face="Arial">很多开发者不愿意使用空白，就好像这要收费一样。我在此并非刻意地添加空白，粗鲁地打断代码的连贯性。在实际编写代码的过程中，会很容易地发现在什么地方加入空白，这不但美观而且让读者易懂，如下：<br />
1 function getSomeAngle() {<br />
2&nbsp;&nbsp;&nbsp; // Some code here then<br />
3&nbsp;&nbsp;&nbsp; radAngle1 = Math.atan(slope(center, point1));<br />
4&nbsp;&nbsp;&nbsp; radAngle2 = Math.atan(slope(center, point2));<br />
5 <br />
6&nbsp;&nbsp;&nbsp; firstAngle = getStartAngle(radAngle1, point1, center);<br />
7&nbsp;&nbsp;&nbsp; secondAngle = getStartAngle(radAngle2, point2, center);<br />
8 <br />
9&nbsp;&nbsp;&nbsp; radAngle1 = degreesToRadians(firstAngle);<br />
10&nbsp;&nbsp;&nbsp; radAngle2 = degreesToRadians(secondAngle);<br />
11 <br />
12&nbsp;&nbsp;&nbsp; baseRadius = distance(point, center);<br />
13&nbsp;&nbsp;&nbsp; radius = baseRadius + (lines * y);<br />
14 <br />
15&nbsp;&nbsp;&nbsp; p1["x"] = roundValue(radius * Math.cos(radAngle1) + center["x"]);<br />
16&nbsp;&nbsp;&nbsp; p1["y"] = roundValue(radius * Math.sin(radAngle1) + center["y"]);<br />
17 <br />
18&nbsp;&nbsp;&nbsp; pt2["x"] = roundValue(radius * Math.cos(radAngle2) + center["y"]);<br />
19&nbsp;&nbsp;&nbsp; pt2["y"] = roundValue(radius * Math.sin(radAngle2) + center["y");<br />
20&nbsp;&nbsp;&nbsp; // Now some more code<br />
21 }</font></p>
<p><font face="Arial">4，&nbsp;不要使用无谓的注释<br />
无谓的注释让人费神，这实在很讨厌。不要标出很明显的注释。在以下的例子中，每个人都知道代码表达的是&#8220;students id&#8221;，因而没必要标出。<br />
1 function existsStudent(id, list) {<br />
2&nbsp;&nbsp;&nbsp; for(i = 0; i &lt; list.length; i++) {<br />
3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; student = list[i];<br />
4 <br />
5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Get the student's id<br />
6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; thisId = student.getId();<br />
7 <br />
8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(thisId === id) {<br />
9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br />
10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
11&nbsp;&nbsp;&nbsp; }<br />
12&nbsp;&nbsp;&nbsp; return false;&nbsp;&nbsp; <br />
13 }</font></p>
<p><font face="Arial">5，&nbsp;不要在源文件中留下已经删除的代码，哪怕你标注了<br />
如果你使用了版本<a class="vLink1" id="vad_1" onmouseover="this.style.borderBottom='2px #FF3366 solid';var fxEvent=arguments[0];kwmouseover(this,1,fxEvent);" title="大赢家 @Vogate.com" style="font-size: 1em; cursor: hand; color: #ff3366; border-bottom: #ff3366 1px dotted; text-decoration: underline" onmouseout="this.style.borderBottom='1px #FF3366 dotted';kwmouseout(this,1)" href="http://action.vogate.com/c/c.php?r=http%3A//www.csdn.net&amp;aid=10921&amp;sid=6235007045049473&amp;click=1&amp;url=http%3A//www.winn8168.com/&amp;v=0&amp;k=%u63A7%u5236&amp;s=http%3A//news.csdn.net/n/20081217/121810.html&amp;rn=914407" target="_blank" name="1">控制</a>，那么你就可以轻松地找回前一个版本的代码。如果别人大费周折地读了你的代码,却发现是要删除的代码，这实在太恨人了。</font></p>
<p><font face="Arial">//function thisReallyHandyFunction() {<br />
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; someMagic();<br />
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; someMoreMagic();<br />
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; magicNumber = evenMoreMagic();<br />
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return magicNumber;<br />
//}</font></p>
<p><font face="Arial">6，不要有太长的代码</font></p>
<p><font face="Arial">看太长的代码实在太费劲，尤其是代码本身的功能又很小。如下：</font></p>
<p><font face="Arial">1 public static EnumMap&lt;Category, IntPair&gt; getGroupCategoryDistribution(EnumMap&lt;Category, Integer&gt; sizes, int groups) {<br />
2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EnumMap&lt;Category, IntPair&gt; categoryGroupCounts = new EnumMap&lt;Category,IntPair&gt;(Category.class);<br />
3 <br />
4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(Category cat : Category.values()) {<br />
5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; categoryGroupCounts.put(cat, getCategoryDistribution(sizes.get(cat), groups));<br />
6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></p>
<p><font face="Arial">#</font></p>
<p><font face="Arial">我并不是说非要坚持70个字符以内，但是一个比较理想的长度是控制在120个字符内。如果你把代码发布在互联网上，用户读起来就很困难。<br />
7，不要在一个功能（或者函数内）有太多代码行<br />
我的一个老同事曾经说Visual C++很臭，因为它不允许你在一个函数内拥有超过10，000行代码。我记不清代码行数的上限，不知道他说的是否正确，但我很不赞成他的观点。如果一个函数超过了50行，看起来有多费劲你知道么，还有没完没了的if循环，而且你还的滚动鼠标前后对照这段代码。对我而言，超过35行的代码理解起来就很困难了。我的建议是超过这个数字就把一个函数代码分割成两个。<br />
</font></p>
<img src ="http://www.blogjava.net/xxllnnn/aggbug/247024.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xxllnnn/" target="_blank">so.java</a> 2008-12-18 09:23 <a href="http://www.blogjava.net/xxllnnn/archive/2008/12/18/247024.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>