"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 |
---|---|
|
|
"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:"

"Adjon meg egy új nevet:"

"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:"
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());
}
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.

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

"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.

"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:

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

"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.

"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."
GO TO FULL VERSION