L'uso della funzione flip è un odore per il cattivo design?

0

Tutto è nel titolo, l'uso della funzione flip è un odore per il cattivo design?

Vengo da un universo JavaScript e lavoravo con lodash / fp o Ramda .

Recentemente, ho scritto alcune cose in cui due elenchi di tipi completamente diversi devono collaborare per creare un altro elenco.

Ho provato ad estrarre alcune cose nelle funzioni, ma la firma assomiglia a:

const isNotIn = list => value => _.get(value)(list)

Quindi ho provato ad usare la funzione flip (scusa per la sintassi, lodash / fp non è pronto per il semplice flip / curry):

const isNotIn = _.curryN(2, _.flip(_.get));

Mi fa sentire un po 'strano, come se mi mancasse o sentissi l'odore di qualcosa.

Hai qualche idea riguardante la funzione flip e il design sbagliato?

    
posta mfrachet 19.07.2018 - 08:17
fonte

1 risposta

4

Anche se non sempre è un segno di cattivo design, a un certo punto lo stile senza punti è uno stile senza senso . Argomentare argomenti e dipendere da operazioni di ordine superiore abbastanza astratte tende a rendere il codice più difficile da capire. In molti casi, l'ortografia dei parametri come nel primo esempio è decisamente preferibile - sebbene continui a mantenere la funzione che può essere o non essere desiderabile.

La programmazione sta scrivendo il codice per un pubblico, non il computer, ma altri programmatori. Considera i loro sfondi e livelli di abilità. Per esempio. se lavori in una squadra, il tuo codice deve essere gestito da altri membri (presenti e futuri). A volte è meglio aumentare il livello di abilità della squadra, ma nella maggior parte dei casi è meglio scrivere la cosa più semplice che funzioni e ignorare le astrazioni eccessive.

Citando da una risposta simile Ho scritto un anno fa:

So yes, your code was too clever. Please apply your cleverness not to write clever code, but to find clever ways to avoid the need for blatant cleverness. The best designs don't look fancy, but look obvious to anyone who sees them. And good abstractions are there to simplify programming, not to add extra layers that I have to untangle in my mind first

    
risposta data 19.07.2018 - 08:36
fonte

Leggi altre domande sui tag