Funkcionalan dizajn
Funkcionalan dizajn - principi, obrasci i praksa
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 knjiziNaslov: Funkcionalan dizajn
Izdavač: Kompjuter biblioteka
Strana: 384 (cb)
Povez: meki
Pismo: latinica
Format: cm
Godina izdanja: 2024
ISBN: 978-86-7310-596-3