"Szia ismét."

"Szia!"

"Ma az újrafaktorálásról fogok beszélni. Az újrafaktorálás a kód megváltoztatása egy projektben anélkül, hogy megváltoztatná a funkcionalitását."

– De hogyan lehetséges ez?

"Nos, a legegyszerűbb esetekben átnevezhetnénk a változókat és/vagy a metódusokat. Végül is a változó nevének megváltoztatása nem fogja másképp működni a programban, ugye?"

"Természetesen nem."

" A nagy módszereket több kisebbre is feloszthatja. "

" Az ismétlődő kódrészleteket külön metódusba vonhatja . "

"Egyes függvények statikussá nyilváníthatók, majd áthelyezhetők a segédprogramok osztályaiba."

"De ez a refaktorálás szűk értelmezése."

"Az átalakítás néha azt jelenti, hogy átírják (javítják) egy projekt architektúráját anélkül, hogy új funkcionalitást adnának hozzá. Ez a kifejezés tágabb értelemben vett átalakítása."

"Az IntelliJ IDEA kifejezetten azért lett a legnépszerűbb integrált fejlesztőkörnyezet (IDE), mert ez volt az első, amely nagyon hatékony refaktoráló eszközöket vezetett be."

– Mik ezek a mágikus eszközök?

Varázstrükk #1: Változtassa meg a metódus nevét.

"Képzeld el, hogy a kódodban van egy metódus, amelyet 100-500 különböző helyről hívnak meg. Úgy döntöttél, hogy valami érthetőbbre változtatod a nevét. Tegyük fel, hogy run(), és azt szeretnéd, hogy a futtatásDownloadTaskAsync() legyen. Milyen gyorsan meg tudod csinálni?"

"Nos, először meg kell változtatni a metódus nevét, majd meg kell keresni a programban az összes helyet, ahol a metódus meghívva van, és ott is módosítani kell a nevet."

– És hogyan találná meg azokat a helyeket?

"Csak futtatnám a programot, és az IntelliJ IDEA megmutatná az összes helyet, ahol egy nem létező metódust hívnak."

"Rendben. De most tegyük fel, hogy minden metódushoz tartozik egy magyarázó megjegyzés (JavaDoc), amely elmagyarázza a metódus működését – és oda van írva a régi metódusnév."

– A megjegyzéseken is változtatnék.

"De előfordulhatnak olyan változók is, amelyek neve a metódus nevéhez kapcsolódik. Jó lenne ezeket is megváltoztatni:"

Előtt Után
Task task = manager.run();
Task asyncTask = manager.runDownloadTaskAsync();

"Igen, jó lenne megváltoztatni azoknak a változóknak a nevét is. Nem ártana."

"Nos, mindez néhány másodperc alatt elvégezhető az IntelliJ IDEA segítségével!"

"Vigye a kurzort a metódus nevére (vagy kattintson rá az egérrel), majd nyomja meg a Shift+F6 billentyűket, és egyszerűen elkezdje beírni a kívánt metódus nevét."

"Íme egy példa a metódusnév szerkesztésére."

"Szerkesztés indítása:"

ÖTLET: refaktorálás - 1

"Adjon meg egy új nevet:"

ÖTLET: refaktorálás - 2

"Egyszerűen írjon be egy új nevet, nyomja meg az entert, és kész. Ez a metódus mindenhol át lesz nevezve a projektben."

"Az IntelliJ IDEA általában azt is megkérdezi, hogy át szeretné-e nevezni a változóneveket és a metódusneveket a megjegyzésekben. Csak kattintson az "Igen" gombra, és minden megváltozik."

"Sőt, ha a projekt az átalakítás előtt készült, akkor garantáltan az átalakítás után is összeáll."

– Nagyon ígéretesen hangzik.

"Egyébként a változóneveket ugyanúgy módosíthatja. Miután rákattintott egy névre, egyszerűen nyomja meg a Shift+F6 billentyűkombinációt – ezután megadhat egy új nevet, és az IntelliJ megváltoztatja a változó nevét, bárhol is használják. "

"Ha a változó egy mező egy osztályban, és van egy getter és egy setter, akkor a getter és a setter neve is megváltozik, hogy megfeleljen a változó új nevének."

"Kipróbáltam változók segítségével. Minden úgy működik, ahogy mondtad, Ellie. A refaktorálás fantasztikus!"

"Azt hiszed, hogy csak ennyi az átalakítás?

"Wow. Mi van még?"

Varázstrükk #2: Változó kibontása.

"Néha bizonyos kifejezések olyan gyakran ismétlődnek a kódban, hogy érdemes áthelyezni őket egy külön változóba. Például:"

Kód
public void printInfo(User user)
{
 System.out.println(user.getProfile().getName());
 System.out.println(user.getProfile().getAddress().getState());
 System.out.println(user.getProfile().getAddress().getCity());
 System.out.println(user.getProfile().getAddress().getStreet());
 System.out.println(user.getProfile().getAddress().getHomeNumber());
}
Így szeretnéd kinézni:
public void printInfo(User user)
{
 Address address = user.getProfile().getAddress();

 System.out.println(user.getProfile().getName());
 System.out.println(address.getState());
 System.out.println(address.getCity());
 System.out.println(address.getStreet());
 System.out.println(address.getHomeNumber());
}

– Ah.

"És a kód sokkal bonyolultabb lehet, sok ismétlődő részből áll."

"A programozók nem szándékosan írják így. De gyakran hozzá kell adni valamit egy módszerhez, majd valami mást – és idővel az ismétlések száma túlmegy."

"Egy külön változó létrehozásával megfelelő nevet adhatunk neki, és javíthatjuk a kód olvashatóságát."

"Például a fenti példában talán nem otthoni címről beszélünk. Lehet, hogy egy vészhelyzeti kapcsolattartó címéről beszélünk. Akkor hívhatja ezt a változót alarmContactAddress a cím helyett. Ezután egy programozó Ha először látja ezt a kódot, megérti, mi folyik itt."

"Igen, egyetértek. Az ilyen változók hozzáadásának van értelme."

– Szóval, hogyan csinálod?

"Egy kifejezés áthelyezése külön változóba nagyon egyszerű."

1. lépés: Használja az egeret a kifejezés kiválasztásához.

ÖTLET: refaktorálás - 3

2. lépés: Nyomja meg a Ctrl+Alt+V billentyűkombinációt

ÖTLET: refaktorálás - 4

"Megnyílik egy ablak, ahol az IntelliJ IDEA megkérdezi, hogy csak a kiválasztott kifejezést akarjuk-e lecserélni, vagy a kifejezés összes példányát (4 előfordulás)?"

"Az összes előfordulás cseréjéhez válassza a második lehetőséget (mind a 4 előfordulás cseréje)"

3. lépés: Nyomja meg az Enter billentyűt.

ÖTLET: refaktorálás - 5

"Az IntelliJ IDEA felkéri, hogy írjon be egy változónevet. A névre is javaslatot tesz. Nem rossz, mi?"

"U-huh. Pontosan. Azt is terveztük, hogy elnevezzük az "cím" változót. Honnan tudta?

"Az utolsó metódus nevének használatával a kifejezésben, amely egy címet ad vissza. Így valószínű, hogy a változót egy cím tárolására fogják használni."

– Ez nagyon jól sikerült. Remek dolog, Ellie.

3. varázstrükk: Vonja ki a kódot egy külön módszerbe.

"De tehettünk volna mást is. Deklarálhattunk volna egy új metódust, pl. printAddress (), és áthelyezhettük volna abba a kódot."

– Próbáljuk meg csinálni.

1. lépés: Válassza ki a 4 kódsort, amelyek a címváltozót használják:

ÖTLET: refaktorálás - 6

2. lépés: nyomja meg a Ctrl+Alt+M billentyűkombinációt

ÖTLET: refaktorálás - 7

"Az IntelliJ IDEA meghatározza, hogy mely változókra lesz szüksége a metódusnak, és javaslatot tesz arra, hogy hogyan nézzen ki. "Csak a metódus nevét kell megadni."

3. lépés: Írja be a printAddress-et metódusnévként, majd nyomja meg az Enter billentyűt.

ÖTLET: refaktorálás - 8

"Hogy tetszik?"

"Nagyszerű. Az IntelliJ IDEA nemcsak a kódot külön módszerré bontotta ki, hanem az összes szükséges változót is hozzáadta. Ráadásul az összes nevet helyesen találta ki."