I metodi statici privati in C # fanno male a qualcosa?

10

Ho creato un metodo di convalida privato per una determinata convalida che si verifica più volte nella mia classe (non posso memorizzare i dati convalidati per vari motivi). Ora, ReSharper suggerisce che la funzione potrebbe essere statica. Sono un po 'riluttante a farlo a causa di problemi noti con i metodi statici. Sarebbe un metodo statico privato . La mia domanda è: i metodi statici privati possono causare problemi simili di accoppiamento e test come i metodi statici pubblici? È una cattiva pratica? Direi di no, ma non sono sicuro che ci sia un trabocchetto qui.

    
posta Tamás Szelei 31.08.2011 - 17:49
fonte

3 risposte

16

Penserei: "Devo testarlo?"

Se il tuo metodo è privato in ogni caso, il che significa che non vuoi testare la logica nel metodo stesso, quindi per quanto riguarda testabilità e manutenibilità la tua classe è una scatola nera in entrambi i modi, il funzionamento interno della tua classe sono affari suoi e solo Anche il refactoring non ne risentirà, il che è anche da considerare.

Quindi, secondo me: No, fare un metodo "privato" "statico privato" non avrà alcuna ramificazione a lungo termine.

    
risposta data 31.08.2011 - 18:14
fonte
17

I metodi statici privati sono la cosa più semplice possibile, dal mio punto di vista.

DataIn - > Metodo - > DataOut

Non ci sono dipendenze da oggetti esterni, nessun effetto collaterale. Perché li consideri male?

    
risposta data 31.08.2011 - 17:54
fonte
2

Le classi di test che usano metodi statici pubblici possono essere difficili, in quanto non sono (particolarmente) facili da stub / falsificare / prendere in giro i metodi statici. I metodi di istanza, d'altra parte, possono essere facilmente derisi, specialmente se sono virtuali o soddisfano un'interfaccia.

Tuttavia, non vedo alcun motivo per non utilizzare metodi statici privati. In effetti, c'è un leggero vantaggio in termini di prestazioni, in quanto non è necessaria un'istanza della classe per occupare memoria.

D'altra parte qualsiasi cosa statica è un po 'di odore di codice. Questa è in realtà una "classe di supporto"? Potrebbe essere che il metodo potrebbe risiedere più efficacemente su una delle classi passate come parametro? La risposta a queste domande è spesso "va bene come statico", ma vale la pena ricordare.

    
risposta data 31.08.2011 - 18:06
fonte

Leggi altre domande sui tag