"Halo maneh."

"Halo!"

"Dina iki aku arep ngomong babagan refactoring. Refactoring ngganti kode ing proyek tanpa ngganti fungsine."

"Nanging kepiye carane bisa?"

"Inggih, ing kasus sing paling gampang, kita bisa ngganti jeneng variabel lan / utawa metode. Sawise kabeh, ngganti jeneng variabel ora bakal nggawe program bisa beda, ora?"

"Mesthi ora."

"Sampeyan uga bisa ngilangi cara gedhe dadi sawetara sing luwih cilik. "

"Sampeyan bisa narik potongan kode bola-bali menyang cara sing kapisah. "

"Sawetara fungsi bisa diumumake statis lan banjur dipindhah menyang kelas sarana."

"Nanging iki minangka interpretasi sempit babagan refactoring."

"Refactoring kadhangkala tegese rewriting (ngapikake) arsitektur project tanpa nambah fungsi anyar. Iki refactoring ing pangertèn sing godhongé amba saka istilah."

"IntelliJ IDEA dadi lingkungan pangembangan terintegrasi (IDE) sing paling populer amarga iku sing pisanan ngenalake alat refactoring sing kuat banget."

"Apa alat gaib iki?"

Trik sulap # 1: Ngganti jeneng metode.

"Mbayangno kode sampeyan duwe cara sing diarani saka 100-500 macem-macem panggonan. Sampeyan wis mutusaké kanggo ngganti jeneng menyang soko liyane dingerteni. Ayo dadi ngomong iku mbukak (), lan sampeyan pengin runDownloadTaskAsync (). Carane cepet sampeyan bisa nindakake iku?"

"Inggih, sampeyan kudu ngganti jeneng metode kasebut, banjur golek kabeh panggonan ing program sing diarani metode kasebut, lan ganti jeneng ing kana."

"Lan kepiye sampeyan nemokake papan kasebut?"

"Aku mung mbukak program kasebut lan IntelliJ IDEA bakal nuduhake kabeh panggonan sing diarani metode sing ora ana."

"Oke. Nanging saiki umpamane saben metode duwe komentar panjelasan (JavaDoc) sing nerangake apa metode kasebut - lan jeneng metode lawas ditulis ing kana."

"Aku uga bakal ngganti komentar."

"Nanging bisa uga ana variabel sing jenenge digandhengake karo jeneng metode. Iku uga apik kanggo ngganti uga:"

sadurunge Sawise
Task task = manager.run();
Task asyncTask = manager.runDownloadTaskAsync();

"Ya, luwih becik ngganti jeneng variabel kasebut. Ora bakal lara."

"Inggih, kabeh iki bisa rampung mung sawetara detik nggunakake IntelliJ IDEA!"

"Sampeyan nyelehake kursor ing jeneng metode (utawa klik nganggo mouse), banjur pencet Shift + F6 lan mung miwiti ngetik jeneng metode sing dikarepake."

"Iki conto nyunting jeneng metode."

"Miwiti nyunting:"

IDEA: refactoring - 1

"Temtokake jeneng anyar:"

IDEA: refactoring - 2

"Mung ketik jeneng anyar, penet enter, lan iku. Cara iki bakal diganti jeneng nang endi wae disebut ing project."

"IntelliJ IDEA uga biasane takon yen sampeyan pengin ngganti jeneng variabel lan jeneng metode ing komentar. Cukup klik 'Ya' lan bakal ngganti kabeh."

"Apa maneh, yen proyek kasebut disusun sadurunge operasi refactoring iki, mesthine bakal dikompilasi sawise refactoring."

"Swara banget janji."

"Oalah, sampeyan bisa ngganti jeneng variabel kanthi cara sing padha. Sawise ngeklik jeneng, mung pencet Shift + F6 - Sampeyan banjur bisa ngetik jeneng anyar, lan IntelliJ bakal ngganti jeneng variabel ing ngendi wae digunakake. "

"Yen variabel minangka lapangan ing kelas lan nduweni getter lan setter, banjur jeneng getter lan setter uga bakal diganti supaya cocog karo jeneng anyar variabel."

"Aku nyoba nggunakake variabel. Kabeh bisa kaya sing sampeyan ucapake, Ellie. Refactoring apik tenan!"

"Apa sampeyan mikir mung ana kanggo refactoring? Refractoring minangka topik sing wiyar - kita ora malah ngeruk permukaan."

"Wah. Ana apa maneh?"

Trik sulap # 2: Ekstrak variabel.

"Kadhangkala ekspresi tartamtu diulang kanthi asring ing kode sing sampeyan pengin mindhah menyang variabel sing kapisah. Contone:"

Kode
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());
}
Carane sampeyan pengin katon:
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."

"Lan kode bisa dadi luwih rumit, kanthi akeh bagean sing bola-bali."

"Programer ora nulis kanthi cara kasebut kanthi sengaja. Nanging sampeyan kerep kudu nambahake cara, banjur liya - lan liwat wektu, jumlah repetisi liwat atap."

"Kanthi nggawe variabel sing kapisah, kita bisa menehi jeneng sing tepat lan nambah keterbacaan kode kasebut."

"Contone, ing conto ing ndhuwur, mbok menawa kita ora ngomong babagan alamat omah. Mungkin kita ngomong babagan alamat kontak darurat. Banjur sampeyan bisa nelpon emergencyContactAddress variabel iki, tinimbang mung alamat. Banjur, programmer ndeleng kode iki kanggo pisanan bakal ngerti apa sing kedadeyan ing kene."

"Ya, aku setuju. Nambahake variabel kaya ngono."

"Dadi, kepiye carane?"

"Ngalih ekspresi menyang variabel sing kapisah gampang banget."

Langkah 1: Gunakake mouse kanggo milih ekspresi.

IDEA: refactoring - 3

Langkah 2: Pencet Ctrl + Alt + V

IDEA: refactoring - 4

"Jendhela mbukak ing ngendi IntelliJ IDEA takon apa kita pengin ngganti mung ekspresi sing dipilih utawa kabeh conto ekspresi (4 kedadeyan)?"

"Pilih opsi kapindho kanggo ngganti kabeh kedadeyan (Ganti kabeh 4 kedadeyan)"

Langkah 3: Pencet Enter.

IDEA: refactoring - 5

"IntelliJ IDEA bakal njaluk sampeyan ngetik jeneng variabel. Iku uga bakal menehi saran dhewe kanggo jeneng kasebut. Ora ala, eh?"

"Uh-huh. Tengen. Kita uga ngrancang jeneng variabel 'alamat'. Kepiye carane ngerti?"

"Kanthi nggunakake jeneng metode pungkasan ing ekspresi, sing ngasilake alamat. Mangkono, kemungkinan variabel kasebut bakal digunakake kanggo nyimpen alamat."

"Sing bisa metu tenan apik. Barang apik, Ellie."

Magic trick #3: Extract kode menyang cara kapisah.

"Nanging kita bisa nindakake liyane. Kita bisa ngumumake cara anyar, contone printAddress (), lan mindhah kabeh kode iki menyang."

"Ayo coba nglakoni."

Langkah 1: Pilih 4 baris kode sing nggunakake variabel alamat:

IDEA: refactoring - 6

Langkah 2: pencet Ctrl + Alt + M

IDEA: refactoring - 7

"IntelliJ IDEA nemtokake kang variabel cara bakal perlu, lan tabet apa kudu katon kaya. "Ing bab mung kanggo ngetik jeneng kanggo cara."

Langkah 3: Ketik printAddress minangka jeneng metode banjur pencet Ketik.

IDEA: refactoring - 8

"Kok senenge ngono?"

"Iku apik tenan. Ora mung IntelliJ IDEA extract kode menyang cara kapisah, uga nambah kabeh variabel sing dibutuhake. Apa maneh, iku guessed kabeh jeneng bener."