Có hệ thống tiêu chuẩn hoặc thông thường để tổ chức nhiều chương trình Ruby không? Tôi đã bắt tay vào "dự án" lớn đầu tiên của tôi trong Ruby, một chương trình tìm kiếm được tổ chức hợp lý thành nhiều tệp và thư mục. Tôi đã phác thảo bên dưới cấu trúc tiềm năng của mình:Hệ thống để tổ chức các chương trình Ruby đa tệp?
- Tệp chính. Tệp này triển khai lớp tìm kiếm và giao thức tìm kiếm chung.
- Tệp phân tích thuật toán. Tệp này triển khai các hàm giải thích kết quả tìm kiếm.
- Giao thức thư mục
- Chứa một tập tin cho mỗi giao thức để tìm kiếm.
- Feeds mục
- Một phần của mục đích của chương trình là để tìm kiếm tin tức lưu trữ feeds. Các tệp cho tính năng này đi trong thư mục này.
Tuy nhiên, mã hiện đang có một lớp (chúng ta hãy gọi nó Searcher) mà lớp tìm kiếm của mỗi giao thức được thừa hưởng từ (GoogleSearcher < Searcher). Để quản lý điều này, tôi cần phải bao gồm các tập tin chính trong các tập tin giao thức (phải không?) Mà dường như không thể cho cấu trúc lý tưởng của tôi.
Ngoài ví dụ cụ thể của tôi, tôi đã tự hỏi nếu có bất kỳ quy ước nào, chẳng hạn như "nhiều tệp hơn là ít hơn" hoặc "cấu trúc hợp lý các tệp là không cần thiết". Có thông thường để có một tệp các hàm "trợ giúp" (như trong Rails không?) Mức trừu tượng nào được coi là thích hợp?
Cuối cùng, tôi dự định tích hợp điều này vào Rails một ngày nào đó như một thư viện (không phải là một plugin; Tôi cũng muốn nó hoạt động độc lập). Tôi không biết điều này có ảnh hưởng đến tổ chức hay không.
Tôi biết đây là một câu hỏi khá mở, nhưng đó là vì tôi sẽ đánh giá cao bất kỳ lời khuyên nào có liên quan từ xa. Cảm ơn trước.
có một vài công cụ tạo đá quý gọn gàng: newgem, Jeweler, bones. Tôi sử dụng newgem cho một dự án (thực sự KHÔNG được dự định phát hành như một viên ngọc) và nó hoạt động khá tốt – RyanWilcox
Điều này là tốt, và nó chỉ để lại một câu hỏi chưa được trả lời (nhìn lại, câu hỏi này chắc chắn là quá rộng.) một cách để có kế thừa lớp trên nhiều tệp, trong đó lớp chính nằm trong tệp chính và các lớp kế thừa từ nó nằm trong các tệp ngoại vi trong thư mục con? Hay đó là một tổ chức ngược? –
Ruby là khá tha thứ khi nói đến thừa kế. Nếu tôi hiểu câu hỏi của bạn một cách chính xác, nó chắc chắn sẽ có thể thiết lập nó khi bạn mô tả. Nếu không biết bất kỳ chi tiết nào về dự án của bạn, tôi có thể làm điều tương tự khi một "lớp chính" nằm trong thư mục lib/foo/và các lớp kế thừa từ lớp chính nằm trong lib/foo/bar, lib/foo/baz và vân vân. Có một cái nhìn tại đá quý như Nokogiri cho các ví dụ trực tiếp của loại thiết lập. – vonconrad