2010-09-20 11 views
5

Me preocupa que muchas de las clases de mi aplicación sean public. Me imagino que la mayoría de ellos no necesita ser.¿Disminuir el número de clases públicas en mi aplicación .NET?

¿Hay alguna herramienta que pueda analizar mi proyecto (o el binario) y decirme qué clases se pueden hacer con seguridad internal?

+5

¿Cómo lo sabría la herramienta? Tendría que ser un lector de ideas, ya que no sabe cómo piensa usar las clases. –

+0

¿Estás escribiendo una biblioteca? –

+1

@Robert Harvey: básicamente al rastrear qué clases se usan fuera de un ensamblaje; cualquier analizador de dependencias puede hacer eso. – Randolpho

Respuesta

5

NDepend hará sugestiones, y mucho más, hace un montón de análisis de código.

+0

Pero, ¿tiene un informe (estoy pensando en FxCop o similar a ReSharper) que dice específicamente: "estas clases no parecen usarse fuera de esta aplicación, y probablemente hacerse interno "? –

+0

sí, bajo la sección de encapsulación de las consultas CQL, se le da una lista de sus clases que podrían cambiarse 'Tipos que podrían declararse como privados'. Esta es una publicación anterior pero el autor explica qué intenta hacer do. http://codebetter.com/blogs/patricksmacchia/archive/2007/10/31/optimal-encapsulation.aspx – Iain

4

Sí, NDepend y Visual Studio Dependency Graph generator.

Editar:
Dicho esto, creo publicación eliminada de Kim Jing tuvo una excelente sugerencia: si bien las herramientas le dirá lo que las clases son y no se utilizan fuera de su biblioteca, es realmente algo que debe hacer manualmente usando su sombrero Arquitecto de soluciones.

1

NDepend es un buen lugar para comenzar. http://www.ndepend.com/

Sin embargo, en un mundo ideal con interfaces de cliente específicas public interface creo que es la forma de avanzar ya que estos serían sus "puntos de pellizco".

interfaz principio de la segregación -

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

Por supuesto, siempre se puede encontrar a cabo en un entorno no productivo, haciendo todo lo no público. ;)

1

El hecho de que esté buscando hacer clases internas sugiere que considere la posibilidad de dividir la solución en una biblioteca que contiene las clases que desea ocultar, y una interfaz que contiene las clases que dejaría pública

Cuestiones relacionadas