代码之家  ›  专栏  ›  技术社区  ›  clartaq

Clojure开发:IDE还是REPL?

  •  18
  • clartaq  · 技术社区  · 16 年前

    当我看Clojure中的开发示例时,它们似乎是沿着将文件加载到REPL的路线,查看它们如何工作,编辑文件,重新加载,重复。任何地方都没有生成类或jar。例如,在斯图尔特·哈洛威(Stuart Halloway)的精彩《编程Clojure》(Programming Clojure)中,我找不到一个“:gen class”的例子。我使用的Clojure IDE(ClojureBox和enclojure NetBeans插件)似乎促进了相同的工作流程。

    这是故意的吗?这些工具是否太不成熟,或者我只是不“明白”?

    谢谢分享你的意见。

    7 回复  |  直到 16 年前
        1
  •  12
  •   Timothy Pratley    16 年前

    我认为这里有两个问题:

    A) 如何部署(以及构建和管理依赖关系)。我所能说的就是看看其他具有类似目标/领域的项目,然后复制它们。

    B) 工作流程:

    我的工作流程是这样的:

    1. 打开一个文件,写一些高级的一厢情愿的声明

    2.5创建函数定义时,将其复制到REPL

    1. 打开另一个文件并编写一些基本测试来检查函数的工作情况

    3.5将这些复制到REPL

    1. 在两个缓冲区之间迭代,根据示例构建测试,并朝最终目标构建程序。这些最终会变成类似的活动,我知道我已经完成了。

    2. 在deftest中包装次文件

    至于IDE和REPL的选择——大多数IDE都有带有REPL的插件,所以我不确定这是一个还是另一个选择——实际上,这只是关于你在哪个文本编辑器中工作,以及你想如何管理你的项目结构。没有任何“这样做”的结构预先制作了AFAIK,因此在这一点上,更容易查看特定项目(如Clojure本身、半影或compojure或主站点上列出的任何库)。

        2
  •  9
  •   tsellon    16 年前

    与标准方法相比,REPL为您提供了几个主要优势。首先,它允许您在程序运行时执行任意代码,这可以使调试多线程系统变得更加简单。第二,也是更重要的一点,它使得在编写代码时测试函数变得容易。您不需要围绕新函数或类构建框架,您可以直接在REPL中使用它,并查看它如何响应各种用例。

        3
  •  6
  •   Rayne    16 年前

    首先,任何编辑器或IDE的开发插件都可以让您在IDE中使用Clojure REPL。甚至可能允许您将文件加载到REPL中进行测试等等。你不需要选择其中一个。

    这是肯定的,Enclojure将走很长的路。然而,大多数人对使用Emacs非常满意,包括我自己。Emacs使用Lisp作为其配置语言,因此它通常是Lisper最自然的选择。

    我应该提到的一件事是,如果您要求Enclojure/does/实际为您构建可执行的.jar文件,那么它就是这样做的。我相信你习惯的更高级的东西将来会被添加进来。事实上,它们还是相当新的。

        4
  •  4
  •   mikera    13 年前

    我同时使用了EclipseIDE和提供REPL的逆时针插件。如果您与Clojure一起开发Java代码(就像我一样),这是一个特别好的组合。

    我的一般做法是:

    • 在编辑器中编写Clojure代码
    • 保持REPL处于打开状态以进行测试(这里Ctrl+Enter是一个有用的快捷方式:它执行在REPL编辑器中选择的任何代码)
    • 使用通用IDE工具进行项目管理、构建、测试、SCM等。

        5
  •  1
  •   Gene De Lisa    14 年前

    我要做的是与Leiningen创建一个项目。如果你只是想休息一会儿,你可以直接打字

    实际上,我使用Emacs、slime和swank clojure。导航到项目后,只需键入 M-x clojure插孔 . 这将启动swank服务器,slime将连接到它,并且在缓冲区中有一个repl。当然,这并不比在shell中运行repl更有价值。您可以在另一个缓冲区中编写代码,并使用键绑定选择sexps或更大的单元,然后在repl中执行它们,以查看它是否有效。slime还为常见任务提供了方便的键绑定。更多信息,请参见github上的swank clojure。

    JohnJ,你可以在Emacs中做同样的事情。事实上,这个短语可能是重言式的。

    (add-hook 'after-save-hook etc.
    

    下面是某人在为git保存hook之后的示例: https://gist.github.com/449668

        6
  •  1
  •   JohnJ    13 年前

    cake 避免每次启动测试时JVM启动时间。你可以跑 cake test 或者在项目中保存任何文件时让Eclipse为您运行它。

    我通过建立一个与 Leiningen 糕饼 ,以及安装 counterclockwise cake 在“位置”下,选择项目的工作目录,然后添加 test 指向可选参数。在“生成选项”选项卡下,选择“自动生成期间”


    更新:大约一年后,我现在使用Midje和lazytest选项在使用Emacs和Eclipse开发时做同样的事情。

        7
  •  0
  •   Community Mohan Dere    9 年前

    “当我看Clojure中的开发示例时,它们似乎是沿着将文件加载到REPL的路线,看看它们是如何工作的,编辑文件,重新加载,重复。任何地方都没有生成类或jar……我想听听那些创建了一些供普通用户使用的非平凡程序的人的工作流程示例(不是其他开发人员)如果可能。”

    Debugging clojure functions which are invoked in java code (eclipse)