Skip to content

Latest commit

 

History

History
75 lines (44 loc) · 1.17 KB

REFACTORING.md

File metadata and controls

75 lines (44 loc) · 1.17 KB

#Objective8 Refactoring and Style Guide

##Style

###Use -> in function names to show transformation

####Prefer

(defn km->miles [km] (* 0.621371192 km))

####To

(defn km-to-miles [km] (* 0.621371192 km))
(defn convert-km-to-miles [km] (* 0.621371192 km))

###Keep the left hand side of let statements simple

####Prefer

(let [username (:username (get-user-info 123))
      last-log-in (:last-online (get-user-stats 123))]
  (welcome-message username last-log-in))

####To

(let [{username :username} (get-user-info 123)
      {last-log-in :last-online} (get-user-stats 123)]
  (welcome-message username last-log-in))

##Refactoring

###Replace state building in let statements with threading

Use the -> or some-> macros when the desired effect is transformation.

####Replace

(defn perform-action [a b c]
  (let [one (create-one a)
        two (create-two-from-one one)
        three (create-three-from-two two)]
    (make-result three b c)))

####With

(defn perform-action [a b c]
  (-> (create-one a)
      create-two-from-one
      create-three-from-two
      (make-result b c)))