Un metodo dovrebbe fare una cosa e essere bravo in questo? [duplicare]

9

"Estrai fino allo sfinimento" è qualcosa che ho letto nel blog di Uncle Bob, il che significa che un metodo dovrebbe fare una cosa sola da solo.

Qual è quella cosa? Quando dovresti interrompere l'estrazione dei metodi?

Diciamo che ho una classe di accesso con i seguenti metodi:

 public string getAssistantsPassword()
 public string getAdministratorsPassword()

Questi recuperano la rispettiva password di account nel database. Quindi:

 public bool isLogInOk()

Il metodo confronta la password che è stata chiamata o selezionata e vede se la password fornita dall'utente è nel database.

Questo è un esempio di "Extract Till You Drop"? Quando saprai quando stai facendo troppa estrazione?

    
posta KyelJmD 02.03.2012 - 11:26
fonte

3 risposte

23

Hai estratto troppo quando il tuo codice stesso è più chiaro del nome del metodo .

Ricorda che, quando non sono sicuro, quasi tutti i programmatori che ho visto hanno creato metodi molto più grandi e monolitici che ottimali, piuttosto che il contrario.

Un metodo con poche righe di codice è abbastanza tipico di app / libreria ben progettata.

    
risposta data 02.03.2012 - 11:39
fonte
7

Per citare Pulisci codice , in la pagina 36, dice:

So, another way to know that a function is doing more than "one thing" is if you can extract another function from it with a name that is not merely a restatement of its implementation.

    
risposta data 02.03.2012 - 12:49
fonte
4

L'idea generale è che hai finito di estrarre quando non c'è nient'altro che puoi estrarre e ottenere ancora un grumo logico di codice. Se c'è una parte di una funzione che può essere eliminata, se fa qualcosa che puoi descrivere e dare un nome, e se puoi immaginare che potresti doverla chiamare da qualche altra parte del tuo codice, allora dovresti estrarre esso.

Anche se non hai mai bisogno di chiamarlo da un'altra parte del tuo codice, il fatto che si tratti di una funzione separata significa che puoi scrivere test unitari solo per questo, il che migliora il rilevamento dei bug e significa che puoi profilarlo indipendentemente, il che migliora la capacità di valutare le perdite di prestazioni nel codice.

Estrai il codice fino a quando non c'è alcuna funzione che fa più di una cosa: se puoi estrarre il codice da una funzione in un'altra funzione, se la nuova funzione esegue qualche compito e se puoi descrivere quale è quella attività , quindi estrai il codice. Se sei preoccupato per le prestazioni, puoi sempre aggiungerlo in un secondo momento.

    
risposta data 02.03.2012 - 11:32
fonte