Descoperiți JavaScript funcțional a fost numit unul dintre cele mai bune cărți noi de programare funcțională de BookAuthority!

„Stilul fără puncte – urmărește să reducă o parte din dezordinea vizuală prin eliminarea mapării inutile a parametrilor-argument”. – Kyle Simpson în JavaScript funcțional-ușor

Luați în considerare codul curent:

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

Acum uitați-vă la același cod după eliminarea punctelor (parametri / argumente):

let newBooks = books.filter(isTechnology)

Fără punct în Operațiuni de listă

Să facem operații de listă într-un stil fără puncte.

Să presupunem că trebuie să găsim titlurile tehnologice într-o listă de cărți, să pregătim obiectul cărții cu toate informațiile pentru vizualizare și să sortăm cărțile după numele autorului.

Aici cum ar arăta codul:

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;
  if(book1.author > book2.author) return 1;
  return 0;
}

Rambursările isTechnology(), toBookView(), ascByAuthor() sunt mici funcții cu nume care dezvăluie intenția. Nu sunt construite într-un stil fără puncte.

Codul care asamblează toate aceste funcții în getBooks() este fără puncte.

Descompunerea și compoziția

Modul nostru natural de a face față unei probleme este să-l împărțim în bucăți mai mici și apoi să punem totul la loc.

Împărțim sarcina mai mare în mai multe funcții realizând sarcini mai mici. Apoi, combinăm din nou aceste funcții mai mici pentru a rezolva problema inițială.

Să citim din nou cerințele:

Trebuie să găsim titlurile tehnologiei într-o listă de cărți, să pregătim obiectul cărții cu toate informațiile pentru vizualizare și să sortăm cărțile după numele autorului.

Am creat:

  • isTechnology() predicat pentru a verifica dacă este o carte de tehnologie
  • toViewBook() pentru a construi un obiect cu toate informațiile pentru vizualizare
  • ascByAuthorname() pentru a sorta două cărți ascendente după numele autorului
  • getBooks() pentru a combina toate aceste mici funcții împreună într-un stil fără puncte
function getBooks(){
  return books.filter(isTechnology)
              .map(toBookView)
              .sort(ascByAuthor);
}

Pași către o compoziție fără puncte

Nu există nici o apelare anonimă suplimentară atunci când efectuați o compunere fără puncte. Nu function cuvânt cheie, fără sintaxă săgeată =&gt; . Tot ce vedem sunt nume de funcții.

  • În majoritatea cazurilor, extrageți apelurile din funcțiile numite.
  • În cazuri simple, trebuie doar să utilizați o funcție de utilitate din caseta de instrumente pentru a crea apel invers din mers. Uită-te la prop() funcție, de exemplu.
  • Scrieți funcția de coordonator într-un stil fără puncte.

Funcții mici

Consecința scrierii codului în acest fel este o mulțime de funcții mici, cu intenții care dezvăluie nume. Denumirea acestor mici funcții necesită timp, dar dacă se face bine, codul va fi mai ușor de citit.

Vor exista două tipuri de funcții:

  • Funcții care îndeplinesc o singură sarcină: sunt funcții pure sau de închidere. De obicei, acestea nu sunt construite într-un stil fără puncte, ci au în schimb nume bune.
  • Funcții care coordonează o mulțime de sarcini: alăturarea acestor sarcini mici într-un stil fără puncte ușurează citirea.

Nu totul este lipsit de puncte

Nu vreau să am totul fără puncte. Urmăresc fără puncte în locuri specifice, mai ales când compun funcții.

Descoperiți JavaScript funcțional a fost numit unul dintre cele mai bune cărți noi de programare funcțională de BookAuthority!

Pentru mai multe despre aplicarea tehnicilor de programare funcționale în React, aruncați o privire Reactie functionala.

Învăța funcțional React, într-un mod bazat pe proiecte, cu Arhitectură funcțională cu React și Redux.

Urmăriți pe Twitter