문제

나는 Clojure를 잠시 동안 사용해 왔으며 장난감보다 더 크고 복잡한 프로젝트를 만들고 싶습니다. 나는 지난 몇 년 동안 Java를 사용해 왔으며 IDE가 나에게하는 일에 익숙해졌습니다. 많은 수업을 컴파일하고, 항아리로 패키지하고, 사용자가 시작할 수있는 배치 파일을 만듭니다.

Clojure의 개발 예를 살펴보면로드 파일의 줄을 따라 REPL에있는 것 같습니다. 작동 방식을보고 파일 편집, Reload, Reter. 어디서나 수업이나 항아리가 생성됩니다. Stuart Halloway의 훌륭한 "프로그래밍 Clojure"에서는 ": gen-class"의 단일 예를 찾을 수 없었습니다. 내가 사용한 Clojure Ides (Clojurebox 및 Enclojure NetBeans 플러그인)는 동일한 작업 흐름을 홍보하는 것으로 보입니다.

이것은 의도적입니까? 도구가 너무 미숙합니까, 아니면 내가 "얻지 못하는"적이 없습니까?

가능한 경우 일반 사용자 (다른 개발자가 아님)가 사용할 수없는 몇 가지 사소한 프로그램을 만든 사람들의 작업 흐름 예제를 듣고 싶습니다.

의견을 공유해 주셔서 감사합니다.

도움이 되었습니까?

해결책

여기에는 실제로 두 가지 질문이 있다고 생각합니다.

a) 배포하는 방법 (및 종속성을 빌드 및 관리하는 방법). 내가 말할 수있는 것은 비슷한 목표/도메인을 가진 다른 프로젝트를보고 복사하는 것입니다.

b) 워크 플로 :

내 작업 흐름은 다음과 같습니다.

  1. 파일을 열고 높은 수준의 희망적인 사고 선언을 작성하십시오.

  2. 그것을 지원하기 위해 몇 가지 기능을 작성하십시오

2.5 기능 정의를 내가 만들 때 대체에 복사하십시오.

  1. 다른 파일을 열고 기능 작동을 확인하기위한 몇 가지 기본 테스트를 작성하십시오.

3.5 이들을 대답에 복사하십시오

  1. 두 버퍼 사이를 반복하여 테스트를 예제까지 구축하고 최종 목표를 향한 프로그램을 반복하십시오. 이것들은 결국 비슷한 활동이되고 나는 내가 끝났다는 것을 알고 있습니다.

  2. 2 차 파일을 디스 테스트로 랩핑하십시오

이제 한 달 안에 돌아 오면 테스트를 실행하고 행복 할 수 있습니다! REPL 버퍼를 저장하면 약간의 노력을 기울일 수 있습니다. 그것은 현재 나에게 효과가있는 것이며, 더 나은 접근 방식으로 교육을 받게되어 기쁩니다.

IDE 대 REPL의 선택에 관해서는 대부분의 IDE는 REPLS가있는 플러그인을 가지고 있으므로 하나 또는 다른 선택이 확실하지 않습니다. . 사전 제작 된 Afaik 구조는 '이런 식으로 수행'구조가 없으므로이 시점에서 특정 프로젝트 (Clojure 자체 또는 Penumbra 또는 Compojure 또는 기본 사이트에 나열된 라이브러리를보기가 더 쉽습니다.

다른 팁

Repl Development Approach는 대부분의 LISP 가족 (및 기타 기능 언어) IDE에 의해 장려되었습니다. 이 REPL 중 일부에는 Java IDE와 관련된 자동 완성 기능이 있습니다.

REPL은 표준 접근 방식에 비해 몇 가지 주요 이점을 제공합니다. 첫 번째는 프로그램 런타임 중에 임의 코드를 실행할 수 있다는 것입니다. 이로 인해 멀티 스레드 시스템을 훨씬 간단하게 디버깅 할 수 있습니다. 둘째, 더 중요한 것은 코딩하는 동안 기능을 쉽게 테스트 할 수 있습니다. 새로운 기능이나 클래스를 중심으로 프레임 워크를 구축 할 필요가 없으며 Repl에서 직접 플레이 할 수 있으며 다양한 사용 사례에 어떻게 응답하는지 확인할 수 있습니다.

우선 편집자 또는 IDE를위한 거의 모든 괜찮은 개발 플러그인은 IDE 내에서 Clojure Repl을 사용할 수있는 방법을 제공합니다. 아마도 테스트 등을 위해 파일을 Repl에로드 할 수있을 것입니다. 하나 또는 다른 것을 선택할 필요가 없습니다.

Enclojure는 먼 길을 가고 있습니다. 그러나 대부분의 사람들은 나 자신을 포함하여 EMAC를 사용하는 것에 완벽하게 만족합니다. EMACS는 LISP를 구성 언어로 사용하므로 일반적으로 Lisper에게 가장 자연스러운 선택입니다.

REPL이있는 언어의 경우 REPL을 개발 프로세스의 주요 부분으로 사용하는 것이 표준입니다. 파일을 편집하고, 대체에로드하고, 작업을 수행하여 헹구고 반복하는지 확인하십시오. 이것은 Clojure와 Haskell, CL 등과 같은 대체가있는 언어의 주요 장점 중 하나입니다.

항아리를 짓고 Clojure 코드와 물건을 컴파일하는 것은 간단합니다. 원하지 않는 경우 대부분 Clojure 코드를 컴파일하지도 않습니다. 그렇게 할 때, 당신은 an-class로 그것을 컴파일하여 클래스 파일에 컴파일하여 항아리에 넣을 수 있습니다. 인터 웹 사이에 많은 예제와 튜토리얼이 퍼져 있습니다. 가장 쉽고 효율적인 방법은 개미와 같은 것을 사용하고 Clojure 코드를 컴파일하고 .jar를 생성하는 빌드 스크립트를 작성하는 것입니다. 내가 처음으로했을 때, 나는 그것이 어려울 것이라고 생각했지만 실제로는 정말 간단했습니다. 방금 Clojure와 Clojure-Contrib Ant 빌드 파일을보고 필요한 모든 것에 대해 Ant 도움말 페이지를 참조했습니다.

내가 언급 해야하는 한 가지는 enclojure /가 실행 파일을 작성 / 실제로 빌드 한 사실입니다. 앞으로 더 많은 고급 것들이 추가 될 것이라고 확신합니다. 그들은 실제로 여전히 아주 새롭습니다.

나는 Eclipse IDE 및 Counterclockwise 플러그인을 모두 사용하여 REPL을 제공합니다. Clojure와 함께 Java 코드를 개발하는 경우 특히 좋은 조합입니다.

내 일반적인 접근 방식은 다음과 같습니다.

  • 편집기에 clojure 코드를 작성하십시오
  • 물건을 테스트하기 위해 대체를 열어 두십시오 (Ctrl+Enter는 유용한 단축키입니다. 대체의 편집기에서 선택한 코드를 실행합니다)
  • 프로젝트 관리, 빌딩, 테스트, SCM 등을위한 일반적인 IDE 도구를 사용하십시오.

때때로, 나는 또한 REPL에서도 순전히 일합니다. 이것은 일반적으로 물건을 신속하게 테스트하는 데 더 좋습니다. 특히 테스트 코드가 마음에 들면 대체품에서 테스트 스위트에 복사/붙여 넣기 만하면됩니다.

내가하는 일은 Leiningen과 함께 프로젝트를 만드는 것입니다. 잠시 동안 멀어지고 싶다면 입력 할 수 있습니다. 레인 대답 그리고 당신의 프로젝트 클래스 경로는 그 대체를 위해 설정됩니다.

실제로, 나는 Emacs, Slime 및 Swank Clojure를 사용합니다. 프로젝트를 탐색 한 후 간단히 입력합니다 MX Clojure-Jack-In. 이것은 Swank 서버를 시작하고 Slime은 그것에 연결되며 버퍼에 대체가 있습니다. 물론 그것은 단지 쉘에서 대체를 달리는 것보다 더 가치가 없습니다. 당신이 얻는 것은 다른 버퍼에 코드를 작성하는 능력과 키 바인딩을 선택하여 SELLP 또는 더 큰 장치를 사용하여 대체에서 실행하여 작동하는지 확인합니다. 또한 Slime은 일반적인 작업을위한 편리한 키 바인딩을 제공합니다. 자세한 내용은 Github의 Swank-Clojure를 참조하십시오.

Johnj, 당신은 Emacs에서도 같은 일을 할 수 있습니다. 실제로 그 문구는 아마도 대장 일 것입니다.

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

다음은 Git에 대한 누군가의 예제입니다. https://gist.github.com/449668

Eclipse를 사용하면 프로젝트에서 파일을 저장할 때마다 단위 테스트 (또는 모든 프로그램)가 실행될 수 있습니다. 전체 프로세스는 1 초도 채 걸리지 않습니다. 테스트 중심의 개발에 적합하며 대부분의 상황에서 REP로 컷 앤 페이스트가 필요하지 않습니다. 또한 테스트를 유지합니다! :-)

당신은 사용하고 싶을 것입니다 케이크 테스트를 시작할 때마다 JVM 시작 시간을 피하려면 당신은 달릴 수 있습니다 cake test 명령 줄에서 또는 프로젝트에 파일을 저장할 때 Eclipse를 실행하도록하십시오.

프로젝트를 설정 하여이 작업을 수행했습니다. Leiningen, 설치 케이크, 그리고 설치 시계 반대 방향 일식 플러그인. 저장할 때마다 테스트를 실행하려는 Eclipse를 설정하려면 Project-> Properties-> Builders를 선택하고, 새롭고, 프로그램을 클릭하고, '테스트 실행'과 같은 것을 호출하고 경로를 추가하십시오. cake 위치에서 프로젝트의 작업 디렉토리를 선택하고 추가하십시오. test 선택적 인수에. '빌드 옵션'탭에서 '자동 빌드 중에'를 선택하십시오.

나는 Jeff Younker의 저서 인 "Agile Python Development의 기초"에서 이것에 대한 일반적인 아이디어를 얻었습니다. 20 년 동안 EMACS 남자 였지만이 트릭은 최근에 내 워크 플로 앞에 일식을 넣었습니다.


업데이트 : 대략 1 년 후, 이제 EMAC와 Eclipse와 함께 개발하면서 동일한 작업을 수행하기 위해 LazyTest 옵션을 사용하여 Midje를 사용합니다.

"Clojure에서 개발의 예를 살펴보면로드 파일의 줄을 따라 REPL에있는 것처럼 보이며, 작동 방식을보고 파일 편집, 다시로드, 반복합니다. . 가능하면 일반 사용자 (다른 개발자가 아님)가 사용할 수없는 몇 가지 사소한 프로그램을 만든 사람들의 작업 흐름 예제를 듣고 싶습니다. "

예제 Java Code (Eclipse)로 호출되는 Clojure 기능 디버깅 사소한 일이지만 Eclipse에서 Java 내에서 Clojure/Scala 기능을 호출 할 수 있도록 프로젝트를 연결할 수있는 방법을 설명하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top