Possiamo interrompere CQS per ottenere un po 'di ASCIUTTO?

1

Nel nostro codebase abbiamo molti controller con una struttura molto simile:

@my_model.update_owner(something)

if @my_model.update_attributes(params)
    return render_object(@my_model)
else
    return render_validation_error(@my_model)
end

Sebbene la struttura non sia esattamente la stessa ovunque, sembra fattibile per il refactoring. Potrebbe sembrare:

def update_model_and_render(model)
    ...
end

Certamente, salveremmo molte linee. Sarebbe anche utile per i futuri programmatori che implementano funzionalità simili. Chiamare la nuova funzione refactored impedirebbe loro di dimenticare di aggiungere la riga @ my_model.update_owner ().

Il problema con la nuova funzione è che produrrebbe un effetto collaterale e restituirebbe anche un valore. Chiaramente, interromperremmo la separazione della query di comando (la nuova funzione sarebbe opzionalmente referenziale).

Va bene piegare la regola in casi come questo per essere più SECCHI?

In un sacco di codice che ho visto, questo accade di solito ai confini del sistema (come un controller, dove avvengono le mutazioni ma restituiamo sempre un valore), ma non sono sicuro se c'è qualcos'altro potrebbe mancare.

    
posta IoChaos 18.12.2017 - 17:51
fonte

0 risposte

Leggi altre domande sui tag