Code Analysis

19/05/2008 - 11:15 por Angel g. | Informe spam
Hola,

Estaba pasando el code analysis, y me encuentro con una regla que me sale
mucho, dónde se dice que marque como estáticos todos aquellos métodos que no
hacen uso de ningún campo privado de la clase.

Nunca me había parado en pensarlo, pero ahora veo que tiene sentido.
Por norma, marcais como estáticos estos métodos? y, si aparecen muchos,
puede ser debido a un mal diseño de la clase? Qué pensais?

Grácias.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
19/05/2008 - 11:54 | Informe spam
"Angel g." wrote in message
news:%
Estaba pasando el code analysis, y me encuentro con una regla que me sale
mucho, dónde se dice que marque como estáticos todos aquellos métodos que
no hacen uso de ningún campo privado de la clase.

Nunca me había parado en pensarlo, pero ahora veo que tiene sentido.
Por norma, marcais como estáticos estos métodos?



Sí, normalmente si el método no usa variables de clase, tiene sentido
marcarlo como estático, y así se le pueden hacer llamadas sin necesidad de
instanciar la clase.

y, si aparecen muchos, puede ser debido a un mal diseño de la clase? Qué
pensais?



No hay problema. Es perfectamente lícito que aparezcan muchos. Por
ejemplo, imagínate una clase con funciones matemáticas llamada "Math" que
tenga funciones como "Seno", "Coseno", etc. Tiene perfecto sentido que sean
estáticas, para poderlas llamar como Math.Seno, Math.Coseno, etc. Y podría
haber en la clase cientos de funcionies de este tipo. De hecho, hasta tal
punto es frecuente, que a partir de la versión 2.0 de C#, se puede poner la
palabra "static" en la definición de la clase para indicarle al compilador
que TODOS los métodos de esa clase son estáticos, y que dé un error de
compilación si se añade alguno que NO lo sea.
Respuesta Responder a este mensaje
#2 RFOG
19/05/2008 - 13:54 | Informe spam
Es que así, al convertir a estático un método, te ahorras el paso de "this"
al método. A simple vista puede ser una chorrada, pero si ese método se
llama mucho, el aumento de rendimiento sí que puede notarse, sobre todo si
luego el jitter hace bien las cosas y todo se queda en los registros del
micro y la caché del procesador.

"Angel g." escribió en el mensaje de noticias
news:%
Hola,

Estaba pasando el code analysis, y me encuentro con una regla que me sale
mucho, dónde se dice que marque como estáticos todos aquellos métodos que
no hacen uso de ningún campo privado de la clase.

Nunca me había parado en pensarlo, pero ahora veo que tiene sentido.
Por norma, marcais como estáticos estos métodos? y, si aparecen muchos,
puede ser debido a un mal diseño de la clase? Qué pensais?

Grácias.




Microsoft Visual C++ MVP
==Mi blog sobre programación: http://geeks.ms/blogs/rfog
Momentos Leves: http://momentosleves.blogspot.com/
Cosas mías: http://rfog.blogsome.com/
Libros, ciencia ficción y programación
Si sales una hora antes, previendo que habrá transito, la perderás en una
caravana de una hora y media.
Respuesta Responder a este mensaje
#3 Alfredo Novoa
19/05/2008 - 14:07 | Informe spam
Hola,

On Mon, 19 May 2008 13:54:57 +0200, "RFOG" wrote:

Es que así, al convertir a estático un método, te ahorras el paso de "this"
al método. A simple vista puede ser una chorrada, pero si ese método se
llama mucho, el aumento de rendimiento sí que puede notarse, sobre todo si
luego el jitter hace bien las cosas y todo se queda en los registros del
micro y la caché del procesador.



Más bien se notará si el jitter ese hace mal las cosas y le pasa el
"this" al método cuando no hace falta :-)



Saludos
Alfredo
Respuesta Responder a este mensaje
#4 RFOG
19/05/2008 - 15:51 | Informe spam
Pos también. :-)


"Alfredo Novoa" escribió en el mensaje de noticias
news:

Hola,

On Mon, 19 May 2008 13:54:57 +0200, "RFOG" wrote:

Es que así, al convertir a estático un método, te ahorras el paso de
"this"
al método. A simple vista puede ser una chorrada, pero si ese método se
llama mucho, el aumento de rendimiento sí que puede notarse, sobre todo si
luego el jitter hace bien las cosas y todo se queda en los registros del
micro y la caché del procesador.



Más bien se notará si el jitter ese hace mal las cosas y le pasa el
"this" al método cuando no hace falta :-)



Saludos
Alfredo



Microsoft Visual C++ MVP
==Mi blog sobre programación: http://geeks.ms/blogs/rfog
Momentos Leves: http://momentosleves.blogspot.com/
Cosas mías: http://rfog.blogsome.com/
Libros, ciencia ficción y programación
Si sales una hora antes, previendo que habrá transito, la perderás en una
caravana de una hora y media.
Respuesta Responder a este mensaje
#5 PabloBarrientos
22/05/2008 - 14:51 | Informe spam
On May 19, 6:15 am, "Angel g." wrote:
Hola,

Estaba pasando el code analysis, y me encuentro con una regla que me sale
mucho, dónde se dice que marque como estáticos todos aquellos métodos que no
hacen uso de ningún campo privado de la clase.

Nunca me había parado en pensarlo, pero ahora veo que tiene sentido.
Por norma, marcais como estáticos estos métodos? y, si aparecen muchos,
puede ser debido a un mal diseño de la clase? Qué pensais?

Grácias.



Marcar un metodo de la clase como estático tiene que ver mas con el
diseño de tu solución que con cuestiones de performance.
La decision pasa por determinar si la funcionalidad de un metodo
alterará el "estado" del objeto (es decir, si modificará los atributos
de la clase, lo que llamas campo privado de la clase).

Como bien se habla como ejemplo de la clase Math. los metodos son
estaticos ya que se pueden utilizar sin instanciar la clase.

Lo que code analysis recomienda es marcarlo como estatico para que al
instanciar un objeto la tabla que contiene los metodos del objeto sea
menos extensa.

Pablo Barrientos
www.latamdevelopers.blogspot.com
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida