È una cattiva forma mettere in scena i passi di una funzione nelle variabili intermedie (lasciate le associazioni)?

1

Trovo che io tendo ad avere bisogno di variabili intermedie. In Clojure ha la forma di let binding, come cmp-result-1 e cmp-result-2 nella funzione seguente.

(defn str-cmp
    "Takes two strings and compares them. Returns the string if a match; and nil if not."
    [str-1 str-2 start-pos substr-len]

    (let [cmp-result-1 (subs str-1 start-pos substr-len)
          cmp-result-2 (subs str-2 start-pos substr-len)]
        (compare cmp-result-1 cmp-result-2))) 

Potrei riscrivere questa funzione senza di loro, ma per me, lo scopo della funzione sembra più chiaro. Tendo a farlo abbastanza nel mio principale, e questo è principalmente per scopi di debug, quindi posso passare una variabile per stampare l'output intermedio.

Questa è una cattiva forma e, in caso affermativo, perché?

Grazie.

    
posta octopusgrabbus 18.06.2012 - 19:32
fonte

2 risposte

5

Nah. Per le funzioni arbitrarie composte da N variabili intermedie, la complessità massima è esponenziale in N, se non superiore. Le variabili intermedie permettono decisamente di esprimere in modo pulito funzioni molto complesse.

    
risposta data 18.06.2012 - 20:06
fonte
3

Nota a margine : è un peccato che non ci siano evidenziazioni di Clojure qui.

Considererei questo solo una questione di preferenza. Non avrei mai considerato cattiva forma . Non sempre promuove la leggibilità, ma raramente lo danneggia.

Tuttavia, non ho idea di cosa significhi rc , quindi se hai intenzione di utilizzare variabili ausiliarie, potrebbero anche promuovere la leggibilità rivelando alcuni intenti con una migliore scelta di parole.

    
risposta data 18.06.2012 - 19:37
fonte

Leggi altre domande sui tag