Kako će vas sastav bez točke postići da budete bolji funkcionalni programer

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 JavaScript

Razmotrite 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 knjizi
  • toViewBook() za izgradnju objekta sa svim informacijama za pogled
  • ascByAuthorname() da se sortiraju dvije knjige uzlazno prema autorskom imenu
  • getBooks() 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 functionključne riječi, nema sintakse strelice => . 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