Refaktorálási terv kis lépésekben

Nagy átírás helyett sorba rendezett, egyenként tesztelhető lépések: mit érdemes először rendbe tenni, és mihez ne nyúlj hozzá.

FejlesztésHaladóAjánlott eszközök: ChatGPT, Claude, GeminiFrissítve:

Töltsd ki a saját adataiddal

A sárgával jelölt részeket cseréld a saját adataidra.

Készíts refaktorálási tervet az alábbi kódhoz. A viselkedés nem változhat, és minden lépés után működő állapotban kell maradnia a kódnak. A kód: [KÓD] Mi a baj vele a gyakorlatban: [PROBLÉMA] Van-e teszt, és mennyire megbízható: [TESZTEK] Korlátok (idő, amihez nem nyúlhatok, kódolási szabályok): [KORLÁTOK] A terv: 1. A három legnagyobb gond, fontossági sorrendben, egy-egy mondatos indoklással. 2. Lépések listája. Minden lépés: mit változtatok, miért, hogyan ellenőrzöm, hogy nem romlott el semmi. Egy lépés legyen egyetlen commitnyi. 3. Ha nincs elég teszt: milyen jellemző teszteket írjak a refaktorálás előtt, hogy rögzítsem a mostani viselkedést. 4. Amit most nem érdemes átírni, és miért. Kódot még ne írj, csak a tervet. Ne javasolj új könyvtárat vagy architektúraváltást, ha a megadott probléma anélkül is megoldható.

EllenőrzésCtrl + Enter: másolás

Példa: kitöltve, mintaválasszal

Kód
Egy 320 soros process_order() függvény (PHP 8): validálja a rendelést, kiszámolja a kedvezményt és az áfát, ment az adatbázisba, e-mailt küld és naplóz. Hat szintig egymásba ágyazott if-ek, négy globális változó.
Probléma
Minden új kedvezménytípusnál elromlik valami más, legutóbb az áfaszámítás.
Tesztek
Nincs automatikus teszt, kézzel próbáljuk ki.
Korlátok
Hetente két órám van rá; az adatbázisséma nem változhat.
Mintaválasz (Claude)

1. Fő gondok

  1. Nincs teszt, ezért minden változtatás vakrepülés.
  2. A kedvezmény- és az áfaszámítás össze van keverve a mentéssel és az e-mail-küldéssel, így nem próbálható ki külön.
  3. A globális változók miatt a függvény eredménye a hívás előtti állapottól is függ.

2. Lépések

  1. Jellemző tesztek: 8-10 valós, korábbi rendelés bemenete és a mostani végösszege rögzítve. Ellenőrzés: a tesztek a jelenlegi kódon zöldek.
  2. A kedvezményszámítás kiemelése külön függvénybe, amely nem ment és nem küld semmit. Ellenőrzés: a rögzített végösszegek nem változnak.
  3. Ugyanez az áfaszámítással.
  4. A globális változók átadása paraméterként, egyenként. [...]

4. Most ne: az e-mail-küldés és a naplózás átírása. Nem ezek okozzák a hibákat, és a heti két órádat elvinnék.

Szemléltető minta, Claude segítségével készült: azt mutatja, milyen jellegű és felépítésű válaszra számíthatsz. A többi ajánlott eszközzel a prompt várhatóan ugyanígy használható, de nem mindegyikben próbáltuk ki. A te eredményed más lesz. Hogyan készülnek a példák?

Miért működik?

A modellek alapból szívesen írnak át mindent egyszerre, szebben. Ez a prompt megtiltja a kódírást, és commitnyi lépéseket kér, ezért olyan tervet kapsz, amelyet félbe lehet hagyni, és a kód közben is működik.

A tesztekre vonatkozó mező dönti el az első lépést: teszt nélkül a refaktorálás előtt rögzíteni kell a jelenlegi viselkedést.

Mire figyelj?

  • Ha csak leírást adsz a kódról, a terv általánosabb lesz. A legjobb, ha a tényleges kódot adod be, titkos adatok nélkül.
  • A terv sorrendje vitatható. Ha a csapatodnak más a legfájóbb pont, írd be a probléma mezőbe, és kérd újra.

Folytasd ezekkel

Ugyanabban a beszélgetésben küldd el, a válasz után.

  • Írd meg az első lépés jellemző tesztjeit PHPUnitban.
  • Mutasd meg a második lépést kóddal, előtte és utána állapotban.

Kapcsolódó promptok

Összes fejlesztés prompt

Funkció specifikálása kódolás előtt

Mielőtt kódot kérnél az AI-tól, írasd meg vele a tervet. A prompt kérdésekkel tisztázza az ötletedet, majd rövid specifikációt készít elfogadási feltételekkel.

Fejlesztés

Kódátnézés beküldés előtt

Tapasztalt kollégaként nézi át a módosításodat: hibák és biztonsági gondok súlyosság szerint, konkrét sorral és javítási javaslattal, ízlésbeli szőrszálhasogatás nélkül.

Fejlesztés