Question

Dupliquer

  

Si les méthodes C # que peut statique être statique?


S'il vous plaît pardonnez-moi si cette question semble élémentaire - je suis à la recherche sur un code source qui ressemble par ailleurs assez bon, mais il a soulevé quelques questions ...

Si une classe donnée n'a pas de données membre - à-dire qu'il ne conserve aucune sorte d'état, y at-il des avantages à ne pas marquer cette classe en tant que classe statique avec des méthodes statiques?

Y a-t-il des avantages à ne pas marquer des méthodes qui ne maintiennent pas d'état statique?

Merci!

EDIT: Comme quelqu'un a parlé, le code que je suis à la recherche est écrit en C #.

Était-ce utile?

La solution

Oui. Je peux penser à quelques raisons:

  1. Facilité d'moqueuse et tests unitaires
  2. Facilité d'ajout d'état
  3. Vous pouvez passer autour (comme quelque chose ou interface)

Autres conseils

Je dirais qu'il ya un avantage pour les rendre les méthodes statiques de la classe, et au-dessus de l'abstrait que faire de classe. De cette façon, il est clair pour le programmeur que cette classe n'a jamais été destiné à être instancié et les méthodes sont encore disponibles.

Il pourrait y avoir un avantage à laisser des méthodes qui ne si vous avez l'intention (ou pensez que vous pourriez avoir l'intention) changent pas d'état non-statique, d'hériter de la classe et remplacer ces méthodes avec code Finalité état de changement. Bien que dans ce cas, il devrait vraiment être une classe abstraite.

Si une classe ne maintient pas un Etat, n'a pas de méthodes d'instance, et pourraient être mises en œuvre entièrement avec des méthodes de classe, je prends habituellement un long regard dur si ses comportements seraient en fait plus de sens ailleurs. Je trouve qu'ils semblent généralement avoir beaucoup de méthodes le long des lignes de, qui doSomethingWithItem(Item item) plus judicieux comme une méthode d'instance dans Item.

Oui, je sais que cela ne répond pas à votre question, mais je pense que d'autres ont couvert que assez bien déjà, et je voulais une autre perspective là-bas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top