Il curry è uno strumento troppo complesso da utilizzare effettivamente?

5

Oggi mi sento come se fossi finalmente riuscito a scrivere curricula (in Javascript), e naturalmente, come ogni programmatore che ha imparato un nuovo trucco, la mia mente cominciò immediatamente a capire come migliorare la mia base di codice attuale usandola.

E ancora, come ogni programmatore, la piccola voce che urla "[nuovo trucco] tutte le cose!" è stato messo a tacere da un altro detto: "[il nuovo trucco] è davvero complesso, forse non dovresti usarlo." Il curry è lo zucchero, in sostanza, dopotutto.

Capisco che non ci sia nulla di sbagliato nell'usare una funzionalità con moderazione, specialmente se si tratta di un mind-bending come currying, ma per semplicità dovrei evitare di usarlo se qualcosa di altrettanto efficiente è sufficiente?

    
posta Jason 17.02.2013 - 02:16
fonte

2 risposte

10

TL; DR: No

IMO La tua domanda contiene una cattiva ipotesi.

Bad presupposto

there's nothing wrong with using a feature in moderation

Questo è il modo sbagliato di guardare una lingua e le sue capacità. Dovresti usare qualsiasi idioma, caratteristica, ecc., Producendo l'implementazione più breve e più gestibile che abbia prestazioni ragionevoli per te / il tuo team. Dovrebbe non essere guidato da quante volte l'hai usato fino ad ora. Le decisioni di programmazione non dovrebbero essere governate da una limitazione arbitraria del numero di volte in cui è possibile utilizzare un particolare costrutto sulla convinzione che "questo importo è ok, ma un altro è troppo".

La domanda

La domanda è "sta diventando complessa per te / la tua squadra?". Ci sono certamente molte persone per le quali il curry non è complicato e lo usano sempre. Hai detto che l'hai appena imparato, quindi è una domanda valida da porsi. Tuttavia, e questo è il bit importante, questa è una domanda a cui devi rispondere . Dovresti considerare qualsiasi fattore esterno come le scadenze, i costi di errori (che saliranno ogni volta che usi qualcosa di non familiare), ecc. E ne valuti i benefici.

Complessità

La complessità è in gran parte una funzione di familiarità. La familiarità guida la comprensione. Quando hai familiarità con un concetto non è più o meno complesso di qualsiasi altra cosa. Pensa alla nozione di funzione, oggetti e tipi anonimi e a quanto fossero complessi quando li hai incontrati per la prima volta. Viceversa, se non acquisisci familiarità con il concetto, è e rimarrà sempre complesso.

Livello medio di competenze del team

La domanda di non usare qualcosa perché la maggior parte della squadra non capisce il concetto è qualcosa che ho considerato in passato. Tuttavia ho sempre deciso che preferirei forzare le persone a imparare e sviluppare, piuttosto che far programmare a tutti un comune denominatore "inferiore". In passato ho dovuto compromettere la migliore implementazione che potrei dare per paura che qualcun altro non sia in grado di mantenerlo / capirlo. Ora che posso impostare i criteri questo non accade.

    
risposta data 17.02.2013 - 07:22
fonte
7

Come tutte le scelte in ingegneria, c'è un compromesso definitivo. Qual è il vantaggio di sostituire il codice esistente con il nuovo trucco? Il codice è più facile da mantenere, più facile da leggere (che aiuta nella manutenibilità), è più veloce, ecc. Inoltre, quali sono gli aspetti negativi? Stai lavorando in una squadra e, in tal caso, l'utilizzo del tuo trucco noto riduce la leggibilità per i vari membri del team?

Alla fine, devi elencare i pro e i contro e determinare cosa pensi sia meglio. Se si tratta di un problema di livello di abilità all'interno della squadra, allora forse puoi fare degli sforzi per addestrare la tua squadra sulla nuova tecnica e condividere la tua intuizione (il tuo momento "aha"). Quindi, una volta che il tuo team ha ricevuto una migliore formazione sull'argomento, puoi decidere come team su come dovresti affrontare questo nuovo trucco.

Se stai lavorando su un progetto open source, allora si potrebbe sostenere che è una buona cosa rimanere assenti dagli usi del codice che potrebbero far scattare altri programmatori che contribuiscono al progetto. In alternativa, si potrebbe obiettare che dovresti usare questi trucchi se il progetto ha un buon processo di revisione in cui si potrebbe vedere l'abuso del tuo nuovo trucco.

E se questo è semplicemente un progetto personale, allora fai quello che ti rende felice!

Spero che questo aiuti! Buon codice!

    
risposta data 17.02.2013 - 02:40
fonte

Leggi altre domande sui tag