"हॅलो पुन्हा."

"हाय!"

"आज मी तुम्हाला रिफॅक्टरिंगबद्दल सांगणार आहे. रिफॅक्टरिंग म्हणजे प्रोजेक्टमधील कोडची कार्यक्षमता न बदलता बदलणे."

"पण ते कसं शक्य आहे?"

"ठीक आहे, अगदी सोप्या प्रकरणांमध्ये, आम्ही व्हेरिएबल्स आणि/किंवा पद्धतींचे नाव बदलू शकतो. शेवटी, व्हेरिएबलचे नाव बदलल्याने प्रोग्राम वेगळ्या पद्धतीने कार्य करणार नाही, होईल का?"

"नक्कीच नाही."

"तुम्ही मोठ्या पद्धतींना अनेक छोट्या पद्धतींमध्ये मोडू शकता. "

"तुम्ही वारंवार कोड स्निपेट्स एका वेगळ्या पद्धतीमध्ये खेचू शकता. "

"काही फंक्शन्स स्थिर घोषित केल्या जाऊ शकतात आणि नंतर युटिलिटी क्लासेसमध्ये हलवल्या जाऊ शकतात."

"परंतु ही रिफॅक्टरिंगची एक संकुचित व्याख्या आहे."

"कधीकधी रिफॅक्टरिंग म्हणजे नवीन कार्यक्षमता न जोडता प्रकल्पाच्या आर्किटेक्चरचे पुनर्लेखन (सुधारणा) करणे. हे शब्दाच्या व्यापक अर्थाने रिफॅक्टरिंग आहे."

"IntelliJ IDEA हे सर्वात लोकप्रिय इंटिग्रेटेड डेव्हलपमेंट एन्व्हायर्नमेंट (IDE) बनले आहे कारण ते सर्वात शक्तिशाली रिफॅक्टरिंग टूल्स सादर करणारे पहिले होते."

"ही जादूची साधने काय आहेत?"

जादूची युक्ती #1: पद्धतीचे नाव बदला.

"कल्पना करा की तुमच्या कोडमध्ये 100-500 वेगवेगळ्या ठिकाणांहून कॉल केलेली पद्धत आहे. तुम्ही त्याचे नाव अधिक समजण्यायोग्य असे बदलण्याचे ठरवले आहे. समजा ते run(), आणि तुम्हाला ते runDownloadTaskAsync() करायचे आहे. किती लवकर तू ते करू शकतोस का?"

"ठीक आहे, आधी तुम्हाला पद्धतीचे नाव बदलण्याची गरज आहे, नंतर ती पद्धत कॉल केलेल्या प्रोग्राममधील सर्व ठिकाणे शोधा आणि तेथे नाव देखील बदला."

"आणि तुम्हाला ती ठिकाणे कशी सापडतील?"

"मी फक्त प्रोग्राम चालवू आणि IntelliJ IDEA मला ती सर्व ठिकाणे दाखवेल जिथे अस्तित्वात नसलेली पद्धत म्हणतात."

"ठीक आहे. पण आता समजा की प्रत्येक पद्धतीची स्पष्टीकरणात्मक टिप्पणी (JavaDoc) आहे जी पद्धत काय करते हे स्पष्ट करते — आणि तेथे जुन्या पद्धतीचे नाव लिहिले आहे."

"मी देखील टिप्पण्या बदलेन."

"परंतु असे व्हेरिएबल्स देखील असू शकतात ज्यांची नावे पद्धतीच्या नावाशी संबंधित आहेत. ते देखील बदलणे चांगले होईल:"

आधी नंतर
Task task = manager.run();
Task asyncTask = manager.runDownloadTaskAsync();

"हो, त्या व्हेरिएबल्सचीही नावे बदलली तर बरे होईल. त्रास होणार नाही."

"बरं, हे सर्व इंटेलिज आयडिया वापरून काही सेकंदात करता येते!"

"तुम्ही पद्धतीच्या नावावर कर्सर ठेवा (किंवा माउसने क्लिक करा), आणि नंतर Shift+F6 दाबा आणि फक्त इच्छित पद्धतीचे नाव टाइप करणे सुरू करा."

"पद्धतीचे नाव संपादित करण्याचे येथे एक उदाहरण आहे."

"संपादन सुरू करा:"

आयडिया: रिफॅक्टरिंग - १

"नवीन नाव निर्दिष्ट करा:"

IDEA: रिफॅक्टरिंग - 2

"फक्त एक नवीन नाव प्रविष्ट करा, एंटर दाबा, आणि तेच आहे. या पद्धतीला प्रकल्पात जिथे म्हटले जाईल तिथे पुनर्नामित केले जाईल."

"IntelliJ IDEA देखील सहसा विचारते की तुम्हाला व्हेरिएबलची नावे आणि पद्धतीची नावे बदलायची आहेत का.

"अधिक काय, जर या रिफॅक्टरिंग ऑपरेशनपूर्वी प्रकल्प संकलित केला असेल, तर रिफॅक्टरिंगनंतर संकलित करण्याची हमी आहे."

"खूप आशादायक वाटतंय."

"तसे, तुम्ही व्हेरिएबलची नावे त्याच प्रकारे बदलू शकता. नावावर क्लिक केल्यानंतर, फक्त Shift+F6 दाबा — त्यानंतर तुम्ही एक नवीन नाव टाकू शकता, आणि IntelliJ व्हेरिएबलचे नाव जेथे वापरले जाईल तेथे बदलेल. "

"जर व्हेरिएबल हे वर्गातील फील्ड असेल आणि त्यात गेटर आणि सेटर असेल, तर व्हेरिएबलच्या नवीन नावाशी जुळण्यासाठी गेटर आणि सेटरची नावे देखील बदलली जातील."

"मी व्हेरिएबल्स वापरून प्रयत्न केला. एली, तू म्हणालास तसे सर्व काही कार्य करते. रिफॅक्टरिंग छान आहे!"

"तुम्हाला असे वाटते का की रिफॅक्टरिंगसाठी इतकेच आहे? रिफ्रॅक्टरिंग हा इतका विस्तृत विषय आहे - आम्ही पृष्ठभागावर स्क्रॅच केलेले नाही."

"व्वा. अजून काय आहे?"

जादूची युक्ती #2: व्हेरिएबल काढा.

"कधीकधी काही विशिष्ट अभिव्यक्ती कोडमध्ये इतक्या वेळा पुनरावृत्ती केल्या जातात की तुम्ही त्यांना वेगळ्या व्हेरिएबलमध्ये हलवू इच्छित असाल. उदाहरणार्थ:"

कोड
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());
}

"आह."

"आणि कोड अधिक क्लिष्ट असू शकतो, पुष्कळ पुनरावृत्ती भागांसह."

"प्रोग्रामर हे जाणूनबुजून असे लिहित नाहीत. परंतु तुम्हाला बर्‍याचदा एखाद्या पद्धतीमध्ये काहीतरी जोडावे लागेल, नंतर दुसरे काहीतरी - आणि कालांतराने पुनरावृत्तीची संख्या छतावरून जाते."

"एक वेगळे व्हेरिएबल तयार करून, आम्ही त्याला एक योग्य नाव देऊ शकतो आणि कोडची वाचनीयता सुधारू शकतो."

"उदाहरणार्थ, वरील उदाहरणात, कदाचित आम्ही घराच्या पत्त्याबद्दल बोलत नाही आहोत. कदाचित आम्ही आपत्कालीन संपर्काच्या पत्त्याबद्दल बोलत आहोत. मग तुम्ही फक्त पत्त्याऐवजी या व्हेरिएबल आपत्कालीन संपर्क पत्त्यावर कॉल करू शकता. नंतर, प्रोग्रामर हा कोड पहिल्यांदा पाहिल्यावर समजेल की इथे काय चालले आहे."

"हो, मी सहमत आहे. असे व्हेरिएबल्स जोडणे अर्थपूर्ण आहे."

"मग, तुम्ही ते कसे करता?"

"विभक्त व्हेरिएबलमध्ये अभिव्यक्ती हलवणे खूप सोपे आहे."

पायरी 1: अभिव्यक्ती निवडण्यासाठी माउस वापरा.

IDEA: रिफॅक्टरिंग - 3

पायरी 2: Ctrl+Alt+V दाबा

IDEA: रिफॅक्टरिंग - 4

"एक विंडो उघडते जिथे IntelliJ IDEA आम्हाला विचारते की आम्हाला फक्त निवडलेल्या अभिव्यक्ती किंवा अभिव्यक्तीच्या सर्व घटना (4 घटना) बदलायच्या आहेत का?"

"सर्व घटना बदलण्यासाठी दुसरा पर्याय निवडा (सर्व 4 घटना बदला)"

पायरी 3: एंटर दाबा.

IDEA: रिफॅक्टरिंग - 5

"IntelliJ IDEA तुम्हाला व्हेरिएबलचे नाव टाकण्यास सांगेल. ते नावासाठी स्वतःची सूचना देखील करेल. वाईट नाही, अहं?"

"उह-हह. बरोबर. आम्ही व्हेरिएबल 'पत्ता' नाव देण्याचे ठरवत होतो. हे कसे कळले?"

"अभिव्यक्तीमधील शेवटच्या पद्धतीचे नाव वापरून, जो पत्ता परत करतो. अशा प्रकारे, व्हेरिएबल पत्ता संचयित करण्यासाठी वापरला जाण्याची शक्यता आहे."

"ते खरोखर चांगले काम केले. छान सामग्री, एली."

जादूची युक्ती #3: वेगळ्या पद्धतीने कोड काढा.

"परंतु आम्ही काहीतरी वेगळे करू शकलो असतो. आम्ही एक नवीन पद्धत घोषित करू शकलो असतो, उदा. printAddress (), आणि हे सर्व कोड त्यात हलवले असते."

"चला ते करण्याचा प्रयत्न करूया."

पायरी 1: कोडच्या 4 ओळी निवडा ज्या अॅड्रेस व्हेरिएबल वापरतात:

IDEA: रिफॅक्टरिंग - 6

पायरी 2: Ctrl+Alt+M दाबा

IDEA: रिफॅक्टरिंग - 7

"IntelliJ IDEA पद्धतीला कोणत्या व्हेरिएबल्सची आवश्यकता असेल ते ठरवते आणि ते कसे दिसावे ते सुचवते. "पद्धतीसाठी नाव टाकणे बाकी आहे."

पायरी 3: पद्धतीचे नाव म्हणून printAddress एंटर करा आणि Enter दाबा.

IDEA: रिफॅक्टरिंग - 8

"तुला ते कसे आवडते?"

"हे अप्रतिम आहे. IntelliJ IDEA ने कोड वेगळ्या पद्धतीने काढला नाही तर सर्व आवश्यक व्हेरिएबल्स देखील जोडले आहेत. इतकेच काय, त्याने सर्व नावांचा अचूक अंदाज लावला आहे."