Discover Functional JavaScript proglašen je jednom od najboljih knjiga o funkcionalnom programiranju od strane BookAuthority !
"Stil bez točke - ima za cilj smanjiti dio vizualne gužve uklanjanjem nepotrebnog mapiranja parametara i argumenata." - Kyle Simpson u funkcionalnom svjetlu JavaScriptRazmotrite protočni kôd:
let newBooks = books.filter(point => isTechnology(point))
Sada pogledajte isti kod nakon uklanjanja bodova (parametara / argumenata):
let newBooks = books.filter(isTechnology)
Bez bodova u Popisnim operacijama
Izvršimo popisne operacije u stilu bez bodova.
Recimo da trebamo pronaći naslove tehnologija na popisu knjiga, pripremiti objekt knjige sa svim informacijama za prikaz i sortirati knjige prema imenu autora.
Evo kako bi kod izgledao:
function getBooks(){ return books.filter(isTechnology) .map(toBookView) .sort(ascByAuthor); } //Small functions with points function isTechnology(book){ return book.type === "T"; } function toBookView(book){ return Object.freeze({ title : book.title, author : authors[book.authorID].name }); } function ascByAuthor(book1, book2){ if(book1.author book2.author) return 1; return 0; }
U povratni pozivi isTechnology()
, toBookView()
, ascByAuthor()
su male funkcije u namjeri-otkrivajući imena. Nisu izgrađeni u stilu bez bodova.
Kôd u kojem se okupljaju sve ove funkcije getBooks()
je besmislen.
Razgradnja i sastav
Naš prirodni način rješavanja problema je rastaviti ga na manje dijelove, a zatim sve sastaviti.
Veći zadatak dijelimo na nekoliko funkcija radeći manje zadatke. Zatim ponovno kombiniramo te manje funkcije da bismo riješili početni problem.
Pročitajmo ponovo zahtjeve:
Moramo pronaći naslove tehnologija na popisu knjiga, pripremiti objekt knjige sa svim informacijama za prikaz i razvrstati knjige po imenu autora.Stvorili smo:
isTechnology()
predikat da provjeri radi li se o tehnološkoj knjizitoViewBook()
za izgradnju objekta sa svim informacijama za pogledascByAuthorname()
da se sortiraju dvije knjige uzlazno prema autorskom imenugetBooks()
da biste kombinirali sve ove male funkcije u stilu bez bodova
function getBooks(){ return books.filter(isTechnology) .map(toBookView) .sort(ascByAuthor); }
Koraci prema kompoziciji bez točke
Ne postoji dodatni anonimni povratni poziv prilikom sastavljanja bez točke. Nema function
ključne riječi, nema sintakse strelice =&
gt; . Sve što vidimo su imena funkcija.
- U većini slučajeva izvucite povratne pozive u imenovanim funkcijama.
- U jednostavnim slučajevima, samo upotrijebite uslužnu funkciju iz okvira s alatima za stvaranje povratnog poziva u letu. Pogledajte
prop()
funkciju, na primjer. - Napišite funkciju koordinatora u stilu bez točke.
Male funkcije
Posljedica pisanja koda na ovaj način je puno malih funkcija s namjerom otkrivanja imena. Imenovanje ovih malih funkcija zahtijeva vrijeme, ali ako je dobro izvedeno, olakšat će čitanje koda.
Bit će dvije vrste funkcija:
- Funkcije koje obavljaju jedan zadatak: to su čiste funkcije ili funkcije zatvaranja. Obično nisu izgrađeni u stilu bez bodova, već imaju dobra imena.
- Funkcije koje koordiniraju puno zadataka: pridruživanje tih malih zadataka u besmislenom stilu olakšava čitanje.
Nije sve bez točke
Ne ciljam na to da sve bude besmisleno. Ciljam na point-free na određenim mjestima, posebno kad sastavljam funkcije.
Discover Functional JavaScript proglašen je jednim odnajbolje nove knjige o funkcionalnom programiranju by BookAuthority !
Za više o primjeni tehnika funkcionalnog programiranja u Reactu pogledajte Functional React .
Naučite funkcionalni React , na način temeljen na projektu, uz Funkcionalnu arhitekturu s Reactom i Reduxom .
Slijedite na Twitteru