Kaip kompozicija be taškų padarys jus geresniu funkcionaliu programuotoju

„BookAuthority“ paskelbė, kad „ Discover Functional JavaScript“ buvo viena geriausių naujų funkcinio programavimo knygų !

"Stilius be taškų - siekiama sumažinti tam tikrą vaizdinę netvarką pašalinant nereikalingą parametrų ir argumentų susiejimą." - Kyle'as Simpsonas „Functional-Light JavaScript“

Apsvarstykite tekantį kodą:

let newBooks = books.filter(point => isTechnology(point))

Dabar pašalinkite taškus (parametrus / argumentus) pažvelkite į tą patį kodą:

let newBooks = books.filter(isTechnology)

Be taškų sąrašo operacijose

Atlikime sąrašo operacijas be taškų stiliaus.

Tarkime, kad knygų sąraše turime rasti technologijų pavadinimus, paruošti knygos objektą su visa informacija rodiniui ir rūšiuoti knygas pagal autoriaus vardą.

Štai kaip atrodys kodas:

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; }

Į šios funkcijos isTechnology(), toBookView(), ascByAuthor()yra maži funkcijos su ketinimą-atskleisti pavardes. Jie nėra pastatyti be taškų stiliaus.

Kodas, kuriame getBooks()yra visos šios funkcijos, yra be taškų.

Skilimas ir sudėtis

Natūralus mūsų būdas spręsti problemą yra suskaidyti ją į mažesnius gabalėlius ir vėl viską sujungti.

Didesnę užduotį suskirstome į kelias funkcijas, atliekant mažesnes užduotis. Tada mes vėl sujungiame šias mažesnes funkcijas, kad išspręstume pradinę problemą.

Perskaitykime reikalavimus dar kartą:

Knygų sąraše turime rasti technologijų pavadinimus, paruošti knygos objektą su visa informacija rodiniui ir rūšiuoti knygas pagal autoriaus vardą.

Mes sukūrėme:

  • isTechnology() predikatas patikrinti, ar tai technologijų knyga
  • toViewBook() pastatyti objektą su visa informacija, skirta vaizdui
  • ascByAuthorname() surūšiuoti dvi knygas pagal autoriaus vardą
  • getBooks() sujungti visas šias mažas funkcijas be taškų
function getBooks(){ return books.filter(isTechnology) .map(toBookView) .sort(ascByAuthor); }

Žingsniai link kompozicijos be taškų

Atliekant kompoziciją be taškų nėra papildomo anoniminio skambučio. Nėra functionraktinio žodžio, nėra rodyklės sintaksės => . Viskas, ką mes matome, yra funkcijų pavadinimai.

  • Daugeliu atvejų išskirkite skambučius įvardytose funkcijose.
  • Paprastais atvejais tiesiog naudokite įrankių dėžutės funkciją, kad sukurtumėte atgalinį skambutį. Pažvelkite prop(), pavyzdžiui, į funkciją.
  • Parašykite koordinatoriaus funkciją be taškų.

Mažos funkcijos

Tokiu būdu parašius kodą, pasitaiko daugybė mažų funkcijų su tikslu atskleisti vardus. Pavadinti šias mažas funkcijas reikia laiko, tačiau jei tai bus padaryta gerai, tai palengvins kodo skaitymą.

Bus dviejų rūšių funkcijos:

  • Funkcijos, atliekančios vieną užduotį: jos yra grynosios arba uždarymo funkcijos. Paprastai jie nėra pastatyti be taškų stiliaus, bet turi gerus vardus.
  • Funkcijos, koordinuojančios daugybę užduočių: sujungus šias mažas užduotis be taškų, lengviau skaityti.

Ne viskas yra be taškų

Nesiekiu, kad viskas būtų be taškų. Siekiu, kad konkrečiose vietose nebūtų taškų, ypač kuriant funkcijas.

„Discover Functional JavaScript“ buvo pavadintas vienu išgeriausios naujos „BookAuthority“ funkcinio programavimo knygos !

Norėdami sužinoti daugiau apie funkcinių programavimo metodų taikymą „React“, žiūrėkite „ Functional React“ .

Sužinokite funkcinį „Reaguoti “ projektui naudodamiesi funkcine architektūra su „React“ ir „Redux“ .

Sekite „Twitter“