Pari o meno di 15 linee per principio di metodo (funzione)? [duplicare]

1

Alcuni libri o master ci hanno detto questo principio: uguale o inferiore a 15 linee per metodo (funzione), e il perfetto è sotto (o uguale) 8 righe.

Il principio ha senso per la maggior parte delle condizioni?

Ci sono molti casi che infrangono il principio negli SDK Android UNIX di Windows OSX, quindi come gestire il principio?

Quali sono le eccezioni per questo principio?

Vale la pena dedicare molto tempo al codice refactoring per adattare questo principio?

Che ne dici di chiamare un altro metodo solo alla 15 ° linea? (scherzando)

    
posta user.3898215 14.08.2014 - 09:13
fonte

1 risposta

2

Ho sentito "regole" come questa sempre, ma è facile provare troppo difficile per rispettare questi tipi di regole.

Ho visto codice in cui le funzioni sono suddivise in blocchi illogici semplicemente per mantenere le funzioni brevi.

Direi che il buon senso è la regola migliore .

Nessuno riuscirà mai a trovare un numero che funzioni in ogni situazione. Se trovi un blocco logico di istruzioni che può essere rifatto in un nuovo metodo, fallo e dovresti trovare le lunghezze del tuo metodo il più possibile ragionevoli.

Se non puoi, ma ti accorgi che i metodi stanno diventando irragionevolmente lunghi, prendilo non come un segno dovresti radunarli a un numero arbitrario di righe, ma che forse qualcos'altro deve essere rifattorizzato, per esempio, forse la classe nel suo complesso ha troppa responsabilità.

Modifica: SJuan76 mostra anche un punto eccellente:

D: Quando 15 righe di codice non sono realmente 15 righe di codice?

A: Quando sono 15 righe di valori di registrazione / validazione dell'input trival / (ecc.)

Questa è una delle più grandi insidie nell'usare le linee di codice come metrica, anche se si tratta di un caso ristretto come questo. Le linee di codice non convertono / equivalgono a nessuna misura utile di "lavoro". In un ambiente 10 righe potrebbero essere sufficienti per configurare un registratore di errori, in un altro, 2 righe potrebbero essere sufficienti, direi che in entrambi i casi meriterebbe un metodo.

    
risposta data 14.08.2014 - 09:45
fonte

Leggi altre domande sui tag