Domanda

Duplica

  

caso in C # i metodi che può essere statica essere statica?


Ti prego perdonami se questa domanda sembra elementare - Sto guardando oltre qualche codice sorgente che altrimenti sembra piuttosto buono, ma è sollevato alcune domande ...

Se una data classe non ha dati utente - vale a dire che non mantiene alcun tipo di stato, ci sono tutti i benefici di non marcatura che classe come una classe statica con metodi statici?

Ci sono vantaggi a non marcatura metodi che non mantengono stato come statica?

Grazie!

EDIT: Dal momento che qualcuno ha portato in su, il codice che sto guardando è scritto in C #.

È stato utile?

Soluzione

Sì. Mi vengono in mente alcuni motivi:

  1. Facilità di scherno e di unit testing
  2. Facilità di aggiunta di Stato
  3. È possibile passare in giro (come interface o qualcosa)

Altri suggerimenti

Direi che c'è un vantaggio di renderli metodi statici della classe, e per di più facendo la classe astratta. In questo modo, è chiaro al programmatore che questa classe è mai stato destinato ad essere istanziati e metodi sono ancora disponibili.

Ci potrebbe essere un beneficio nel lasciare metodi che non cambiano stato non-statico, se si intende (o pensa di poter intendere) per ereditare dalla classe e sovrascrivere i metodi con codice che fa cambiamento di stato. Anche se in questo caso in realtà dovrebbe essere una classe astratta.

Se una classe non mantiene qualsiasi stato, non ha metodi di istanza, e potrebbe essere attuato interamente con metodi di classe, di solito richiedere molto difficile guardare se i suoi comportamenti sarebbero infatti più senso da qualche altra parte. Trovo che di solito sembrano avere un sacco di metodi lungo le linee di doSomethingWithItem(Item item), il che renderebbe più senso come metodo di istanza in Item.

Si, so che questo non risponde alla tua domanda, ma credo che gli altri hanno coperto che abbastanza bene già, e volevo ottenere un altro punto di vista lì.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top