This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2023-09-17
Channels
- # announcements (47)
- # calva (10)
- # catalyst (5)
- # cider (9)
- # clj-yaml (4)
- # clojure (36)
- # clojure-europe (13)
- # clojure-norway (7)
- # clojure-uk (1)
- # cursive (1)
- # datomic (11)
- # dev-tooling (1)
- # emacs (18)
- # hyperfiddle (36)
- # inf-clojure (21)
- # polylith (3)
- # portal (3)
- # reagent (55)
- # reitit (1)
- # releases (3)
- # shadow-cljs (14)
- # solo-full-stack (1)
- # squint (6)
- # tools-build (12)
God morn!
Videre på “god-clojure-kode-sporet”. Min konklusjon fra diskusjonen forrige uke er noe ala:
> enkle funksjoner som transformerer data er bedre enn funksjoner som lukker over funksjoner
fordi da har du klar, tydelig dataflyt, og kan titte på data underveis i dataflyten din. (omtrent det samme som Magnar sa).
En ting jeg tar ut av det er at når du vil ha utvidbarhet, bør den utvidbarheten reflekteres i at daten er forskjellig. Skal man ha én datastruktur som man sender gjennnom en pipe (med feks ->
, ->>
, some->
eller cond->>
), må all forskjell reflekteres i datastrukturen. Ikke ved at programmet ditt gjør if-er i starten og kaller annen kode basert på resultatet av de if-ene. Da begynner koden å sprike, og det er vanskeligere å følge dataflyten.
-----
Jeg har etter hvert fått en annen ting jeg tror man bør gjøre når man skriver Clojure:
> minimér avhengigheter
Ikke ha navnerom-avhengigheter fire nivåer dypt når du kunne hatt mindre av det. Gå for grunne hierarkier. Kanskje det holder med to nivåer. Nivå én er der ting starter. Og nivå to er ting som brukes av nivå 1. Er “minimér avhengigehter” eller “foretrekk grunne hierarkier” noe dere ser dere enig i?
Også litt nysgjerrig i om dere føler at dette fremdeles stemmer når dere jobber på større kodebaser (jeg har ikke jobbet med noen svære clojure-kodebaser).
Ikke bare gjør jeg dette også i store kodebaser - jeg tror det er nøkkelen til å lykkes i store kodebaser.
Med "dette" tenker jeg på "foretrekk grunne hierarkier" - ikke nødvendigvis nøyaktig to nivåer 🙂 Men prinsippet står seg.