作为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个项目:
- Business Intelligence and Reporting Tools (BIRT) Project
- C/C++ IDE (CDT)
- Data Tools Platform (DTP)
- Eclipse Modeling Framework (EMF)
- Graphical Editing Framework (GEF)
- Graphical Modeling Framework (GMF)
- Eclipse Project (Platform)
- Eclipse Test and Performance Tools Platform Project (TPTP)
- Eclipse Web Tools Platform Project (WTP)
- Visual Editor (VE)
这样可以省去很多时间。这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):Google,Baidu。 善于选择关键词,搜索技巧
代码搜索(Source Code Search Engine):Koders , Google Code Search , Krugle
开源项目(Open Source Project):sourceforge,freshmeat
论坛:developerworks ....
手册/书籍:
举例:html转义参考程序。搜:html 转义 java, html escpae java, html encode java
3. Show me the code 溯本求源
源码面前没有秘密,要养成勤于看源代码的习惯,培养善于看源代码的能力。
学习优秀的源代码是提高编程水平的最佳途径。
- J2SE source code: attach source code for Java library
- Lucene
- HtmlParser
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:
5. Do not re-invent the wheel 合理借鉴
Apache Jakarta: Commons (HttpClient, DBCP, Codec, Lang.....), ECS, JCS, .....
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 大道致简
- 痛恨冗余
- 写所有人都能读懂的程序