좋은 질문! 다른 답변을 보는 데 정말로 관심이 있지만, 여기 내 프로젝트를 구성하는 방법은 다음과 같습니다.
우선 OCalIDE이라는 멋진 Eclipse를 사용합니다. 이클립스 플러그인은 정말 멋진 Eclipse 플러그인입니다.
이맥스 사용자라면 TypeRex을 사용할 수 있습니다 (죽었지 만 OCaml 커뮤니티가 매우 천천히 움직이기 때문에 모든 시간을 가질 수 있습니다). Vim 사용자 인 경우 Omlet이 있지만 항상 좋은 해결책은 없습니다.
이클립스에서 "Managed Ocaml Project"를 선택하면 기본적으로 을 의미합니다. 컴파일하는 것에 대해 걱정하고 싶지 않고이 프로젝트를 결코 공유하지 않을 것입니다..
개인 프로젝트 및 임시 테스트에는 충분합니다. 하지만 "Ocaml Makefile Project"와 "ocamlbuild가있는 Ocaml 프로젝트"중 하나를 선택해야합니다. Makefile을 선택하십시오. 훨씬 더 유연하고 쉬운 솔루션입니다.
Eclipse는 당신에게 a default Makefile for Ocaml projects을 제공 할 것이며, 코멘트에서 잘 설명됩니다. Ocaml 빌드 시스템에 익숙하지 않은 경우 사용하는 것이 좋습니다. 그렇다면 기본 Makefile이 너무 커서 읽고 읽을 수 없기 때문에 자신의 Makefile을 사용하는 것이 좋습니다.
위대한! 이제 우리는 우리가 가장 좋아하는 편집자로 프로젝트를 진행했으며 글로벌 구조를 만들 준비가되었습니다!
/
|- src/ # source files
|- lib/ # dependencies
|- test/ # tests files and test binaries
|- _build/ # binaries and object files, sometimes managed by ocamlbuild
|- AUTHORS # who did that marvelous stuff
|- README # what is it
|- Makefile # *always* provide a Makefile, you never know...
|- _tags # when I use ocamlbuild
|- _oasis # when I use oasis
때때로, 아니 lib 디렉토리가없는, 즉 좋은 : 프로젝트의 루트에서
, 나는 말했다 고전 GNU 타르볼의 규칙을 따릅니다. 하지만 프로젝트에 긍정적 인 영향을주기 때문에 AUTHOR 및 README 파일을 제공해야합니다.
그건 지루한 부분이었습니다. src 디렉토리는 어떻습니까?
- OCaml 모듈러 시스템은 자신의 컨테이너에 물건을 만드는 데 매우 유용합니다. (황금 규칙의 일종) 내가 스스로 내 모듈 일관성을 유지 이
- 내가 펑
- 하지만 아무것도 내부 모듈을 사용하지 않는 : 나는 나의 자신의 경험에 유의하십시오. 그 때문에 내 모듈 이름은 주로 내부 상태 (javaists가 Singleton이라고 부르는)와 관련된 데이터 유형 또는 특정 컨테이너와 관련이 있습니다.
- 종종 두 개 또는 세 개의 명확한 모듈을 만듭니다. 진입 점, 모든 공통 유형을 포함하는 모듈 및 모듈 일반적으로 사용되는 모든 기능을 포함합니다. 순환 종속성을 피할 수 있습니다. 난 정말 내 모듈의 구조를 볼 수 있습니다하지 않는 한
내가
src/
디렉토리에있는 모든 평면 유지 (사람들은 파싱을, 사람들은 AI 컴퓨팅 있으며, 사람들은 ... 네트워크입니다). C 프로젝트와 같은 방식입니다.
OCaml은 간결한 언어이므로 몇 개의 파일이 있어야합니다. C 프로젝트의 경우 디렉토리 구조를 가능한 한 평평하게 유지하십시오. 디렉토리는 모듈 이름 또는 네임 스페이스의 일부가 아니므로 프로그래머가 편리하게 사용할 수 있습니다.
- mli 부분 : 실제로 프로젝트의 목표에 달려 있습니다. 이것은 나의 방법론입니다.
- 일반적인 규칙은 다음과 같습니다. mli가있는 경우 문서화하십시오. Mlis는 컴파일러 과 프로그래머를 돕기 위해 있습니다.
- 너에게 맞습니까? ml 부분을 문서화하고 제약 조건을 입력하거나 너무 큰 -mult-to-browse ml에 대해 mli 만 생성하십시오.
- 프로젝트를 배포 하시겠습니까? mli에 문서화하기 때문에 우리는 선택의 여지가 있다면 우리가 읽을 첫 번째 파일입니다. 인터페이스를 생성 할 파일을 선택하십시오. 일부는 내부 용이며 일반 사용자는 해당 파일을 읽을 수 없습니다.
- OCaml 객체 시스템을 처리 할 때 이들은 항상 지저분해질 수 있으므로 항상 필요합니다.일반적인 경우
은 그래서 게스트 즉시 알고 좋은 및/고급 내부에있는 어떤 파일 알 가능한 한 적은 수의 내 MLI를 유지하는 것이 행복 해요.
또한 내가 앞서가는 것을 막는 유형 제약이 없기 때문에 리팩토링에 도움이됩니다.
테스트 스위트는 우리가 아무 것도 깨지 않았 음을 명심하십시오. (OUnit, 배포판이 패키지되어 있어야합니다.) 매우 간단하고 효율적이며 좋은 프로젝트입니다.
그게 전부입니다. 희망은 누구를 도울 것입니다!