MIKRO KNJIGA
    od 1984. god.
    Knjige▹Računari i InternetProgramiranje

    Prikaži 3 puta
    veću sliku


    Recepti za čist kod
    Autor: Maksimilijano Kontijeri
    Strana: -
    Ostali detalji
    Veličina slova: A A
    Č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


    Detaljni podaci o knjizi
    Naslov: Recepti za čist kod
    Izdavač: Kompjuter biblioteka
    Povez: meki
    Pismo: latinica
    Format: cm
    Godina izdanja: 2024
    ISBN: 978-86-7310-595-6
    Naručite
    Cena: 2.700 RSD
    Vaša cena: 2.508 RSD
    Cena za inostranstvo:
    25,00 EUR
    Kom.:
    ili
    Naručite telefonom:
    +381 11 3055010
    +381 11 3055015





    Ocene i mišljenja čitalaca
    Budite prvi koji će svoje mišljenje podeliti sa drugima (morate biti prijavljeni)


    Pitanja, odgovori, mišljenja...
    Prijavite se ovde i pošaljite vaša mišljenja i pitanja našim urednicima i čitaocima

    Poruku poslaoPoruka
    MIKRO KNJIGA D.O.O.
    Kneza Višeslava 34, 11030 Beograd, Srbija
    e-pošta: prodaja(а)mikroknjiga.rs
    Komercijalna banka: 205-33117-65
    Matični broj: 07465181
    Šifra delatnosti: 5811
    PIB: 100575773
    Dokumenti o identifikaciji

    © Mikro knjiga 1984-2024