Pregunta

Duplicar

  

En caso de C # métodos que puede ser estática ser estático?


Por favor, perdóname si esta pregunta parece elemental - Estoy mirando por encima de un cierto código fuente que de otro modo se ve muy bien, pero ha planteado algunas preguntas ...

Si una clase dada no tiene datos miembro - es decir, que no mantiene ningún tipo de estado, ¿hay algún beneficio en no marcar esa clase como una clase estática con métodos estáticos?

¿Hay algún beneficio en no marcar métodos que no mantienen el estado más estático?

Gracias!

EDIT: Desde que alguien lo mencionó, el código que estoy viendo está escrito en C #.

¿Fue útil?

Solución

Sí. Puedo pensar en algunas razones:

  1. Facilidad de burlas y la unidad de pruebas
  2. Facilidad de adición de estado
  3. Se podía pasarlo alrededor (como un interface o algo así)

Otros consejos

Yo diría que es un beneficio para hacerlos métodos estáticos de la clase, y encima de eso haciendo que la clase abstracta. De esa manera, está claro que el programador que esta clase no se diseñó para ejecutarse y los métodos están todavía disponibles.

Es posible que haya un beneficio en dejar métodos que no cambian de estado no estático, si tiene la intención (o piensa que la intención) de heredar de la clase y tienen precedencia sobre los métodos con código que hace estado de cambio. Aunque en ese caso lo que realmente debería ser una clase abstracta.

Si una clase no mantiene ningún estado, no tiene ningún métodos de instancia, y podría ser implementado en su totalidad con los métodos de clase, por lo general tomar un largo duro mirar si sus comportamientos serían de hecho tener más sentido en otro lugar. Me parece que por lo general parecen tener una gran cantidad de métodos a lo largo de las líneas de doSomethingWithItem(Item item), lo que haría más sentido como un método de instancia de Item.

Sí, sé que esto no responde a tu pregunta, pero creo que otros han cubierto que bastante bien ya, y que quería tener otra perspectiva que hay.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top