2010-04-27 57 views
5

Nếu chúng tôi có một hệ thống phân cấp được xác định trong một ứng dụng. Đối với một kiến ​​trúc 3 tầng cũ, làm cách nào để hạn chế các nhà phát triển tiếp theo vi phạm các tiêu chuẩn?Hạn chế vi phạm kiến ​​trúc - asp.net MVP

Đối với ví dụ cũ, trong trường hợp kiến ​​trúc MVP (không phải asp.net MVC), người trình bày phải luôn ràng buộc mô hình và chế độ xem. Điều này giúp viết các chương trình thử nghiệm đơn vị thích hợp. Tuy nhiên, chúng tôi đã có trường hợp mà mọi người trực tiếp nhập khẩu mô hình theo quan điểm và gọi là các chức năng vi phạm các tiêu chuẩn và do đó các trường hợp kiểm tra không thể được viết đúng cách.

Có cách nào chúng ta có thể hạn chế các lớp nào được phép kế thừa từ một nhóm lớp không? Tôi đang xem xét các khả năng khác nhau, bao gồm việc áp dụng một mẫu thiết kế khác nhau, tuy nhiên một cách tiếp cận mới nên đáng để thay đổi mã có liên quan.

Trả lời

2

Tôi e rằng điều này là không thể. Chúng tôi đã cố gắng đạt được điều này với sự trợ giúp của các thuộc tính và chúng tôi đã không thành công. Bạn có thể tham khảo past post on SO của tôi.

Điều tốt nhất bạn có thể làm là tiếp tục kiểm tra các hội đồng của mình với NDepend. NDepend cho bạn thấy sơ đồ phụ thuộc của các hội đồng trong dự án của bạn và bạn có thể ngay lập tức theo dõi các vi phạm và thực hiện hành động một cách phản ứng.

alt text http://www.ndepend.com/Res/NDependBig17.png

+0

@this .__ curious_geek: cảm ơn đã chỉ cho tôi đến NDepend. Tôi sẽ kiểm tra nó. Cool btw nick .. –

+0

Bạn có thể trả lời http://stackoverflow.com/questions/8851933/event-bubbling-and-mvp-asp-net không? – Lijo

0

Bạn đang muốn giải quyết sự cố với phần mềm? Chuẩn bị cho một thế giới đau đớn!

Cách để giải quyết vấn đề là đảm bảo rằng bạn có cách làm việc với những người mà bạn không kết thúc với những loại vấn đề đó .... Lập trình/đánh giá. Cảm ứng của mọi người khi họ lần đầu tiên đến dự án, v.v.

Có nói rằng, bạn có thể viết các công cụ phân tích phần mềm và tìm kiếm các sự cố thường gặp. Nhưng mọi người khá sáng tạo và có thể tìm thấy đủ loại cách kỳ lạ để làm việc.

+0

Ohh Tôi cảm thấy đau đớn! Tôi đã hy vọng chống lại hy vọng nếu có một số loại khung công cụ có thể phân tích/xác nhận một số quy tắc kiến ​​trúc Tôi đoán không có phím tắt để đánh giá eh? –

+0

tốt, bằng cách phân tách các cụm và làm cho Chế độ xem hoàn toàn độc lập với mô hình, do đó Trình bày cung cấp tất cả các đối tượng mà giao diện xem có thể xác minh rằng Chế độ xem không sử dụng Mô hình. Nhưng đó là nỗi đau nhiều hơn giá trị của nó. Chủ yếu là. –

+0

nhưng điều đó có thể sẽ chỉ di chuyển vấn đề của bạn ở một nơi khác .... giới thiệu thêm đào tạo về cách làm việc trong phong cách kiến ​​trúc bạn có –

0

Ngay sau khi mọi thứ được khóa lại theo sự hài lòng của bạn, yêu cầu mới sẽ đến và bạn sẽ phải vượt qua bên cạnh nó.

Thực thi nghiêm ngặt như vậy ở cấp độ lập trình với .NET gần như không thể xem xét một lập trình viên có thể truy cập tất cả các thành viên riêng thông qua phản ánh.

Tự làm và ưu tiên và lên lịch đánh giá mã thông thường, cung cấp giáo dục và thực hiện đào tạo phù hợp. Và, như bạn đã nói, nó sẽ trở nên nhanh chóng hiển nhiên khi bạn không thể viết các bài kiểm tra đơn vị chống lại nó.

1

Đã gần 3 năm kể từ khi tôi đăng câu hỏi này. Tôi phải nói rằng tôi đã cố gắng khám phá điều này bất chấp những câu trả lời tuyệt vời ở đây. Một số bài học tôi đã học được từ trước đến nay -

  1. Mùi mã khác xuất hiện khi nhìn vào người tiêu dùng

    • Số tham số trong hàm tạo là dấu hiệu trực tiếp về số lượng phụ thuộc. Quá nhiều phụ thuộc => Lớp đang làm quá nhiều.
    • Số (công cộng) phương pháp trong một lớp học
    • cài đặt của đơn vị xét nghiệm sẽ hầu như luôn luôn cung cấp cho này đi
  2. Mã hủy theo thời gian, trừ khi có một nỗ lực tập trung để xóa nợ kỹ thuật, và refactoring . Điều này đúng bất kể ngôn ngữ.

  3. Công cụ có thể giúp chỉ trong phạm vi. Nhưng một sự kết hợp của các công cụ và thử nghiệm thường cung cấp đủ gợi ý về mùi khác nhau. Phải mất một chút kinh nghiệm để nắm bắt chúng một cách kịp thời, đặc biệt là để hiểu ý nghĩa và tác động của mỗi mùi.

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