2013-05-13 26 views

Trả lời

7

Có sự khác biệt nào giữa việc thực hiện [...] không?

Sự khác biệt duy nhất là trong class Bus::Driver các Bus mô-đun phải được đã được xác định, trong khi tương tự không đại diện cho thứ hai.

Cú pháp nào được ưu tiên hơn?

Đây không phải là một câu hỏi mang tính xây dựng nhưng cá nhân tôi thích thứ hai bởi vì nó khẳng định một cách rõ ràng rằng Bus là một mô-đun, trong khi với người đầu tiên tôi không thể nhìn thấy ở cái nhìn đầu tiên nếu Bus là một mô-đun hoặc một lớp học.

3

này, ngày của riêng mình:

class Bus::Driver 
end 

sẽ dẫn đến một lỗi NameError: uninitialized constant Bus

Vì vậy, tại một số điểm bạn phải khai báo class Bus hoặc module Bus. Nó không phải là hệ thống phân cấp đầy đủ mỗi lần.

Tôi có xu hướng có yêu cầu sớm để thiết lập không gian tên, sau đó sử dụng biểu mẫu đậm đặc hơn trong các tệp còn lại của tôi. Tôi không biết rằng có bất kỳ cách tiếp cận ưa thích - chắc chắn không có gì mà bạn sẽ bị chỉ trích.

1

Cú pháp đầu tiên được ưu tiên khi bạn có các lớp khác nhau của một mô-đun trải rộng trên nhiều tệp trong một dự án; và được cung cấp module luôn được xác định trong PATH. Chẳng hạn như, trong khi thực hiện một gem.

Thứ hai là trung tâm hơn và cần được thực hiện khi chi tiết có liên quan. module không chỉ bao gồm class, bao gồm methodsconstants v.v. cho không gian tên; đó là hữu ích.