Java开发网 |
注册 |
登录 |
帮助 |
搜索 |
排行榜 |
发帖统计
|
您没有登录 |
» Java开发网 » Application Server
打印话题 寄给朋友 订阅主题 |
作者 | 实践 Eclipse 将这些用法和技巧应用到功能众多的世界级 IDE |
simbapu
发贴: 19 积分: 1 |
于 2005-07-18 20:02
作者:Kevin Jones 来自:http://dev2dev.bea.com.cn 在本文中,我将介绍一些高效使用 Eclipse 的技巧。我认为这些技巧在日常工作中非常有用。有些是使用技巧,有些是技术提示,我相信您也会发现它们非常有用。 以前(实际上现在也是)我不喜欢 Eclipse 是因为它缺少内建的 XML 编辑器,其他 IDE 提供了功能强大的编辑器,不仅可以突出语法结构,还有完整的 XML 语句。 Eclipse 实际上也有 XML 编辑器,只是换了个名字,叫 Ant 编辑器。尽管 Ant 编辑器在编辑一般文档不是很完美,但是这已经足够用了。 Ant 在作为一般编辑器时,需要选择 Windows > Preferences ,打开 Preferences 对话框,展开树的 Workbench 部分,然后选择 File Associations (参见图 1 ),点击 File Types 区域的 Add 按钮,然后输入 *.xml 。点击靠近 Associated Editors 区域的 Add 按钮,选择 Ant 编辑器,点 OK 。现在,只要双击某个 XML 文件,都会在 Ant 编辑器中打开它以供编辑。 图 1. 设置 首选参数 通过将带有 XML 扩展的文件与 Preferences 对话框的 Associated Editors 区域中 Ant 编辑器关联起来,可以把 Ant 编辑器设置成一般 XML 编辑器。 模板和样式 在同一个 Preferences 对话框中,打开树的 Java 部分,在 Editor 区域下面,会看见 Templates 区域。它包含了可以在代码中使用的编码模板。举一个使用模板的例子,创建一个新的 Java 类并在编辑器中打开,输入 main 并按 Ctrl-Spacebar 。应该可以看见一个弹出窗口(参见图 2 );选择第一个主程序,就可输入主程序的代码。 图 2. 弹出模板 创建一个新的 Java 类并在编辑器中打开之后,就会看见一个弹出窗口,这里可以输入代码。 然而,如果仔细观察模板,您会发现它不仅仅可以插入静态代码。模板是活的!在刚才创建的主程序里,输入 for 并按 Ctrl-Spacebar ,选择数组的 for 循环。 for 循环将会加入到代码中,光标停留在变量 i 上。如果改变变量名,代码中相应位置都会改变。如果按 Tab 键,将转到数组引用,如果不止一个数组,将会看到一个可循环的数组列表。最后光标会停留在循环体上。 有许多类似的模板,可以通过加入自己的代码对它们进行扩展。举个例子,我最喜欢的模板是 sysout 和 syserr 。但现在我大部分工作在 JDK 5.0 中完成,已经开始使用 System.out.printf ,并想把它当成一个模板用。最简便的方法是编辑一个现有模板。我把 sysout 模板拷贝到 printf ,主程序如下: System.out.printf( "{word_selection}{}\n"); {cursor} 保存模板。在代码中输入 printf ,然后按 Ctrl-Spacebar 就可以在您自己的代码中插入模板。 如果您像我一样喜欢编写代码而不是文档,用 Javadoc 就可轻松完成。 Eclipse 也能如此。简单地把光标移到程序或类定义前,输入 /** 按 Enter ,会出现一个如下的 Javadoc 大纲: /** * * @param proxy */ ListenThread(HttpProxy proxy) { // co 光标到位后就可以开始编辑文件了。 代码样式是编程人员中比较有争议的一个问题。比如,把花括号放在哪?是否对条件语句进行缩进? while 关键字应该放在哪?当然我们知道都是正确的,这里只是讨论样式问题。如果您有自己的样式或个人偏好, Eclipse 会帮助保证所有代码的样式。 选择 Windows > Preferences ,再选择 Java > Code Style > Formatter 。 在右边的面板选择 New ,创建一组新的首选参数,起个名,然后更改首选参数,让其符合自己的要求。最有可能引起争议的问题可能是花括号的位置,但您还可以控制换行、空白和注释等。还可以导入和导出配置文件,这对于团队工作尤为有用。 一旦选择了首选参数,就可以打开 Java 文件,选择 Source > Format (Ctrl-Shift-F) 。还可以一次重新格式化多个文件,在软件包浏览器中选择要重新格式化的文件组,右键单击,然后选择 Source > Format 。 重构 Eclipse 的一个超强功能是支持重构。这种支持需要一整篇文章来深入讨论,由于它太重要了,因此这里值得提一下。 Martin Fowler 在一本相关专著的前言中解释道,“重构是一个改变软件系统的过程,它不改变代码的外部行为,但改进了其内容结构”。重构时必须进行单元测试(参见下一个提示);否则,您如何知道代码的外部行为没有改变呢? Eclipse 提供了几种重构,在此仅举两例以帮助理解其过程。 byte[] decryptKey( byte[] encryptedKeyBytes) throws NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException, InvalidAlgorithmParameter Exception { String alg = "PBEWithMD5AndDES"; PBEParameterSpec spe = createPBEParameterSpec(); KeySpec ks = new PBEKeySpec( passphrase.toCharArray()); SecretKeyFactory skf = SecretKeyFactory. getInstance(alg); SecretKey sk = skf. generateSecret(ks); Cipher cipher = Cipher. getInstance(alg); cipher.init( Cipher.DECRYPT_MODE, sk, spe); return cipher.doFinal( encryptedKeyBytes); } and byte[] encryptKey() throws NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException, InvalidAlgorithmParameter Exception { String alg = "PBEWithMD5AndDES"; PBEParameterSpec spe = createPBEParameterSpec(); KeySpec ks = new PBEKeySpec( passphrase.toCharArray()); SecretKeyFactory skf = SecretKeyFactory. getInstance(alg); SecretKey sk = skf. generateSecret(ks); Cipher encrypt = Cipher. getInstance(alg); encrypt.init( Cipher.ENCRYPT_MODE, sk, spe); return encrypt.doFinal( secret.getEncoded()); } 这些方法使用密钥来加密或解密数据。它们非常相似,实际上有一块代码是完全一样的:就是生成密钥的代码。 有一个叫作 Extract Method 的重构,它把一段代码嵌入在它本身。只需选中代码块,然后选择 Refactor > Extract Method (Alt-Shift-M) 。在 Extract Method 对话框(参见图 3 )中,输入方法的名字,保证参数名称是您想要的。选择 OK 就会得到新方法。 图 3. 抽取 在 Extract Method 对话框中输入抽取方法的名称,并保证参数名称是您想要的。 private SecretKey createKey( String algorithm) throws NoSuchAlgorithmException, InvalidKeySpecException { KeySpec ks = new PBEKeySpec( passphrase.toCharArray()); SecretKeyFactory skf = SecretKeyFactory. getInstance(algorithm); SecretKey sk = skf. generateSecret(ks); return sk; } 现在可以在所有其他地方替换方法代码。前两个程序 encryptKey() 和 decrytptKey() 是属于从同一基类扩展而来的不同类,所以 createKey() 应该是基类的一个方法。输入另一个重构: Pull Up 。可以使用这个重构来将方法移到类级别上。如果用 createKey() 执行,保护级别也会从私有( private )更改为受保护的( protected ),从而允许方法在派生类中被调用。最终代码如下: protected SecretKey createKey( String algorithm) throws NoSuchAlgorithmException, InvalidKeySpecException { KeySpec ks = new PBEKeySpec( passphrase.toCharArray()); SecretKeyFactory skf = SecretKeyFactory. getInstance(algorithm); SecretKey sk = skf. generateSecret(ks); return sk; } 更改后,返回单元测试,确保不会破坏什么。 在 Ant 中使用 JUnit 我提到过,如果要进行重构,必须有单元测试,这样才能确保不会破坏代码。 Eclipse 很好地支持 JUnit 。但我更愿意用 Ant 来构建和测试代码,在 Ant 中使用 JUnit 测试。如果您加载一个 Ant 构建文件到 Eclipse 中,运行 Junit Ant 任务,应该会看到: BUILD FAILED: D:\home\kevinj\Java\Security\ tests.xml:94: Could not create task or type of type: junit. 该信息表明 Ant 没有找到任务或任务所依靠的类。 Ant 试图加载 Junit JAR 文件。当在 IDE 外部使用 Ant 时,应该把 junit.jar 放在 %ANT_HOME%/lib 文件夹。使用 Eclipse 时该任务无法工作,因为它使用自身版本的 Ant 。所以 junit.jar 必须放在 Eclipse 的 Ant 文件夹中,即 %ECLIPSE_HOME%/plugins/org.apache.ant_1.6.2/lib (很显然,不同版本的 Eclipse 会有不同版本的 Ant )。 Eclipse 是一个功能众多的世界级 IDE 。在此我们只是做简单了解。 关于作者 Kevin Jones 是一位开发人员,主要从事 Java 编程的研究和教学,以及研究 HTTP 和 XML 。他生活在英国,在 Developmentor 公司工作,该公司是一家在美国和欧洲都设有办事处的培训机构,主要从事有关 Java 和 Microsoft 平台的技术培训。 Kevin 的电子邮件是 mailto:kevinj@develop.com。 原文出处 http://www.fawcette.com/javapro/2005_03/magazine/columns/pluggedin/ MyBlog: http://lionapu.blogcn.com 华软网源码书籍下载中心,10G源码、书籍教程免费下载! |
话题树型展开 |
人气 | 标题 | 作者 | 字数 | 发贴时间 |
8067 | 实践 Eclipse 将这些用法和技巧应用到功能众多的世界级 IDE | simbapu | 6044 | 2005-07-18 20:02 |
已读帖子 新的帖子 被删除的帖子 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |