Káosz és kód

Mostanában olvasom James Gleick: Káosz című könyvét. Érdekes gondolatokat ébreszt az emberben.

A káosz természetesen, mint káoszelmélet szerepel a könyvben és az írásomban is. Csakhogy a káosz egy (eléggé elcsépelt) hétköznapi szavunk és (sajnos) elég gyakran találkozunk vele a napi rutin során. Azonban ha úgy fogalmazunk, hogy érzékenység a kiinduló feltételekre, akkor érdekes következtetésekre juthatunk.

Az itt következő leírás feltételezi, hogy legacy kódról beszélünk:

  • unit és/vagy end-to-end test suite teljes vagy részleges hiánya.
  • metrikák hiánya

És akkor a következtetések:

  1. Eddig tapasztalatom alapján a legkisebb változtatások a kódban (értsd 1-2 sor, de még inkább kevesebb, mint 10 karakter) okozhatják a legnagyobb bonyodalmat a rendszerben. Ez lehet akár elég alattomos rejtett hiba bevezetése vagy a kód komplexitása miatti, már beláthatatlan következményeket előidéző változtatás. Sok embernél láttam, magam is tapasztaltam.
    Ez eléggé ellentmondani látszik általános (lineáris) világfelfogásunkkal, azzal ahogy a kódot látjuk.
  2. Ennek azonban van egy másik oldala. A “változás” nem mindig azonnal észlelhető, sőt lehet, hogy nem is észlelhető igazán. Tehát meglátásom szerint a legbrutálisabb shotgun surgery sem feltétlen jár látható fájdalommal, nem feltétlenül áll meg tőle az élet, hiába a rossz design és/vagy a védőháló (test suite) hiánya.

A fentiek következménye az a jelenség, hogy egy fejlesztő egy sok osztályon, fileon átívelő átalakítás után kommitolt kódja akár jobb állapotba hozza a kódot (bár adott esetben ezt szinte semmivel sem tudja alátámasztani előre). Később pedig ugyanez a fejlesztő egy egysoros módosítással a feje tetejére állítja a világot (és ebben az esetben sem tudja semmivel alátámasztani előre a módosítás hatását).

Innen nézve a kód sokszor kaotikus, megjósolhatatlan viselkedést mutat. Úgy gondolom, hogy ezt elsősorban a metrikák hiánya okozza. Ha nem látható, hogy egy módosítás milyen komplexitást vezet be (ne adj isten vezet ki) a rendszerbe, ha semmilyen metrika nem ad segítséget, hogy felismerjük az éppen bevezetett/használt design buktatóit/hibáit, ha nem biztosítanak a tesztek védőhálót, akkor a kód viselkedése a jövőben is egy előre meg nem jósolható tényező lesz az életünkben.

Vélemény?

Kategória: gondolatok
Címke: ,
Közvetlen link a könyvjelzőhöz.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s