2009-07-24 21 views
19

Ngay bây giờ, mọi thứ tôi làm đều phù hợp với một tệp nguồn duy nhất và một tệp nhỏ đáng ngạc nhiên ở đó. Làm thế nào để bạn quyết định bao nhiêu và những gì để chia thành các tập tin riêng biệt?Tôi làm cách nào để chia mã Lisp thành nhiều tệp nguồn?

Với Java, thật dễ dàng để quyết định nội dung trong một tệp (quyết định đã được thực hiện cho bạn), nhưng trong Lisp tôi thấy tôi viết nhiều hàm nhỏ xây dựng lẫn nhau và khó có thể quyết định điều gì, nếu bất cứ điều gì nên được chia ra. Khi tôi giải quyết các dự án lớn hơn trong Lisp, nó sẽ là tốt đẹp không phải để phát minh lại bánh xe, nhưng tôi không thể tìm thấy rất nhiều thông tin cụ thể trên web về việc này.

Bạn có thể chia sẻ một số chiến lược để xử lý các dự án lớn hơn trong Lisp hay chỉ cho tôi một số tài nguyên xử lý vấn đề này không?

Trả lời

13

Khi bạn bắt đầu viết chương trình Lisp thì có thể hữu ích khi bắt đầu bằng một tệp duy nhất. Khi mã quá lớn (bất kỳ thứ gì), bạn có thể chia nhỏ mã. Khi bạn đang tiếp cận một cái gì đó mà cần tổ chức, sau đó bạn nên đầu tư một số công việc vào nó.

Một vài gợi ý:

  • Có một vài công cụ để quản lý tập tin phụ thuộc nguồn cung cấp và hành động như biên dịch, tải, biên dịch và tải và những người khác. ASDF là một, nhưng cũng có những người khác.

  • Bạn cần một tệp để mô tả các phụ thuộc phụ thuộc. Đặt tên cho nó để nó có thể được nhận ra.

  • Bạn có thể cần tệp để xác định một hoặc nhiều gói .

  • Bạn có thể cần đặt chức năng cụ thể triển khai trong các tệp của riêng chúng.

  • di chuyển lớn hơn lượng dữ liệu cấu hình các tập tin riêng của họ

  • tiện ích chung phải ở trong một tập tin

  • macro cần được xác định trước khi sử dụng. Các tệp khác phụ thuộc vào tệp này và sẽ được biên dịch lại tự động nếu định nghĩa macro được thay đổi.

  • chức năng nhóm với nhau thành tệp nếu được kết nối hợp lý. Trong chương trình vẽ: tất cả các chức năng vẽ, tất cả lệnh giao diện người dùng, lưu dữ liệu vào tệp, in, ...

  • không quan tâm quá nhiều về kích thước tệp. Tệp nguồn Lisp có thể lớn. Đôi khi 100k.

  • di chuyển xung quanh trong các tệp được hỗ trợ bởi môi trường phát triển. M-.trên một biểu tượng tìm thấy nguồn của nó.

  • đảm bảo rằng bạn có thể tải lại tệp mà không cần khởi động lại toàn bộ Lisp.

  • Lisp thường cung cấp LOAD và COMPILE-FILE làm hàm. Bạn có thể sử dụng các chức năng này trong các tệp của riêng bạn.

+0

Cảm ơn - đây là danh sách hữu ích – Galghamon

4

Nếu bạn đang sử dụng Common Lisp, ASDF là một cách phổ biến để chỉ định hệ thống. Nó xử lý phụ thuộc thứ tự tải giữa các tệp nguồn của bạn (và nhiều hơn thế nữa).

+0

Tôi hơi bị sốc - Tôi biết tôi đã xem và lướt qua trang đó trong liên kết của bạn trước đây, nhưng không biết nó đang nói gì vào thời điểm đó. Nó có ý nghĩa hơn nhiều trong ngữ cảnh - cảm ơn! – Galghamon

+1

Nó có thể giúp học cách các thư viện CL nhỏ thiết lập các tệp .asd của chúng. Đây là một chút đơn giản mà tôi đã viết: http://common-lisp.net/project/cl-applescript/ –

+0

Cảm ơn, nhìn thấy một ví dụ về một gói nhỏ như thế này thực sự hữu ích! – Galghamon

Các vấn đề liên quan