Refaktorisanje – Poboljšanje dizajna postojećeg koda (2. izd.)

6221-refaktorisanje-poboljsanje-dizajna-postojeceg-koda

Refaktorisanje
Prevod drugog izdanja
Potpuno preuređeno i ažurirano izdanje – sadrži potpuno nova refaktorisanja i primere sa kodom

Već više od dvadeset godina iskusni programeri širom sveta se oslanjaju u svom radu na Refaktorisanje, knjigu koju je napisao Martin Fowler, kako bi unapredili dizajn postojećeg koda i na taj način ujedno unapredili i održavanje softvera, a sve u cilju da njihov postojeći kôd bude lakši za razumevanje.
Novo izdanje knjige, koje se čekalo sa nestrpljenjem, potpuno je ažurirano u cilju prikazivanja ključnih promena na polju programiranja. Knjiga Refaktorisanje, Drugo izdanje sadrži ažuriran katalog refaktorisanja i uključuje primere koda u JavaScript-u, kao i nove primere sa funkcijama koji prikazuju refaktorisanje bez klasa.
Poput prethodnog izdanja, ova knjiga objašnjava šta je refaktorisanje; zašto je potrebno refaktorisati; kako prepoznati kôd kojem je potrebno refaktorisanje; kako da uspešno primenite refaktorisanje bez obzira na to koji programski jezik koristite.
• Razumevanje procesa i opštih principa refaktorisanja.
• Brzo primenjivanje korisnih refaktorisanja kako bi bilo lakše razumeti i izmeniti program.
• Prepoznavanje mesta u kodu koja „zaudaraju” i koja nam zapravo daju signal da je potrebno uraditi refaktorisanje.
• Istraživanje refaktorisanja za koja su data objašnjenja, motivacija, mehanizam, kao i jednostavni primeri.
• Kreiranje testova za vaša refaktorisanja.
• Prepoznavanje kompromisa i prepreka u vezi sa refaktorisanjem.

Sadržaj
Predgovor
Uvodno poglavlje

Poglavlje 1: Refaktorisanje – prvi primer
Polazna tačka
Komentari polaznog programa
Prvi korak u refaktorisanju
Razlaganje metode statement
Status: Veliki broj ugneždenih funkcija
Razdvajanje faza izračunavanja i formatiranja
Status: Podeljen u dva fajla (i faze)
Reorganizacija izračunavanja po tipu
Status: Kreiranje podataka pomoću polimorfnog kalkulatora
Završne misli

Poglavlje 2: Principi refaktorisanja
Definicija refaktorisanja
Dvojaki zadaci .
Zašto treba refaktorisati?
Kada bi trebalo refaktorisati?
Problemi sa refaktorisanjem
Refaktorisanje, arhitektura i YAGNI
Refaktorisanje i širi proces razvoja softvera
Refaktorisanje i performanse
Odakle potiče refaktorisanje?
Automatizovano refaktorisanje
Korak dalje

Poglavlje 3: Nešto „zaudara” u kodu .
Misteriozno ime
Ponovljeni kôd
Dugačka funkcija
Dugačka lista parametara
Globalni podaci
Promenljivi podaci
Divergentne izmene
Operacija sačmarica
Zavist među odlikama
Skupine podataka
Opsednutost primitivnim
Ponavljanje naredbe Switch
Petlje
Element koji je lenj
Spekulativna uopštenost
Privremeno polje
Lanci poruka
Posrednik
Insajdersko trgovanje
Velika klasa

Alternativne klase sa različitim interfejsima
Klasa podataka
Odbačeno nasledstvo
Komentari

Poglavlje 4: Pravljenje testova
Vrednost samotestirajućeg koda
Testiranje uzorka koda
Prvi test
Dodavanje testova
Modifikovanje fiksnog dela
Ispitivanje granica
Postoji i više od ovoga

Poglavlje 5: Uvod u katalog refaktorisanja
Format refaktorisanja
Izbor refaktorisanja

Poglavlje 6: Prvi skup refaktorisanja
Izdvajanje funkcije
Umetanje funkcije
Izdvajanje promenljive
Umetanje promenljive
Promena deklaracije funkcije
Enkapsuliranje promenljive
Preimenovanje promenljive
Uvođenje objekta parametra
Kombinovanje funkcija u klasu
Kombinovanje funkcija radi transformacije
Faza razdvajanja

Poglavlje 7: Enkapsulacija
Enkapsuliranje strukture
Enkapsuliranje kolekcije
Zamena osnovnih podataka objektom
Zamena privremene promenljive upitom
Izdvajanje klase
Umetanje klase
Sakrivanje delegata
Uklanjanje posrednika
Zamena algoritma

Poglavlje 8: Premeštanje karakteristika
Premeštanje funkcije
Premeštanje polja
Premeštanje naredbi u funkciju
Premeštanje naredbi u pozivaoce
Zamena ubačenog koda pozivom funkcije
Premeštanje naredbi
Razdvajanje petlje
Zamena petlje serijom operacija
Uklanjanje mrtvog koda

Poglavlje 9: Organizovanje podataka
Razdvajanje promenljive
Preimenovanje polja
Zamena izvedene promenljive upitom
Promena reference u vrednost
Promena vrednosti u referencu

Poglavlje 10: Uprošćavanje uslovne logike
Razlaganje uslovne promenljive
Konsolidovanje uslovnog izraza
Zamena ugneždenih uslovnih promenljivih sa
klauzulama čuvarima
Zamena uslovne promenljive polimorfizmom
Uvođenje specijalnog slučaja
Uvođenje tvrdnje

Poglavlje 11: Refaktorisanje – API
Razdvajanje upita od modifikatora
Parametarizovanje funkcije
Uklanjanje kontrolne zastavice iz argumenta
Čuvanje celog objekta
Zamena parametra upitom
Zamena upita parametrom
Uklanjanje metode za postavljanje vrednosti
Zamena konstruktora sa fabričkom funkcijom
Zamena funkcije komandom
Zamena komande funkcijom

Poglavlje 12: Nasleđivanje
Pomeranje metode nagore
Premeštanje polja nagore
Pomeranje tela konstruktora nagore
Pomeranje metode nadole
Pomeranje polja nadole
Zamena šifre tipa sa potklasama
Uklanjanje potklase
Izdvajanje natklase
Rušenje hijerarhije
Zamena potklase delegatom
Zamena natklase delegatom .
Bibliografija
Indeks