C # / Java: ogni classe dovrebbe avere un metodo principale?

1

Ultimamente ho imparato C # per vedere l'altro lato della medaglia (ho già una buona conoscenza di Java), quindi ho letto su C # e ho trovato un articolo chiamato C# per sviluppatori Java e nella lettura dell'articolo ho visto qualcosa che non avevo mai sentito prima.

It is typically recommended that one creates a main method for each class in an application to test the functionality of that class besides whatever main method actually drives the application.

Non ho mai fatto uno sviluppo commerciale, quindi forse questa è una pratica del settore di cui non ho sentito parlare, ma sicuramente da qualche parte nei vari libri che ho letto sarebbe venuto fuori.

Questa è davvero una cosa? È comune farlo?

    
posta Bassinator 11.09.2016 - 20:15
fonte

3 risposte

5

La maggior parte degli sviluppatori utilizza un framework di test, come JUnit , per i loro test . Questi (per quanto ora, potrebbero esserci delle eccezioni) non richiedono la scrittura di un main () per ogni classe.

Se non stai usando un framework, potrebbe essere sensato testare tramite main() . Tuttavia, non farlo . Utilizzare un framework di test. Rende la tua vita più semplice, consente integrazione continua , test / copertura del codice e metriche, molte e buone cose.

Nota: per una classe GUI, a volte scriverò un main() per visualizzare il MySuperWidget personalizzato in JFrame e mostrarlo per un rapido test visivo. Questa è un'eccezione, non la regola.

    
risposta data 11.09.2016 - 20:25
fonte
6

Per prima cosa si noti che il blog dell'articolo pubblicato è piuttosto vecchio. È datato 2001. Questo è importante, perché quella citazione parla di cose specifiche: test unitari. Non sono abbastanza grande per commentare lo stato dei test unitari al momento, ma guardando qualcosa come questo , JUnit ( il modo ufficiale per testare le applicazioni Java) aveva solo un anno. Non abbastanza vecchio per essere nel repertorio del programmatore comune. Quindi, al momento, assegnare a ogni classe un metodo main in modo che possa essere testato su unità potrebbe sembrare una buona idea.

Ora, usiamo i framewrok di prova dell'unità adeguati. JUnit per Java. NUnit / XUnit per .NET

Inoltre, quell'articolo è davvero vecchio. Non mi fiderei di nulla di scritto lì solo sulla base di questo fatto. Le cose si sviluppano estremamente velocemente nel mondo della programmazione.

    
risposta data 11.09.2016 - 20:28
fonte
0

È una cosa. Le persone lo fanno. Non è comune se segui una semplice regola:

Rimuovi il codice guasto.

Le persone hanno perso intere società perché il codice inutilizzato è stato lasciato in giro. Quindi un aggiornamento invia un po 'di logica in un percorso che non è stato eseguito in anni e all'improvviso sta scambiando titoli con strategie degli anni '90.

Non ci piace il codice nei nostri ambienti operativi che non viene utilizzato lì. Ecco perché mettiamo i test in una classe separata. Se lo desideri, puoi scegliere di ignorare la regola rimuovi codice morto. Se lo fai, stai lontano dal mio portafoglio azionario.

    
risposta data 11.09.2016 - 20:29
fonte

Leggi altre domande sui tag