2011-10-20 22 views
5

Tôi tò mò muốn biết "lớp" của một hệ thống mở rộng phổ biến toàn cục cho ứng dụng thuộc về. Ví dụ, tôi có thể có phần mở rộng cho phép tôi sử dụng Rails giống như "DaysAgo", "MonthsAgo", v.v. của phương pháp mở rộng trên số nguyên. Lớp nào của dự án thực hiện điều này thường thuộc về? Tôi đã suy nghĩ Cơ sở hạ tầng, nhưng điều đó có nghĩa là có liên quan đến cơ sở dữ liệu (ví dụ: kho lưu trữ cơ sở và truy cập dữ liệu). Tôi có một dự án thư viện "cốt lõi", vì vậy có lẽ nó thuộc về đó?Trong lớp nào của dự án làm các phương pháp mở rộng phổ biến thuộc về?

Tôi hiểu rằng bạn muốn nhóm các tiện ích có liên quan đến một nhóm lớp cụ thể, nhưng về cơ bản chúng được sử dụng trên toàn bộ ứng dụng. Trong những ngày trước khi phương pháp mở rộng, họ sẽ ở trong lớp tĩnh Utilities hoặc tương tự, vậy giờ họ nên sống ở đâu?

Trả lời

2

Bạn có thể (tốt hơn) tạo nhiều dự án cơ sở hạ tầng dựa trên phạm vi ví dụ:

Infrastructure.Common (ở đây có cơ sở hạ tầng nói chung - phù hợp nhất cho phương pháp khuyến nông) Infrastructure.Data (truy cập dữ liệu) Infrastrcuture. bla bla bla

2

Tôi sẽ đặt các phương thức này ở lớp thấp nhất có thể, nơi các đối tượng/thực thể đó tồn tại.

hoặc trong các giao diện, hoặc trong các thực thể hoặc trong một lắp ráp lõi, mức thấp nhất thì càng tốt vì vậy tất cả các lớp phía trên có thể sử dụng nó :)

0

xem xét đưa logic đó nằm ngoài phạm vi của toàn bộ ứng dụng trong nó lắp ráp hoặc lắp ráp riêng.

2

Tôi sẽ đặt chúng vào một dự án cơ bản (giống như 'Core') được tham chiếu từ tất cả các dự án khác. Nếu bạn bắt đầu một dự án mới trong một thời gian, bạn có thể dễ dàng sử dụng lại các phương thức mở rộng này.

Tôi sẽ nghĩ về các không gian tên mà bạn sẽ sử dụng cho các nhóm phương pháp tiện ích mở rộng khác nhau của mình. Nếu một số thực sự thuộc về Data, chỉ cần đặt chúng trong một không gian tên Core.Data để mã của bạn trong các dự án khác sẽ không bị lộn xộn với các phương thức mở rộng không có ý nghĩa trong ngữ cảnh đó.

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