第一章 概述
浏览器的地址补全
IE: 使用快捷键Ctrl+Enter,浏览器中的地址会分别再前后加上"www."和".com"。
Firefox: Windows版的Firefox浏览器,它的快捷键跟在IE中一样。而在Macintosh上,快捷键是Apple+Enter。Firefox还有一个快捷键Alt+Enter,它会给地址加上".org"后缀,这个快捷键再所有支持Firefox的平台上都一样。
Firefox还有其它一些似乎很少有人用到,但却很方便的快捷键。比如再Windows下使用快捷键Ctrl+<Num>或者再OS X 下使用快捷键:Apple+<Num>,就可以直接跳到某个标签。
第二章 加速法则
加载器(Launcher)是一类应用程序,允许你输入应用程序(或文档)名称的第一部分来加载它。通常,这是一种更高效地加载应用程序的方式。其中一些值得一试:
Launchy (http://www.launchy.net)
Colibri (http://colibri.leetspeak.org)
Enso (http://www.humanized.com)
操作系统加速器
Windows资源管理器的地址栏也提供Tab文件名补全,就像命令提示符一样。切换到地址栏的快捷键是Alt+D。在那里,你可以输入一个目录的部分名称,敲下Tab键,资源管理器就会为你补全。
剪贴板
成批复制粘贴要比反复多次复制粘贴快。推荐工具Windows下一个不错的开源替代产品CLCL(www.nakka.com/soft/clcl/index_eng.html)。
记住历史
忘记历史就意味着你得再输入一遍。所有的shell都有一种历史纪录机制,这是相比图形环境的一个很大优势。
在Windows中,键入先前命令的前一部分然后按F8。Shell就会对匹配你刚才输入的前一部分内容的历史命令执行一次反向搜索。你可以不断地按下F8来继续查看匹配的命令列表。如果你想看命令的历史纪录,键入F7。
在基于UNIX的系统上,在~/.profile文件中添加如下命令为你的*nix环境设置VI模式:
set –o vi
当你有了VI模式设定,你可以按下Escape(这会将你置于命令模式下),然后按“/”将自己置于搜索模式下。键入搜索文本,然后按Enter。第一个匹配项将是匹配该搜索字符的最新一次执行的命令。如果那不是你想要的,按下“/”紧接着按Enter来搜索下一个匹配项。同样在bash中,如果你最近执行了一个命令,你可以按入热键“!”连同该命令的首字母来重新运行。如果你想看看自己的命令行历史纪录,执行history命令。你可以使用感叹号(!)+你想调用命令的历史标号来执行该历史记录中的命令。如果你有一些想重新执行的复杂命令,这是非常有用的。
去那儿再回来
pushd popd
触手可及的命令提示符
Command Prompt Explorer Bar,它允许你用快捷键Ctrl+M打开一个命令提示符窗口。
http://www.codeproject.com/KB/cs/commandbar.aspx
记住IDE的快捷键
Eclipse快捷键精选
描述 | Eclipse |
跳转到某个类 | Ctrl+Shift+T |
查找资源 | Ctrl+Shift+R |
符号列表 | Ctrl+O |
增量搜索 | Ctrl+J |
最近打开或编辑的文件 | Ctrl+E |
引入变量 | Alt+Shift+L |
逐级选择 | Alt+Shift+Up |
利用工具帮助记住快捷键 www.mousefeed.com
键盘宏工具
不要总是重复输入相同的命令。推荐Windows中最流行的键盘宏工具AutoHotKey(http://www.autohotkey.com,它是开源的)。
第三章 专注法则
排除干扰
隔离策略,关掉不需要的提示,包括windows的气球式提示。工具TweakUI PowerToys (google一下)
搜索优于导航
草堆越大,从中找到一根针就越难。
不要文件树,要搜索。
推荐工具:Google Desktop Search (http://desktop.google.com) 以及插件Larry’s Any Text File Indexer (http://desktop.google.com/plugins/i/indexitall.html)
找到难找的目标
在诉诸高级搜索之前,先尝试简单的搜索。
find . –regex “.*DB/.java”
find . –name “*.java” –exec grep –n –H “new .*DB.*” {} /;
find –name “*.java” –not –regex “.*DB/.java” –exec grep –H –n “new .*DB” {} /;
pushd `which java`/..
使用有根试图
explorer /e,/root,c:/work/cit
使用基于项目的快捷方式
使用多显示器
用虚拟桌面拆分工作空间。Windows PowerToy里有一个叫做Virtual Desktop Manager的工具(http://download.microsoft.com/download/whistler/Install/2/WXP/EN-US/DeskmanPowertoySetup.exe)。你可以使用它来管理最多4个虚拟桌面。
第四章 自动化法则
用Selenium浏览网页
Selenium有一个叫做Selenium IDE的派生项目,那是一个Firefox浏览器插件,能将用户与网站的交互记录为Selenium脚本,然后可以用Selenium的TestRunner或者 Selenium IDE运行这些脚本。这个工具在用了创建测试时非常有用,而如果你需要将你与网站的交互自动化,那它更是一个无价之宝。
不要重新发明轮子
Java项目,Buildix(http://buildix.thoughtworks.com)能够大大简化准备工作。
- Subversion,流行的开源版本控制工具
- CruiseControl,开源的持续集成服务器
- Trac,开源的问题跟踪和wiki工具
- Mingle,ThoughtWorks推出的敏捷项目管理工具
第五章 规范性法则
Andrew Hunt和David Thomas在启蒙书籍《The Pragmatic Programmer》中指定了这条法则:“不要重复你自己 (Don’t Repeat yourself, DRY)”。
白板+数码相机强过任何CASE工具。
为了让代码本身能说话,你应该找个工具从代码中生成框图。一个很好的例子是yDoc,这是一个商业的画图工具,能够从代码生成UML图,图中还有超链接直接关联到源代码。
数据库结构就像类图一样,是产生不必要重复的危险地带。SchemaSpy是一个开源工具,就像yDoc对代码做的那样,它会产生数据库实体/关系图。它会连接到数据库,并产生表信息(包括元数据)。http://schemaspy.sourceforge.net
第五章 静态分析
字节码分析
推荐工具findbugs (http://findbugs.sourceforge.net/downloads.html)
第九章 YAGNI
YAGNI是“You Ain’t Gonna Need it”(你不会需要它)的缩写,也是敏捷开发对预想开发的战斗宣言。预想开发(speculative development)的例子俯拾皆是,程序员们对自己说:“我肯定以后会需要这项额外的功能,所以现在就提前把它实现了吧。”这是滑向深渊的第一步。更好的方式是:只开发当下需要的东西。
如无必要,勿增复杂度。
第十四章 多语言编程
很有必要学习Groovy,因为它比Java简单,而且同样生成Java字节码。还有Jaskell(运行在Java平台上的Haskell版本,换句话说,它可以把Haskell代码变成Java字节码。)
附录 构建块
Cygwin (http://www.cygwin.com) 这份软件不只是一个安装程序,而是一套完整的软件包管理系统。在安装Cygwin后,你仍需要保存这个安装包,因为将来需要用它来安装、更新以及卸载软件包。
找到所有以Helper结尾的Java文件,并查看文件内容,找到那些继承别的类的类文件:
find . –name *Helper.java –exec grep –l “extends .*Helper” {} /;
find . –name *Helper.java | xargs grep –l “extends .*Helper”
ls –ld [A-Z]* | xargs –J % cp –rp % destdir
grep –l “extends .*Helper” `find . –name *Helper.java`
grep –l “extends .*Helper” `find . –name *Helper.java` | wc -l
Reference Links: