Gần đây tôi đã có một cuộc thảo luận với một người bạn của tôi, cũng là nhà phát triển RoR. Chúng tôi lập luận về cách quản lý các mô hình Rails. Cá nhân tôi muốn để lại trong không gian tên mặc định chỉ các mô hình gốc (ví dụ: User, Article, Bill, vv), và các mô hình phụ thuộc vào một mô-đun (ví dụ: User :: Profile, User :: Activity) với tên của root mô hình chúng được liên kết với.Mô hình không gian trong ứng dụng Rails
Mặt khác, tôi đã thấy nhiều dự án có 100 mô hình trong không gian tên mặc định được gọi là user_profile, user_activity, v.v. Đánh giá bằng phát triển Java (Spring), cộng đồng java có xu hướng tổ chức lớp học theo gói và nhóm chúng theo lô-gic, mà tôi thấy rất hấp dẫn. Vì vậy, câu hỏi đặt ra là: có bất kỳ hạn chế nào trong việc nhóm các mô hình trong các mô-đun (ngoại trừ thêm: class_name trong định nghĩa quan hệ) và có bất kỳ lý do cụ thể nào khiến mọi người thường không làm điều đó không? Không.
Tôi không thể nhớ lần cuối tôi mở trình khám phá cơ sở dữ liệu. Với ruby nó đến tự nhiên để trừu tượng những điều như vậy. Theo như tôi nhớ, Foo :: Bar sẽ tạo ra một bảng "foo_bar". Hạn chế duy nhất là bạn phải chỉ định một: class_name => Foo :: Bar trong các hiệp hội. Tôi tự hỏi làm thế nào một ứng dụng đường ray có nghĩa vụ phải xử lý một ứng dụng phức tạp nếu nó khuyến khích để giữ cho tất cả các mô hình trong một thư mục. Ý tôi là, nếu ứng dụng phát triển quá nhiều, có phải không gian tên là một phần của việc tái cấu trúc cần thiết hay chỉ cần chuyển sang Java?) – FreeCandies
Tôi thường sử dụng tiền tố như một loại không gian tên, do đó bạn tạo những thứ như UserProfile và UserActivity thay vì Hồ sơ hoặc Hoạt động. Điều này dẫn đến một loại nhóm tự nhiên trong danh sách. Thật hiếm khi thấy một ứng dụng với hơn 500 mẫu máy sẽ được hưởng lợi đáng kể từ việc đặt tên không gian tên. Phức tạp phức tạp. Đôi khi tốt hơn là nên trung thực về mức độ phức tạp của ứng dụng của bạn hơn là thử và giả vờ nó thực sự đơn giản bằng cách chôn vùi sự phức tạp và chỉ làm cho việc tìm kiếm mọi thứ trở nên khó khăn hơn. – tadman