- enpassant blogja
- A hozzászóláshoz be kell jelentkezni
- 996 megtekintés
Hozzászólások
Hát nekem a te kódod se egyértemű. Nem is veszem a fáradtságot, hogy megértsem, csak tipplek a teszt alapján: a 0-val delimitált számsorok hossza és maximumeleme?
Én direkt ezt (vagy amit ténylegesen csinál;) definíciót fordítanám le 1 sorban, és nem akkumulálnék fold-al sok-sok sorban ki tudja mit... Nem adok rendes clean kód neveket a részeknek, de valahonnan innen indulnék (haskell):
1. split 0-kon
2. üres listák kifilterezése
3. maximum és hossz mappelése
Prelude Data.List.Split> let calcIntervals = map (\x -> (length x, maximum x)).filter (not.null).splitOn [0]
Prelude Data.List.Split> calcIntervals [0, 0, 2, 4, 0, 1, 3, 1, 0, 0, 2, 4, 5, 0]
[(2,4),(3,3),(3,5)]
- A hozzászóláshoz be kell jelentkezni
+1
"csak tipplek a teszt alapján: a 0-val delimitált számsorok hossza és maximumeleme?"
Pontosan. Igen, igazad van, funkcionális programozási elemekkel, teljesen más irányból elindulva, valóban lehet egyszerűbb kódot írni (és persze ezt is clean-né lehetne alakítani).
A célom az volt, hogy az eredeti logikát megtartva, egyszerűsítsek és tegyem tisztábbá a kódot.
Nagyon köszönöm a hozzászólásod, mert ez a fontos rész kimaradt a blogból:
A clean code egyik legfontosabb szabálya, hogy a kódodhoz készíts tesztet. Sokak szerint, ha nincs teszt a kódhoz, akkor biztosan nem clean a kódod. Az a legjobb, ha a teszt még a kódod elkészítése előtt készül.
- A hozzászóláshoz be kell jelentkezni