2009-07-24 4 views
19

바로 지금, 내가하는 모든 일은 단일 소스 파일에 맞도록 관리하고, 놀라 울 정도로 작은 파일을 관리합니다. 얼마나 많은 파일과 별도의 파일로 분할 할 것인가를 어떻게 결정합니까?Lisp 코드를 여러 소스 파일로 분할하는 방법은 무엇입니까?

Java에서는 하나의 파일에 무엇이 들어 있는지 (이미 결정됨) 결정하기 쉽지만, Lisp에서는 서로 빌드하는 많은 작은 함수를 작성하고 무엇을 결정할 지 알 수 있습니다. 무엇이든 나눠 져야합니다. Lisp에서 더 큰 프로젝트를 수행 할 때 바퀴를 재발 명할 필요가 없다면 좋겠지 만, 이것에 관해 웹에서 많은 구체적인 정보를 찾을 수는 없습니다.

Lisp의 더 큰 프로젝트를 처리하기위한 몇 가지 전략을 공유 할 수 있습니까? 아니면이를 처리 할 수있는 리소스가 있습니까?

답변

13

Lisp 프로그램을 작성하기 시작하면 하나의 파일로 시작하는 것이 유용 할 수 있습니다. 코드가 너무 커지면 (그게 뭐든간에) 코드를 분리 할 수 ​​있습니다. 당신이 조직이 필요한 무언가에 접근하고 있다면, 당신은 그것에 일을해야합니다.

몇 가지 힌트 :

  • 소스 파일 종속성을 관리하고 컴파일,로드, 컴파일 및로드 등과 같은 조치를 제공하기 위해 몇 가지 도구가 있습니다. ASDF은 하나이지만 다른 것도 있습니다.

  • 종속성을 설명하는 데 하나의 파일이 필요합니다.. 인식 할 수 있도록 이름을 지어주십시오.

  • 하나 이상의 패키지을 정의하는 파일이 필요할 수 있습니다.

  • 당신은 자신의 파일에을 구현 고유의 기능을 넣어해야 할 수도 있습니다. 자신의 파일

  • 일반 유틸리티구성 데이터

  • 이동 더 많은 양이

  • 매크로가 이전에 사용 정의해야 다른 파일에 있어야합니다. 다른 파일은이 파일에 의존하므로 매크로 정의가 변경되면 자동으로 다시 컴파일해야합니다. 논리적으로 연결되어있는 경우 파일에 그룹 기능을 함께 포함합니다. 그리기 프로그램에서 : 모든 그리기 기능, 모든 사용자 인터페이스 명령, 파일에 데이터 저장, 인쇄, ...

  • 파일 크기에 대해 신경 쓰지 않아도됩니다. Lisp 소스 파일은 커질 수 있습니다. 때때로 100k.

  • 파일 내에서 이동하는 것은 개발 환경에서 지원됩니다. 엠-.상징에 그것의 근원을 찾아 낸다.

  • 전체 Lisp을 다시 시작할 필요없이 파일을 다시로드 할 수 있는지 확인하십시오.

  • Common Lisp는 LOAD 및 COMPILE-FILE을 함수로 제공합니다. 이러한 기능을 자신의 파일에서 사용할 수 있습니다.

+0

감사합니다. 이것은 유용한 목록입니다. – Galghamon

4

Common Lisp을 사용하는 경우 ASDF은 널리 사용되는 시스템 지정 방법입니다. 소스 파일 간의로드 순서 종속성을 처리합니다 (그리고 훨씬 더 많이).

+0

나는 다소 충격이야 - 내가 본 적이 알고 전에 링크에서 해당 페이지를 미끄러 져하지만 시간에 대해 말하고 있었는지 몰랐다. 상황에 따라 훨씬 더 의미가 있습니다 - 감사합니다! – Galghamon

+1

작은 CL 라이브러리가 .asd 파일을 설정하는 방법을 연구하는 데 도움이 될 수 있습니다. 여기에 제가 작성한 간단한 작은 코드가 있습니다 : http://common-lisp.net/project/cl-applescript/ –

+0

감사합니다.이 작은 패키지의 예가 정말 도움이되었습니다! – Galghamon

관련 문제