Filteri
close
Tip rezultata
Svi rezultati uključeni
keyboard_arrow_down
Kategorija
Sve kategorije
keyboard_arrow_down
Opseg cena (RSD)
Prikaži sve
keyboard_arrow_down
Od
RSD
Do
RSD
Sortiraj po
keyboard_arrow_down
Objavljeno u proteklih
keyboard_arrow_down
Sajtovi uključeni u pretragu
Svi sajtovi uključeni
keyboard_arrow_down

Pratite promene cene putem maila

  • Da bi dobijali obaveštenja o promeni cene potrebno je da kliknete Prati oglas dugme koje se nalazi na dnu svakog oglasa i unesete Vašu mail adresu.
1-1 od 1 rezultata

Broj oglasa

Prikaz

format_list_bulleted
view_stream
1-1 od 1
1-1 od 1 rezultata

Prikaz

format_list_bulleted
view_stream

Režim promene aktivan!

Upravo ste u režimu promene sačuvane pretrage za frazu .
Možete da promenite frazu ili filtere i sačuvate trenutno stanje

Često softverski inženjeri i arhitekte rade sa velikim, kompleksnim bazama koda koje treba da skaliraju i održavaju. U ovom priručniku, autor Maksimilijano Kontijeri vas vodi dalje od koncepta čistog koda pokazujući vam kako da identifikujete mogućnosti za poboljšanje i njihov uticaj na produkcijski kod. Kada je reč o pouzdanosti i evoluciji sistema, ove tehnike pružaju prednosti koje se isplate vremenom. Koristeći stvarne primere u JavaScript-u, PHP-u, Javi, Pythonu i mnogim drugim programskim jezicima, ovaj priručnik pruža proverene recepte koji vam pomažu da skalirate i održavate velike sisteme. Svaki odeljak pokriva osnovne koncepte uključujući čitljivost, spregu, testabilnost i proširivost, kao i mirise koda - simptome problema koji zahtevaju posebnu pažnju - i recepte za rešavanje istih. Kako napredujete kroz ovu knjigu, recepti za refaktorisanje i raznovrsnost mirisa koda rastu u složenosti. Vi ćete: Razumeti prednosti čistog koda i naučiti kako da detektujete mirise koda Naučiti tehniku refaktorisanja korak po korak Dobiti ilustrativne primere koda u nekoliko savremenih programskih jezika Dobiti sveobuhvatan katalog uobičajenih mirisa koda, njihovih uticaja i mogućih rešenja Koristiti kod koji je direktan, favorizujući čitljivost i učenje Iz predgovora Kod je svuda, od razvoja veb aplikacija do pametnih ugovora, ugradnih sistema, blokčejnova, softverskog sistema na brodu teleskopa Džejms Veb, hirurških robota i mnogih drugih domena. Softver efektivno preuzima svet, i trenutno smo svedoci uspona profesionalnih alata za generisanje koda veštačkom inteligencijom. To znači da je čist kod važniji nego ikada. Dok nastavljate da radite na sve većim privatnim ili otvorenim kod bazama, čist kod je način da ih održite svežim i spremnim za evoluciju. Kome je knjiga namenjena Ova knjiga vam pomaže da identifikujete uobičajene probleme u kodu i ističe posledice tih problema. Konačno vam pomaže da ih izbegnete uz recepte koji se lako prate. To je dragocen resurs koji može u velikoj meri pomoći programerima, recenzentima koda, arhitektama i studentima u unapređivanju njihovih veština kodiranja i postojećih sistema. Šta vam je potrebno da biste koristili ovu knjigu Da biste pokrenuli primere koda, potrebno vam je radno okruženje poput O'Reilly sandbox-a ili Replita. Podstičem vas da prevedete primere koda u vaš omiljeni programski jezik. Danas to možete uraditi besplatno uz generatore koda veštačkom inteligencijom. Koristio sam alate kao što su GitHub Copilot, OpenAI Codex, Bard, ChatGPT i mnoge druge da bih napisao primere koda za ovu knjigu. Korišćenje ovih alata omogućilo mi je da koristim više od 25 različitih jezika u ovoj knjizi iako nisam ekspert za mnoge od njih. O autoru Maksimilijano Kontijeri radi u softverskoj industriji već 25 godina i istovremeno predaje na univerzitetu. Već tri godine piše o čistom kodu, refaktorisanju i mirisima koda, pišući par članaka nedeljno na mnogim popularnim blog platformama. On je fan deklarativnog i bihevioralnog koda i oslanja se na softverske osnove za izgradnju elegantnih i robustnih rešenja. Sadržaj Predgovor Uvod 1. Čist kod 1.1 Šta je miris koda? 1.2 Šta je refaktorisanje? 1.3 Šta je recept? 1.4 Zašto čist kod? 1.5 Čitljivost, performanse ili i jedno i drugo 1.6 Tipovi softvera 1.7 Mašinski generisan kod 1.8 Razmatranje o imenovanjima u knjizi 1.9 Obrasci dizajna 1.10 Paradigme programskih jezika 1.11 Objekti naspram klasa 1.12 Prilagodljivost 2. Uspostavljanje aksioma 2.0 Uvod 2.1 Zašto je to model? 2.2 Zašto je apstraktan? 2.3 Zašto je programabilan? 2.4 Zašto je delimičan? 2.5 Zašto je objašnjavajući? 2.6 Zašto je to povezano sa stvarnošću? 2.7 Zaključivanje pravila 2.8 Jedini pravi princip dizajniranja softvera 3. Anemični modeli 3.0 Uvod 3.1 Pretvaranje anemičnih objekata u bogate objekte 3.2 Prepoznavanje suštine vaših objekata 3.3 Uklanjanje metoda za postavljanje iz objekata 3.4 Uklanjanje anemičnih generatora koda 3.5 Uklanjanje automatskih svojstava 3.6 Uklanjanje objekata za prenos podataka 3.7 Kompletiranje praznih konstruktora 3.8 Uklanjanje metoda za dohvatanje 3.9 Sprečavanje raskalašnog ponašanja objekata 3.10 Uklanjanje dinamičkih svojstava 4. Primitivna opsesija 4.0 Uvod 4.1 Kreiranje malih objekata 4.2 Konkretizovanje primitivnih podataka 4.3 Konkretizovanje asocijativnih nizova 4.4 Uklanjanje zloupotreba niske 4.5 Konkretizovanje vremenskih oznaka 4.6 Konkretizovanje podskupova kao objekata 4.7 Konkretizovanje ispravnosti niske 4.8 Uklanjanje nepotrebnih svojstava 4.9 Kreiranje vremenskih intervala 5. Promenljivost 5.0 Uvod 5.1 Menjanje promenljive u konstantu 5.2 Deklarisanje promenljive kao promenljive 5.3 Zabrana promena u suštini 5.4 Izbegavanje promenljivih konstantnih nizova 5.5 Uklanjanje lenje inicijalizacije 5.6 Zamrzavanje promenljivih konstanti 5.7 Uklanjanje sporednih efekata 5.8 Prevencija podizanja 6. Deklarativni kod 6.0 Uvod 6.1 Sužavanje ponovo korišćenih promenljivih 6.2 Uklanjanje praznih linija 6.3 Uklanjanje verzionisanih metoda 6.4 Uklanjanje dvostrukih negacija 6.5 Menjanje pogrešno postavljenih odgovornosti 6.6 Zamena eksplicitnih iteracija 6.7 Dokumentovanje dizajnerskih odluka 6.8 Zamena magičnih brojeva konstantama 6.9 Razdvajanje „štaˮ i „kakoˮ 6.10 Dokumentovanje regularnih izraza 6.11 Prerada Yoda uslova 6.12 Uklanjanje neprofesionalnih metoda 6.13 Izbegavanje problema sa ugnježdenim povratnim pozivima 6.14 Generisanje dobrih poruka o greškama 6.15 Izbegavanje magičnih ispravki 7. Imenovanje 7.0 Uvod 7.1 Proširivanje skraćenica 7.2 Preimenovanje i razbijanje pomoćnih i uslužnih funkcija 7.3 Preimenovanje objekata sa prisvojnom zamenicom u prefiksu imena 7.4 Preimenovanje promenljivih rezultata 7.5 Preimenovanje promenljivih imenovanih po tipovima 7.6 Preimenovanje dugih imena 7.7 Preimenovanje apstraktnih imena 7.8 Ispravljanje grešaka u pisanju 7.9 Uklanjanje imena klasa iz atributa 7.10 Uklanjanje prvog slova iz klasa i interfejsa 7.11 Preimenovanje funkcija koje u svojim imenima imaju Basic/Do 7.12 Pretvaranje množine imena klase u jedninu 7.13 Uklanjanje reči „collectionˮ iz imena 7.14 Uklanjanje prefiksa/sufiksa „Implˮ iz imena klasa 7.15 Preimenovanje argumenata prema ulozi 7.16 Uklanjanje suvišnih imena parametara 7.17 Uklanjanje nepotrebnog konteksta iz imena 7.18 Izbegavanje upotrebe reči „dataˮ u imenu 8. Komentari 8.0 Uvod 8.1 Uklanjanje komentara u kojima se nalazi kod 8.2 Uklanjanje zastarelih komentara 8.3 Uklanjanje komentara sa logičkim vrednostima 8.4 Uklanjanje komentara u metodima za dohvatanje 8.5 Pretvaranje komentara u imena funkcija 8.6 Uklanjanje komentara unutar metoda 8.7 Zamena komentara testovima 9. Standardi 9.0 Uvod 9.1 Praćenje standarda pisanja koda 9.2 Standardizacija uvlačenja linija 9.3 Unifikacija konvencija za velika i mala slova 9.4 Pisanje koda na engleskom jeziku 9.5 Unifikacija redosleda parametara 9.6 Popravljanje postojećih problema 10. Kompleksnost 10.0 Uvod 10.1 Uklanjanje ponovljenog koda 10.2 Uklanjanje podešavanja/konfiguracija i opcija za funkcionalnosti 10.3 Menjanje stanja kao svojstava 10.4 Uklanjanje komplikovanih rešenja iz koda 10.5 Kršenje višestrukih obećanja 10.6 Prekidanje dugih lanaca saradnje 10.7 Izdvajanje metoda u objekat 10.8 Praćenje konstruktora nizova 10.9 Uklanjanje objekata sa nepredvidivim ponašanjima 11. Naduvavanje koda 11.0 Uvod 11.1 Razbijanje predugačkih metoda 11.2 Smanjenje suvišnih argumenata 11.3 Smanjenje suvišnih promenljivih 11.4 Uklanjanje suvišnih zagrada 11.5 Uklanjanje suvišnih metoda 11.6 Razbijanje suvišnih atributa 11.7 Smanjenje listi uvoza 11.8 Razbijanje funkcija koje obavljaju više zadataka 11.9 Razbijanje obilnih interfejsa 12. YAGNI 12.0 Uvod 12.1 Uklanjanje mrtvog koda 12.2 Upotreba koda umesto dijagrama 12.3 Refaktorisanje klasa sa jednom potklasom 12.4 Uklanjanje jednokratnih interfejsa 12.5 Uklanjanje nepravilne upotrebe dizajnerskih obrazaca 12.6 Zamena poslovnih kolekcija 13 Otkrij grešku što pre 13.0 Uvod 13.1 Refaktorisanje ponovnog dodeljivanja vrednosti promenljivih 13.2 Nametanje preduslova 13.3 Upotreba strožih parametara 13.4 Uklanjanje podrazumevanih slučajeva iz naredbi grananja 13.5 Izbegavanje izmena kolekcija tokom iteracije 13.6 Ponovno definisanje heširanja i jednakosti 13.7 Refaktorisanje bez funkcionalnih promena 14. Uslovna grananja 14.0 Uvod 14.1 Zamena slučajnih uslovnih grananja polimorfizmom 14.2 Preimenovanje indikatorskih promenljivih događaja 14.3 Konkretizovanje Bulovih promenljivih 14.4 Zamena switch/case/elseif naredbi 14.5 Zamena fiksiranih if uslova kolekcijama 14.6 Promena logičkih uslova u uslove sa skraćivanjem 14.7 Dodavanje implicitnog else uslova 14.8 Ponovno pisanje stepenasto napisanog uslovnog koda 14.9 Izbegavanje trikova uslova sa skraćivanjem 14.10 Ponovno pisanje ugnježdenog stepenasto napisanog koda 14.11 Sprečavanje povratnih logičkih vrednosti za provere uslova 14.12 Menjanje poređenja sa logičkim vrednostima 14.13 Izdvajanje iz dugih uslovnih izraza sa ternarnim operatorima 14.14 Konverzija nepolimorfnih funkcija u polimorfne 14.15 Menjanje poređenja jednakosti 14.16 Pretvaranje fiksiranih poslovnih uslova 14.17 Uklanjanje nepotrebnih logičkih vrednosti 14.18 Ponovno pisanje ugnježdenih uslova sa ternarnim operatorima 15. Null vrednost 15.0 Uvod 15.1 Kreiranje Null objekata 15.2 Uklanjanje opcionog ulančavanja 15.3 Pretvaranje opcionih atributa u kolekcije 15.4 Upotreba stvarnih objekata za null vrednosti 15.5 Predstavljanje nepoznatih lokacija bez korišćenja null vrednosti 16. Preuranjena optimizacija 16.0 Uvod 16.1 Izbegavanje identifikatora objekata 16.2 Uklanjanje preuranjene optimizacije 16.3 Uklanjanje preuranjene optimizacije sa operatorima nad bitovima 16.4 Smanjivanje preopštenosti 16.5 Menjanje strukturne optimizacije 16.6 Uklanjanje kodova za buduću upotrebu 16.7 Izdvajanje keša iz objekata domena 16.8 Uklanjanje događaja sa povratnim pozivom baziranih na implementaciji 16.9 Uklanjanje upita iz konstruktora 16.10 Uklanjanje koda iz destruktora 17. Povezivanje 17.0 Uvod 17.1 Pretvaranje skrivenih pretpostavki u eksplicitne 17.2 Zamena unikata 17.3 Razbijanje preopterećenih objekata 17.4 Razbijanje divergentnih promena 17.5 Pretvaranje specijalnih indikatorskih vrednosti 9999 u normalne 17.6 Uklanjanje operacije širokog raspona 17.7 Uklanjanje opcionih argumenata 17.8 Prevencija zavisti prema funkcijama 17.9 Uklanjanje posrednika 17.10 Premeštanje podrazumevanih argumenata na kraj 17.11 Izbegavanje efekta talasa 17.12 Uklanjanje slučajnih metoda na poslovnim objektima 17.13 Uklanjanje poslovnog koda iz korisničkog interfejsa 17.14 Menjanje povezanosti u klase 17.15 Refaktorisanje klastera podataka 17.16 Prekidanje neprikladne intimnosti 17.17 Pretvaranje zamenljivih objekata 18. Globalne promenljive 18.0 Uvod 18.1 Pretvaranje globalnih funkcija 18.2 Pretvaranje statičkih funkcija 18.3 Zamena GoTo naredbi strukturiranim kodom 18.4 Uklanjanje globalnih klasa 18.5 Menjanje globalnih datuma bez sadržaja 19. Hijerarhije 19.0 Uvod 19.1 Razbijanje dubokog nasleđivanja 19.2 Razbijanje jo-jo hijerarhija 19.3 Razbijanje potkategorizacije radi ponovne upotrebe koda 19.4 Zamena „is-aˮ relacije ponašanjem 19.5 Uklanjanje ugnježdenih klasa 19.6 Preimenovanje izolovanih klasa 19.7 Pretvaranje konkretnih klasa u konačne 19.8 Eksplicitno definisanje nasleđivanja klase 19.9 Prenošenje praznih klasa 19.10 Odgađanje preuranjene klasifikacije 19.11 Uklanjanje zaštićenih atributa 19.12 Kompletiranje praznih implementacija 20. Testiranje 20.0 Uvod 20.1 Testiranje privatnih metoda 20.2 Dodavanje opisa tvrdnjama 20.3 Prenošenje assertTrue do specifičnih tvrdnji 20.4 Zamena lažnih objekata stvarnim objektima 20.5 Unapređivanje generičkih tvrdnji 20.6 Uklanjanje nestabilnih testova 20.7 Menjanje tvrdnji za brojeve sa pokretnim zarezom 20.8 Menjanje test podataka stvarnim podacima 20.9 Zaštita testova koji krše enkapsulaciju 20.10 Uklanjanje irelevantnih informacija iz testova 20.11 Dodavanje pokrivenosti za svaki zahtev za spajanjem 20.12 Ponovno pisanje testova koji zavise od datuma 20.13 Učenje novog programskog jezika 21. Tehnički dug 21.0 Uvod 21.1 Uklanjanje koda koji zavisi od produkcije 21.2 Uklanjanje sistema za praćenje grešaka 21.3 Uklanjanje upozorenja/striktnog režima rada 21.4 Prevencija i uklanjanje oznaka ToDo i FixMe 22. Izuzeci 22.0 Uvod 22.1 Uklanjanje praznih blokova izuzetaka 22.2 Uklanjanje nepotrebnih izuzetaka 22.3 Ponovno pisanje izuzetaka za očekivane slučajeve 22.4 Ponovno pisanje ugnježdenih try/catch blokova 22.5 Zamena povratnih kodova izuzecima 22.6 Ponovno pisanje izuzetaka u stepenasto napisanom kodu 22.7 Skrivanje grešaka niskog nivoa od krajnjih korisnika 22.8 Sužavanje pokušaja za izuzetke 23. Metaprogramiranje 23.0 Uvod 23.1 Uklanjanje upotrebe metaprogramiranja 23.2 Oživljavanje bezimenih funkcija 23.3 Uklanjanje pretprocesora 23.4 Uklanjanje dinamičkih metoda 24. Tipovi 24.0 Uvod 24.1 Uklanjanje provere tipa 24.2 Rad sa istinitim vrednostima 24.3 Promena Float brojeva u decimalne 25. Bezbednost 25.0 Uvod 25.1 Dezinfekcija unosa 25.2 Promena sekvencijalnih identifikatora 25.3 Uklanjanje zavisnosti paketa 25.4 Zamena zlih regularnih izraza 25.5 Zaštita deserijalizacijer objekata Rečnik pojmova Indeks

Prikaži sve...
2,100RSD
forward
forward
Detaljnije
Nazad
Sačuvaj