Hotspot v kóde (code hotspot) je miesto v systéme, kde sa prekrýva intenzita údržby s rizikom v kóde. Môže ísť o súbor, modul alebo službu, ktorá sa mení často a zároveň je zložitá, náchylná na chyby alebo ťažko testovateľná. Analýza hotspotov pomáha auditu sústrediť sa na kód, ktorý je náročný a zároveň sa ho s veľkou pravdepodobnosťou opäť dotknete.
Ako sa hotspot identifikuje
Zmenovú stránku analýzy dodáva história verzovacieho systému. Ukáže, ktoré súbory dostávajú opakované commity, ktoré komponenty sa menia spolu a kde sa opravy vracajú. Rizikovú stránku dodáva statická analýza a code review: identifikujú zložitosť, duplicitu, nejasné hranice alebo chýbajúce testy.
Ani jeden signál sám osebe nestačí. Zložitý kód, ktorý je roky stabilný, si nemusí zaslúžiť okamžitú prácu. Často menený kód môže byť naopak prehľadný a dobre chránený. Hotspot vzniká až tam, kde sa stretne tlak na zmeny s náročnosťou údržby.
| Kombinácia signálov | Pravdepodobný význam | Reakcia auditu |
|---|---|---|
| Veľa zmien, nízka zložitosť | Aktívny, ale zvládnuteľný kód | Overiť testy a vlastníctvo |
| Málo zmien, vysoká zložitosť | Náročný, no zatiaľ stabilný kód | Zdokumentovať a sledovať |
| Veľa zmien, vysoká zložitosť | Hotspot v kóde | Preskúmať pred ďalšou zmenou |
| Opakované opravy v jednej oblasti | Možné nestabilné správanie alebo zle položená hranica | Vystopovať príčiny a dotknutých volajúcich |
Čo hotspoty prezrádzajú o legacy systéme
Hotspoty často odhalia, kde sa nahromadili biznis pravidlá. Centrálny workflow priťahuje časté zmeny, pretože na ňom stojí biznis, no roky pridávania robia jeho štruktúru ťažšie čitateľnou. Rovnako dokážu odhaliť slabé hranice medzi modulmi, keď si jedna požiadavka opakovane vyžiada úpravy v mnohých súboroch.
Práve preto je analýza hotspotov užitočná počas auditu legacy codebase. Zúži veľký repozitár na menší počet oblastí, ktoré si zaslúžia pozorné prečítanie. Výsledkom je prioritizovaná mapa, nie tvrdenie, že každý často menený súbor je chybný.
Ako hotspoty usmerňujú refactoring
Úsilie venované refactoringu by malo sledovať dôkazy o budúcich zmenách. Dáta o hotspotoch túto úvahu podporujú tým, že ukážu, kde náročný kód naďalej dostáva prácu. Pred zmenou hotspotu môže tím urobiť toto:
- Zaznamenať súčasné správanie. Doplniť kontroly okolo ciest, ktoré musia zostať stabilné.
- Vystopovať závislé časti. Identifikovať volajúcich, toky dát a prevádzkové úlohy, ktoré ho používajú.
- Zmenšiť plochu zmeny. Oddeliť jednu zodpovednosť alebo zaviesť jasné rozhranie.
- Skontrolovať výsledok po zmene. Overiť, či sa ďalšia práca už nerozlieva cez tú istú oblasť.
Ako hotspoty zapadajú do širšieho auditu
Hotspot sám osebe nemeria biznisovú dôležitosť. Frekvencia commitov môže odrážať dočasný projekt, generované súbory alebo rutinné úpravy konfigurácie. Audit potrebuje kontext od ľudí, ktorí systém udržiavajú, a záznamy o nasadeniach, než pridelí prioritu.
Analýza hotspotov je užitočnejšia v kombinácii s technickým dlhom, dôkazmi z testov a architektonickým review. Spoločne odlíšia kód, ktorý len vyzerá staro, od kódu, ktorý reálne zvyšuje cenu zmeny. Tento rozdiel je dôležitý pri plánovaní migrácie legacy systému, pretože najviditeľnejší modul nie je vždy najlepším miestom, kde začať.