U knjizi "Funkcionalan dizajn", poznati softverski inženjer Robert C. Martin (poznat kao "Ujka Bob") objašnjava primenu funkcionalnog programiranja za izgradnju boljih sistema za krajnje korisnike. Martin poredi konvencionalne objektno-orijentisane strukture koda u Javi sa onima koje omogućava funkcionalno programiranje, identifikuje optimalne uloge za svaki pristup i demonstrira kako unaprediti sistem pažljivim korišćenjem oba pristupa u odgovarajućim kontekstima.
Martinov pristup je pragmatičan, s naglaskom na rešavanju stvarnih problema umesto teorijskog razmatranja. Kroz pristupačne primere, programeri će razumeti kako im jednostavan, semantički bogat jezik Clojure, može pomoći da unaprede čistoću koda, dizajn, disciplinu i rezultate. Martin istražuje poznate SOLID principe i Dizajnerske obrasce Četvoročlane Grupe iz funkcionalne perspektive, te otkriva zašto obrasci i dalje imaju veliku vrednost za funkcionalne programere i kako ih koristiti radi postizanja izuzetnih rezultata.
Razumevanje osnova funkcionalnog programiranja uključuje koncepte kao što su nemutabilnost (immutability), perzistentni podaci, rekurzija, iteracija, lenjost (laziness) i stanje (statefulness) Kontrast funkcionalnog i objektnog pristupa programiranju kroz stručno osmišljene studije slučaja Istraživanje funkcionalnih dizajnerskih tehnika za tok podataka Korišćenje klasičnih SOLID principa za pisanje boljeg Clojure koda Usavršavanje pragmatičnih pristupa funkcionalnom testiranju, korisničkim interfejsima i konkurentnosti Upotreba dizajnerskih obrazaca u funkcionalnim okruženjima Vodjenje kroz izgradnju enterprise-level Clojure aplikacije “Funkcionalni dizajn" je kalsik, od samog početka. Bob ističe kako elementi funkcionalnog programiranja čine dizajn softvera jednostavnim, ali i pragmatičnim. On to čini na način koji je prihvatljiv i koristan za programere koji već imaju iskustvo sa C#, C++, ili Javom.” Janet A. Carr, Independent Clojure Consultant
Sadržaj
Predgovor xiii
Uvod xv
Zahvalnosti xxi
O autoru xxiii
DEO I: Osnove funkcionalnog programiranja 1
Poglavlje 1: Nepromenljivost 3
Šta je funkcionalno programiranje? 4 Problem sa dodeljivanjem 7 Pa zašto ga nazivamo funkcionalno? 10 Bez promene stanja? 12 Nepromenljivost 15 Poglavlje 2: Trajnost podataka 17
O varanju 19 Pravljenje kopija 20 Strukturno deljenje 23 Poglavlje 3: Rekurzija i iteracija 27
Iteracija 28 Veoma kratak vodič za Clojure 29 Iteracija 32 TCO, Clojure i JVM 32 Rekurzija 32 Poglavlje 4: Lenjost 37
Lenjo akumuliranje 40 U redu, ali zašto? 41 Završetak 42 Poglavlje 5: Čuvanje stanja 43
Kada moramo da izvršimo promenu 47 Softverska transakcijska memorija (STM) 48 Život je težak, softver je još teži Deo II: Komparativna analiza 53
Poglavlje 6: Prosti činioci 55
Verzija za Javu 56 Verzija za Clojure 60 Zaključak 63 Poglavlje 7: Igra kuglanja 65
Verzija za Javu 66 Verzija za Clojure 71 Zaključak 75 Poglavlje 8: Ogovaranje među vozačima autobusa 77
Java rešenje 78 Klasa Driver 84 Klasa Route 85 Klasa Stop 85 Klasa Rumor 86 Klasa Simulation 87 Clojure 88 Zaključak 93 Poglavlje 9: Objektno-orijentisano programiranje 95
Funkcionalan platni spisak 98 Prostori imena i izvorne datoteke 107 Zaključak Poglavlje 10: Tipovi 109
Deo III: Funkcionalni dizajn 115
Poglavlje 11: Protok podataka 117
Poglavlje 12: SOLID 125
Princip jedinstvene odgovornosti (SRP) 126 Princip otvorenosti i zatvorenosti (OCP) 131 Funkcije 133 Objekti sa virtuelnim tabelama 134 Multimetodi 135 Nezavisna implementacija 136 Liskovin princip zamene (LSP) 138 ISA pravilo 142 Nipošto! 145 Pravilo reprezentacije 146 Princip razdvajanja interfejsa (ISP) 147 Nemojte da zavisite od stvari koje vam nisu potrebne 150 Zašto? 151 Zaključak 151 Princip inverzije zavisnosti (DIP) 152 Povratak u prošlost 155 Kršenje DIP principa 165 Zaključak Deo IV: Funkcionalni pragmatizam 181
Poglavlje 13: Testovi 183
A REPL? Šta ćemo sa tim? 184 Šta je sa lažnim objektima? 184 Testiranje zasnovano na svojstvima 186 Tehnika dijagnostike 190 Funkcionalno 197 Poglavlje 14: Grafički korisnički interfejs 199
Crtanje uz pomoć kornjače za biblioteku Quil Poglavlje 15: Konkurentnost 215
Zaključak 225 Deo V: Projektni obrasci 227
Poglavlje 16: Pregled projektnih obrazaca 229
Obrasci u funkcionalnom programiranju 233 Obrazac Apstraktan poslužitelj 233 Obrazac Adapter 236 Da li je to zaista objekat adapter? 241 Obrazac Komanda 242 Poništi 245 Obrazac Sastav 249 Funkcionalno? 254 Obrazac Dekorater 260 Obrazac Posetilac 264 Zatvoriti ili Clojure? 267 Problem 90 stepeni 270 Obrazac Apstraktna fabrika 274 Ponovo 90 stepeni 279 Sigurnost tipova? 281 Zaključak 281 Dodatak: OO otrov? 282
Deo VI: Studija slučaja 285
Poglavlje 17: Wa-Tor 287
Počeši se 309 Tuš je rešenje problema 312 Faza intenzivne reprodukcije 322 Šta ćemo sa ajkulama? 324 Zaključak 335 Pogovor 337
Indeks 339
Detaljni podaci o knjizi
Naslov: Funkcionalan dizajn Izdavač: Kompjuter biblioteka Strana: 384 (cb) Pismo: latinica Format: cm Godina izdanja: 2024 ISBN: 978-86-7310-596-3