Programowanie funkcyjne z JavaScriptem Sposoby na lepszy kod.pdf
(
1085 KB
)
Pobierz
Tytuł oryginału: Functional Programming in JavaScript: How to improve your JavaScript programs using
functional techniques
Tłumaczenie: Tomasz Walczak
ISBN: 978-83-283-3252-2
Original edition copyright © 2016 by Manning Publications Co.
All rights reserved
Polish edition copyright © 2017 by HELION SA.
All rights reserved.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from the Publisher.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były
kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane
z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie
ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji
zawartych w książce.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail:
helion@helion.pl
WWW:
http://helion.pl
(księgarnia internetowa, katalog książek)
Pliki z przykładami omawianymi w książce można znaleźć pod adresem:
ftp://ftp.helion.pl/przyklady/prfujs.zip
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/prfujs
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
•
Kup książkę
•
Poleć książkę
•
Oceń książkę
•
Księgarnia internetowa
•
Lubię to! » Nasza społeczność
Spis treści
Przedmowa
Podziękowania
O książce
O autorze
9
11
13
17
C
ZĘŚĆ
I. M
YŚL FUNKCYJNIE
........................................................................ 19
Rozdział 1. Przechodzenie na model funkcyjny
1.1. Czy programowanie funkcyjne może być pomocne?
1.2. Czym jest programowanie funkcyjne?
1.2.1. Programowanie funkcyjne jest deklaratywne
1.2.2. Czyste funkcje i problemy z efektami ubocznymi
1.2.3. Przejrzystość referencyjna i możliwość podstawiania
1.2.4. Zachowywanie niemodyfikowalności danych
1.3. Zalety programowania funkcyjnego
1.3.1. Ułatwianie podziału złożonych zadań
1.3.2. Przetwarzanie danych za pomocą płynnych
łańcuchów
wywołań
1.3.3. Radzenie sobie ze złożonością aplikacji asynchronicznych
1.4. Podsumowanie
21
23
24
26
27
31
33
34
34
36
38
40
Rozdział 2. Operacje wyższego poziomu w JavaScripcie
2.1. Dlaczego JavaScript?
2.2. Programowanie funkcyjne a programowanie obiektowe
2.2.1. Zarządzanie stanem obiektów w JavaScripcie
2.2.2. Traktowanie obiektów jak wartości
2.2.3. Głębokie zamrażanie potencjalnie zmiennych elementów
2.2.4. Poruszanie się po grafach obiektów i ich modyfikowanie za pomocą soczewek
2.3. Funkcje
2.3.1. Funkcje jako pełnoprawne obiekty
2.3.2. Funkcje wyższego poziomu
2.3.3. Sposoby uruchamiania funkcji
2.3.4. Metody używane dla funkcji
2.4. Domknięcia i zasięg
2.4.1. Problemy z zasięgiem globalnym
2.4.2. Zasięg funkcji w JavaScripcie
2.4.3. Zasięg pseudobloku
2.4.4. Praktyczne zastosowania domknięć
2.5. Podsumowanie
41
42
42
49
49
52
54
56
56
57
59
61
62
64
65
66
67
70
Kup książkę
Poleć książkę
6
Spis treści
C
ZĘŚĆ
II. W
KROCZ W
ŚWIAT
PROGRAMOWANIA FUNKCYJNEGO
................71
Rozdział 3. Niewielka liczba struktur danych i wiele operacji
3.1. Przepływ sterowania w aplikacji
3.2.
Łączenie
metod w
łańcuch
3.3.
Łączenie
funkcji w
łańcuch
3.3.1. Wyrażenia lambda
3.3.2. Przekształcanie danych za pomocą operacji _.map
3.3.3. Pobieranie wyników za pomocą operacji _.reduce
3.3.4. Usuwanie niepotrzebnych elementów za pomocą funkcji _.filter
3.4. Analizowanie kodu
3.4.1. Deklaratywne
łańcuchy
funkcji w podejściu leniwym
3.4.2. Dane w formacie podobnym do SQL-owego — traktowanie funkcji jak danych
3.5. Naucz się myśleć rekurencyjnie
3.5.1. Czym jest rekurencja?
3.5.2. Jak nauczyć się myśleć rekurencyjnie?
3.5.3. Rekurencyjnie definiowane struktury danych
3.6. Podsumowanie
73
74
75
76
77
78
80
84
85
86
90
91
92
92
95
98
Rozdział 4. W kierunku modularnego kodu do wielokrotnego użytku
4.1.
Łańcuchy
metod a potoki funkcji
4.1.1.
Łączenie
metod w
łańcuchy
4.1.2. Porządkowanie funkcji w potoku
4.2. Wymogi dotyczące zgodności funkcji
4.2.1. Funkcje zgodne ze względu na typ
4.2.2. Funkcje i arność — argument na rzecz stosowania krotek
4.3. Przetwarzanie funkcji z rozwijaniem
4.3.1. Emulowanie fabryk funkcji
4.3.2. Tworzenie przeznaczonych do wielokrotnego użytku szablonów funkcji
4.4. Częściowe wywoływanie funkcji i wiązanie parametrów
4.4.1. Rozszerzanie podstawowego języka
4.4.2. Wiązanie funkcji wykonywanych z opóźnieniem
4.5. Tworzenie potoków funkcji za pomocą kompozycji
4.5.1. Kompozycja na przykładzie kontrolek HTML-owych
4.5.2. Kompozycja funkcyjna — oddzielenie opisu od przetwarzania
4.5.3. Kompozycja z użyciem bibliotek funkcyjnych
4.5.4. Radzenie sobie z kodem czystym i nieczystym
4.5.5. Wprowadzenie do programowania bezargumentowego
4.6. Zarządzanie przepływem sterowania z użyciem kombinatorów funkcji
4.6.1. Kombinator identity
4.6.2. Kombinator tap
4.6.3. Kombinator alt
4.6.4. Kombinator seq
4.6.5. Kombinator fork
4.7. Podsumowanie
99
100
101
102
103
103
104
107
110
111
113
115
115
116
117
118
121
123
124
126
126
126
127
128
128
130
Kup książkę
Poleć książkę
Spis treści
7
Rozdział 5. Wzorce projektowe pomagające radzić sobie ze złożonością
5.1. Wady imperatywnej obsługi błędów
5.1.1. Obsługa błędów za pomocą bloków try-catch
5.1.2. Dlaczego w programach funkcyjnych nie należy zgłaszać wyjątków?
5.1.3. Problemy ze sprawdzaniem wartości null
5.2. Budowanie lepszego rozwiązania — funktory
5.2.1. Opakowywanie niebezpiecznych wartości
5.2.2. Funktory
5.3. Funkcyjna obsługa błędów z użyciem monad
5.3.1. Monady — od przepływu sterowania do przepływu danych
5.3.2. Obsługa błędów za pomocą monad Maybe i Either
5.3.3. Interakcje z zewnętrznymi zasobami przy użyciu monady IO
5.4. Monadyczne
łańcuchy
i kompozycje
5.5. Podsumowanie
131
132
132
133
134
135
136
138
140
141
145
154
157
163
C
ZĘŚĆ
III. R
OZWIJANIE UMIEJĘTNOŚCI W ZAKRESIE
PROGRAMOWANIA FUNKCYJNEGO
.......................................... 165
Rozdział 6. Zabezpieczanie kodu przed błędami
6.1. Wpływ programowania funkcyjnego na testy jednostkowe
6.2. Problemy z testowaniem programów imperatywnych
6.2.1. Trudność identyfikowania i wyodrębniania zadań
6.2.2. Zależność od współużytkowanych zasobów prowadzi do niespójnych wyników
6.2.3. Zdefiniowana kolejność wykonywania operacji
6.3. Testowanie kodu funkcyjnego
6.3.1. Traktowanie funkcji jak czarnych skrzynek
6.3.2. Koncentracja na logice biznesowej zamiast na przepływie sterowania
6.3.3. Oddzielanie czystego kodu od nieczystego za pomocą monadycznej izolacji
6.3.4. Tworzenie atrap zewnętrznych zależności
6.4. Przedstawianie specyfikacji w testach opartych na cechach
6.5. Pomiar efektywności testów na podstawie pokrycia kodu
6.5.1. Pomiar efektywności testów kodu funkcyjnego
6.5.2. Pomiar złożoności kodu funkcyjnego
6.6. Podsumowanie
167
168
169
170
171
172
173
173
174
176
178
180
186
187
190
193
Rozdział 7. Optymalizacje funkcyjne
7.1. Praca funkcji na zapleczu
7.1.1. Rozwijanie funkcji a kontekst funkcji na stosie
7.1.2. Wyzwania związane z kodem rekurencyjnym
7.2. Odraczanie wykonywania funkcji za pomocą leniwego wartościowania
7.2.1. Unikanie obliczeń dzięki kombinatorowi funkcyjnemu alt
7.2.2. Wykorzystanie syntezy wywołań
7.3. Wywoływanie kodu wtedy, gdy jest potrzebny
7.3.1. Memoizacja
7.3.2. Memoizacja funkcji o dużych wymaganiach obliczeniowych
195
196
198
200
202
203
204
206
207
207
Kup książkę
Poleć książkę
Plik z chomika:
PDFator
Inne pliki z tego folderu:
JavaScript Przewodnik Poznaj jezyk mistrzow programowania Wydanie VII.pdf
(2504 KB)
AngularJS Profesjonalne techniki.pdf
(1428 KB)
AngularJS Praktyczne przyklady.pdf
(1394 KB)
Baw sie kodem Twoja wlasna gra CoderDojo Nano.pdf
(6759 KB)
Aplikacje 3D Przewodnik po HTML5 WebGL i CSS3.pdf
(2551 KB)
Inne foldery tego chomika:
3ds max
50 zadań i zagadek szachowych
Access
Acrobat
Administracja
Zgłoś jeśli
naruszono regulamin