2007年7月27日星期五

给EB学生的培训

作为IBM Extreme Blue(青出于蓝)项目的导师,这是给EB学生的一次培训:8 habits for an effective programmer 的提纲。前4个讲的是积累,后4个讲的是做事的原则。

1.Right Tool for right thing 工欲善其事必先利器

1.1 Eclipse

1.1.1 Europa
Eclipse 3.2.2/3.3是我们的推荐开发平台,但Eclipse下的项目很多各个plugin之间往往相互依赖,安装一个新的plugin往往要更新很多其它的plug-in,很麻烦,也很容易搞错。所以2006年Eclipse推出了Callisto来同时发布10个项目

这样可以省去很多时间。这10个项目中Platform, EMF, GEF, DTP, TPTP, WTP都是我们必需的。到了2007年Eclipse又推出了Europa Simultaneous Release,即Europa。现在如果去http://www.eclipse.org/downloads/你会看到
Eclipse IDE for Java Developers
Eclipse IDE for Java EE Developers
Eclipse IDE for C/C++ Developers
Eclipse for RCP/Plug-in Developers
Eclipse Classic
这几个都是Europa不同的release。比如,建议大家下载 Eclipse IDE for Java EE Developers ,里面包括了Eclipse 3.3, WTP, JST, Mylyn等等。然后可以参考这个Adding Features from the Europa Discovery Site
The Europa update site is http://download.eclipse.org/releases/europa/site.xml.

1.1.2其它Plug-ins
Subclipse, http://subclipse.tigris.org/update_1.2.x
Jadclipse, http://jadclipse.sourceforge.net/wiki/index.php/Main_Page ; Jad 1.58
Maven, http://m2eclipse.codehaus.org/update/

1.2 IBM RAD/RSA
IBM的Rational Application Developer 7.0和Rational Software Architect 7.0也是基于Eclipse平台但功能要强大的多的多,大家可以免费使用,但对内存要求很高,最好在1.5G以上。

1.3 Others

GVim 7.1 http://www.vim.org/
Notepad++ v4.1.2 http://sourceforge.net/projects/notepad-plus/
PSPad 4.5.2 (2240) http://www.pspad.com/en/

Subversion 1.4.4 http://subversion.tigris.org/
Subclipse 1.2.3 http://subclipse.tigris.org/
TortoiseSVN 1.4.4 http://tortoisesvn.tigris.org/

Apache Http Server 2.2.4 http://httpd.apache.org/
Apache Tomcat 5.5.23 http://tomcat.apache.org/
WireShark 0.99.5 http://www.wireshark.org/
WinPcap 4.0.1 http://www.winpcap.org/

Mozilla Firefox 2.0.0.5 http://www.mozilla.com/firefox/
WinMerge 2.6 http://winmerge.org/
Process Viewer 5.2.15.1 http://www.teamcti.com/pview/prcview.htm
PuTTY0.60 http://www.chiark.greenend.org.uk/~sgtatham/putty/licence.html
TightVNC 1.3.9 http://www.tightvnc.com/
FileMon
JMeter

1.4 Your own Tool

2. Search for answer 勤搜善问

通用搜索(General Search Engine):GoogleBaidu。 善于选择关键词,搜索技巧

代码搜索(Source Code Search Engine):Koders , Google Code Search , Krugle

开源项目(Open Source Project):sourceforgefreshmeat

论坛:developerworks ....

手册/书籍:

举例:html转义参考程序。搜:html 转义 java, html escpae java, html encode java

3. Show me the code 溯本求源

源码面前没有秘密,要养成勤于看源代码的习惯,培养善于看源代码的能力。

学习优秀的源代码是提高编程水平的最佳途径。

4. Build for your own kowlege database 日积月累

Manual: 居家必备 http://www.allimant.org/javadoc/ 去下载java doc和tutorial

eBook: 书到用时方很少 www.pdfchm.com, other ftp

Socail Bookmark: 自己的知识宝库。 delicious, google notebook

Blogs: 见多识广的最佳途径。我分享的blog文章:http://www.google.com/reader/shared/05553602726838481724

5. Do not re-invent the wheel 合理借鉴

Apache Jakarta: Commons (HttpClient, DBCP, Codec, Lang.....), ECS, JCS, .....

Apache: Logging, Lucene

Java Open Source Project: http://www.open-open.com

举例:html转义参考程序,完全可以直接调用 Lang 中 StringUtils的escapeHtml()

6. Step by Step 步步为营

  • 切忌忽视单元测试。Junit
  • 每天一个里程碑,每天都有成就感。svn
  • 养成打印log的习惯,Log4J, Apache Logging

7. Do not over engineering 过犹不及

不要一开始就试图设计一个"高性能"、"高可靠性"、"高可维护性"、"高扩展性"……的系统;

不要一开始就遍历所有可能出现的情况,而其中有的情况可能就没有这种需求,或者至少在当前版本没有;

相信优秀的代码是不断重构出来的而不是一次设计出来的。

8. Nice is small 大道致简

  • 痛恨冗余
  • 写所有人都能读懂的程序