2011-01-13 27 views
9

Xem xét một lớp thực hiện nhiều giao diện, sẽ có ý nghĩa khi triển khai từng giao diện trong một tệp riêng biệt sử dụng định nghĩa partial class không?Thực hiện các giao diện trong các lớp học một phần

Đây có phải là sự lạm dụng tính năng ngôn ngữ hoặc đó có phải là thành ngữ mà tôi không biết?

+0

Một thay thế đơn giản mà visual studio sử dụng bởi mặc định là khu vực. – CodesInChaos

+0

Tôi không chắc chắn nếu tôi muốn làm điều này cho việc triển khai giao diện, nhưng tôi đã làm điều này trước khi chia nhỏ nhiều lớp lồng nhau riêng tư. –

Trả lời

12

Nếu lớp học của bạn để triển khai nhiều giao diện, đó là một cách hợp lý để quản lý nguồn, vâng. Bạn có thể chỉnh sửa tệp dự án để làm cho một số tệp phụ thuộc vào một tệp lớp "chính", làm cho Solution Explorer dễ làm việc hơn.

Bạn nên tự hỏi liệu bạn không nên có một số lớp nhỏ hơn, mỗi lớp thực hiện một giao diện duy nhất. Đôi khi đó sẽ là một cách tiếp cận tốt hơn, đôi khi không - nhưng nó luôn đáng để đặt câu hỏi.

+0

Có, thực sự, chắc chắn giá trị yêu cầu. –

+1

Đó là một gợi ý thú vị làm thế nào để một tệp nguồn phụ thuộc lẫn nhau? – Motti

+2

@Motti: Bạn phải chỉnh sửa tệp dự án bằng tay. Xem http://stackoverflow.com/q/223249/22656 để biết ví dụ. –

4

Không phải là thành ngữ mà tôi từng nghe, nhưng âm thanh như một cách thanh lịch để phân đoạn mã của bạn.

1

Lợi ích duy nhất là có nhiều triển khai giao diện khác nhau trong các tệp vật lý riêng biệt.

Theo ý kiến ​​của tôi, điều này là quá lớn bởi nhược điểm của việc khai báo lớp học của bạn nằm trong các tệp vật lý riêng biệt.

2

Bạn có thể, vâng, nhưng điều đó sẽ không mang lại cho bạn nhiều lợi thế hơn, ví dụ: một tệp duy nhất có các vùng. Các lớp học một phần có xu hướng rất khốc liệt bởi vì nó không rõ ràng ngay rằng có một phần khác của nó, và một người khác nhìn vào lớp học có thể bỏ lỡ nó. Cá nhân tôi thích có mọi thứ ở một nơi.

3

Tôi nghĩ rằng bạn nên tự hỏi nếu có tệp .cs cho mỗi giao diện được lớp của bạn triển khai sẽ làm cho việc hiểu mã dễ dàng hơn hoặc khó hơn. Làm thế nào bạn sẽ đặt tên cho các tập tin?

Mặc dù tôi có thể đi ra ngoài ở một chi nhánh ở đây Tôi nghĩ tôi sẽ đề nghị bạn sử dụng chỉ thị nhiều thay vì #region thay vì nếu tổ chức mã là mục tiêu của bạn.

1

Pro: có thể dễ dàng xác định phần nào của lớp thực hiện giao diện nào (tốt khi bạn đang sử dụng công cụ không cho phép điều hướng dễ dàng thông qua mã bên trong IDE).

Côn: dễ dàng để mất bối cảnh kể từ bây giờ bạn phải di chuyển qua nhiều file

Tôi nghĩ w/sự tiến bộ trong IDE hiện nay, nó không thực sự quan trọng. Bạn có thể có một tệp duy nhất và cho phép công cụ giúp bạn điều hướng bên trong cấu trúc lớp của bạn một cách nhanh chóng. Nhưng sau đó một lần nữa công cụ có thể giúp một trong hai cách ... vì vậy ...

Một phần vẫn tốt để tách mã được tạo ra so với mã tùy chỉnh.

1

Nó làm về càng nhiều cảm giác như có nhà xây dựng trong một tập tin lớp học phần, tài sản trong một tập tin lớp học phần, vv, vv

ví dụ: Đừng làm điều đó trừ khi bạn có lý do chính đáng.

0

Tôi nghĩ rằng có cách tốt hơn cấu trúc mã của bạn hơn là sử dụng partials trong trường hợp này. Không có tài liệu tham khảo trong Visual Studio mà bạn có thể tham khảo để xem có bao nhiêu phần triển khai có cho một lớp cụ thể vì vậy nó rất dễ dàng để mất theo dõi.

Tùy thuộc vào số lượng giao diện bạn thực sự có ý nghĩa với "nhiều giao diện", bạn có thể sử dụng các khu vực để tách các triển khai. Điều đó sẽ tốt cho đến 10-15 giao diện với tổng cộng, nói rằng, 150 chức năng để thực hiện. Sau đó, mọi thứ sẽ trở nên lộn xộn và bạn sẽ mất tổng quan. Và đó là nơi bạn sẽ được hưởng lợi từ các cơ chế khác như kế thừa, đóng gói hoặc tập hợp, và việc sử dụng các dịch vụ và các lớp trợ giúp.

Nhưng tôi sẽ nghiêm túc xem xét lại kiến ​​trúc mã của bạn nếu bạn đã bao giờ gặp sự cần thiết phải thực hiện 15+ giao diện ....

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