诊断Java代码: Repl提供交互式评价 - 编程入门网
诊断Java代码: Repl提供交互式评价时间:2011-02-12 IBM Eric E. Allen通常,在运行 Java 程序时,必须使用 String[] 输入参数将参数传入,从 main() 方法运行程序。但是如果程序仍在调试中,那么,这可能会成为一项繁重的任务。本月,Eric Allen 讨论对程序中的表达式和语句进行交互式评价的优点,并且提供几个帮助您处理这一任务的 Java repl(“read-eval-print-loop”工具,“读取-评价-打印-循环”工具)。他还讨论交互式评价如何帮助构建 GUI 和探索新的 API。 多数程序都包含很多方法,这些方法分布在为数众多的类中。毫无疑问,从程序的 main 入口点测试所有这些方法,即使不是不可能的,也是很困难的。 这就是单元测试之所以有用的原因。许多程序员和软件设计人员(包括我自己)强调单元测试在编写健壮的的软件时是有用的。但是如果您想能够以一种交互性更好的方式访问程序中的各种元素时,则可能要折衷一下。 当确实要这样做时,为每个结果编写、编译并运行新的单元测试就会很快变成一件繁重的事情。我发现,当不能预知给予特定输入后程序将表现出什么行为时(例如:在 AI 程序中可能就会出现这种情况),尤其如此。 那么,该怎么办呢? 不要为小改动着急 为了作一个类比,请考虑用通常情况下进行编译的语言(例如:Java 或 C++)编程和用在更多情况下进行解释的语言(Python 或 Scheme)编程之间的差异。 在编译型语言中,每个编写/测试/调试循环都必须包含编译这一额外的步骤,这可能是一个单调乏味的经历,尤其是对于一些小改动而言。这可能会使我们得出结论说,解释型语言更流畅,因而也更易于修改。(这种灵活性是有代价的:解释型语言通常更少对代码执行静态检查,例如类型检查。) 正如有时候我们可能想对程序作个改动,但不必经历重编译的麻烦一样,我们也可能想检查程序中的一些元素,但不必例行公事般在套件中添加一个新的单元测试。当确实想这样做时,拥有传统上称为“读取-评价-打印-循环”(即 repl)的工具可能会有所帮助。 repl是一个基于文本的工具,它以表达式作为输入,在特定程序的上下文中进行评端,然后显示结果。接着,它等待获得另一个表达式作为输入,然后重复这些操作。这样的工具源于类似 Lisp 的语言,但它们也能在更新的语言(例如:Python)中使用。 repl 在 Java 编程中的好处 这样的工具并非仅仅在这些语言中是有用的。Java 程序员也可以从使用 repl 中获得好处,不只是调试方面,在其它方面也可以。 构建 GUI 当组装一个 GUI 时,有许多组件需要布置和连接。当构造 GUI 时,您肯定会碰到以下这些事情: 组件之间将以不可见的方式相互作用。 在运行 GUI 之前写出其所有代码是相当费时的。 一旦您看到了 GUI 的实际视觉效果,不可避免地,您将会想更改 GUI 的某些方面。 这个问题的一种常见的“解决方案”是使用图形化的 GUI 构建工具,例如那些包含在 JBuilder、Forte 和其它 IDE 中的 GUI 构建工具。我个人不喜欢这种办法 ― 您很难知道这个工具会给您生成什么样的 Java 代码,您也不可能在修改所生成的代码时不冒丧失与 GUI 构建工具的兼容性的风险(事实上,有些 IDE 强行禁止您修改机器生成代码的任何部分)。 此外,许多这类 GUI 构建工具在生成 Java 代码时都使用专用 GUI 库,因而限制了 GUI 的兼容性。 我发现使用 repl 来构建 GUI 要容易得多。我完全可以交互地定义每一个 GUI 组件,然后依次显示它。我能够立刻修正任何不喜欢的东西。然后,我可以与之交互并将这些组件粘贴到程序中。 诊断Java代码: Repl提供交互式评价(2)时间:2011-02-12 IBM Eric E. Allen探索新 API 使用 Java 语言编程最大的 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |