Funzioni di denominazione che fanno una o più cose

1

Recentemente ho preso in mano "Clean Code" di Robert Martin e ho intrapreso il refactoring del mio recente progetto. Mi sto rendendo conto di quanto sia importante nominare variabili e funzioni in un modo che esprima chiaramente il loro intento.

Una delle mie funzioni è chiamata addEvent (). Ma il problema è che questa funzione a volte aggiunge 1 evento e talvolta aggiunge più eventi, a seconda degli argomenti che ha fornito.

Sto cercando di trovare un nome adatto per questa funzione, ma non mi sembra proprio niente:

addEventOrEvents ()?

addEvents ()?

addOneOrMoreEvents ()?

Sono anche consapevole che una funzione dovrebbe solo fare una cosa. Quindi forse ho bisogno di rompere questo in più di una funzione? Ma in quel caso, non riesco a pensare a quale sia la funzione che determina quanti eventi aggiungere si chiamerebbero!

    
posta Ethan Fischer 29.09.2017 - 18:09
fonte

2 risposte

5

Se chiami la funzione "addEvents", suppongo che sia in grado di gestire correttamente un singolo evento, e non solo due o più. Potrei anche supporre che possa gestire correttamente zero eventi.

Ora dovevo usare una funzione che presupponeva una serie di elementi, e un sacco di codice che la chiamava che creava un oggetto, creava una matrice vuota, spingeva l'elemento all'array, passava l'array. È scomodo. Una funzione che utilizza un numero variabile di argomenti potrebbe essere più carina. Se non è conveniente chiamare la funzione addEvents, è possibile aggiungere addEvents e addEvent e uno di questi chiama l'altro.

Alcune lingue rendono molto facile la creazione di un array, come @ [elemento] in Objective-C è un array che contiene quell'elemento. Swift è particolarmente carino: puoi dichiarare una funzione per prendere un numero variabile di argomenti. in realtà prende un array, il compilatore trasforma i tuoi argomenti in un array, o puoi effettivamente passare un array. Quindi puoi chiamare addEvents (evento) o addEvents (event1, event2, event3) o addEvents (eventsArray) e tutto funziona.

    
risposta data 30.09.2017 - 14:23
fonte
0

La risposta ovvia è:

  • addEvent aggiunge un evento uno come dice il nome
  • addEvents aggiunge più di un evento e chiamerebbe addEvent in modo sequenziale.

Le funzioni che fanno più di una cosa sono candidate per il refactoring.

    
risposta data 30.09.2017 - 08:21
fonte

Leggi altre domande sui tag