Naming when requiring other namespaces
(require [cheshire.core :refer :all]) is an example of self-inflicted errors, as this library included a
contains? function that will over-write the
clojure.core/contains? function when using
:refer :all or the
(use ) expression.
(ns current.namespace (:require [cheshire.core :refer [function-name another-function etc]))
A classic example is a test namespace that uses clojure core (ns practicalli.random-function-test (:require [clojure.test :refer [deftest is testing]] [practicalli.random-function :as sut])) Otherwise use a meaningful alias, ideally referring to what that library is doing (which makes it easer to swap out with a different library later on if required). As Cheshire is a JSON related library, then (ns my.ns (:require [cheshire.core :as json])) This gives a context to all the functions called from that library and makes code easier for humans to understand.