Célja a kód átdolgozása, ésszerűsítése. 
A folyamat használja a tesztlefedettség elemzést. Ami feltételezi, hogy a refaktorálás előtt rendelkezzünk mindent lefedő teszttel.
A code coverage elemző elérhető mind az Eclipse-ben mind a InteliJ-ben, de gondolom minden IDE-ben. Illetve létezik önálló készlet is. Jávához például a JaCoCo.
Az eljárás lépései:
  • A vizsgálandó kódrészlet kiemelése. Akkor is, ha ezzel az vizsgálandó metódus kiürül.
  • Az első felhozandó feltétellel (lift up condition) létre kell hozni egy if/else blokkot, melynek mindkét ágában meghívásra kerül az előző lépésben kiemelt metódus 
  • A feltétel mindkét ágába visszakerül a korábban kiemelt metódus tartalma. Így mindkét ág redundánsan tartalmazza az átdolgozandó kódot. A kiemelt majd visszaillesztett metódust meg kell szüntetni.
  • A lefedettség vizsgálat segítségével meg kell szüntetni a mindig hamis ágakat. Illetve egyszerűsíteni kell a mindig igaz ágakat. Közben a meglévő tesztekkel rendszeresen ellenőrizni kell, hogy a kód helyes maradt e.
  • Ennek eredményeként az első igaz ágban a csak feltételt kezelő kód marad. Ezt ki kell emelni metódusba.
  • A hamis ágban maradt kóddal el kell végezni a fenti folyamatot.

Az eljárás végén az átdolgozandó metódus az elsődleges feltételek vizsgálatait és az azokhoz tartozó feldolgozó metódusok hívását fogja tartalmazni.

Persze szükség lehet az így létrejött feldolgozó metódusok hasonló refaktorálására. 
Két videót ajánlok Gregor Riegler: Lift Up Conditional Refactoring és Emily Banche: Refactoring item logic using ‘lift up conditional'. Mindkét videó azonos példakódot használ, a GildedRose katát.

A bejegyzés trackback címe:

https://pharsan.blog.hu/api/trackback/id/tr618006752

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása