2010-09-20 21 views
5

Tôi lo ngại rằng nhiều lớp trong đơn đăng ký của tôi là public. Tôi nghĩ rằng phần lớn trong số họ không cần phải.Cắt giảm số lượng lớp học công khai trong ứng dụng .NET của tôi?

Có bất kỳ công cụ nào có thể phân tích dự án của tôi (hoặc nhị phân) và cho tôi biết các lớp học nào có thể được thực hiện một cách an toàn internal?

+5

Công cụ sẽ biết điều đó như thế nào? Nó sẽ phải là một người đọc tâm, vì nó không biết bạn định sử dụng các lớp như thế nào. –

+0

Bạn có đang viết thư viện không? –

+1

@Robert Harvey: về cơ bản bằng cách theo dõi các lớp nào được sử dụng bên ngoài một hội đồng; bất kỳ bộ phân tích phụ thuộc nào cũng có thể làm điều đó. – Randolpho

Trả lời

5

NDepend sẽ thực hiện các sugestions và hơn thế nữa, thực hiện rất nhiều phân tích mã.

+0

Nhưng nó có một báo cáo (tôi nghĩ FxCop- hoặc ReSharper giống như) mà cụ thể nói: "các lớp này dường như không được sử dụng bên ngoài ứng dụng này, và có lẽ có thể được thực hiện nội bộ "? –

+0

có, theo phần encapuslation của các truy vấn CQL, là cung cấp cho bạn một danh sách các lớp học của bạn có thể được thay đổi 'Các loại có thể được khai báo là riêng tư. ” Đây là một bài cũ nhưng tác giả giải thích những gì anh ta đang cố gắng http://codebetter.com/blogs/patricksmacchia/archive/2007/10/31/optimal-encapsulation.aspx – Iain

4

Có, NDependVisual Studio Dependency Graph generator.

Edit:
Điều đó nói rằng, tôi nghĩ rằng bài xóa của Kim Jing đã có một gợi ý tuyệt vời: mặc dù các công cụ này sẽ cho bạn biết những gì lớp học và không được sử dụng bên ngoài thư viện của bạn, nó thực sự điều gì đó bạn nên làm bằng tay đeo Mũ giải pháp Kiến trúc sư của bạn.

1

NDepend là một nơi tốt để bắt đầu. http://www.ndepend.com/

Tuy nhiên, trong một thế giới lý tưởng có giao diện khách hàng cụ thể public interface Tôi nghĩ là cách để tiến lên vì đây sẽ là "điểm nhúm" của bạn.

nguyên tắc phân biệt Interface -

http://en.wikipedia.org/wiki/Interface_segregation_principle

Tất nhiên bạn luôn có thể tìm hiểu trong một môi trường phi sản xuất bằng cách làm tất cả mọi thứ phi công. ;)

1

Thực tế là bạn đang tìm cách tạo lớp nội bộ cho thấy bạn nên cân nhắc giải pháp vào thư viện chứa các lớp bạn muốn ẩn đi và giao diện chứa các lớp mà bạn sẽ rời khỏi công chúng

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