"हाय, अमिगो! आज मी तुम्हाला कोड स्टाइल आणि कोड स्टाइलचे महत्त्व सांगणार आहे."

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

"समजा तुम्ही आणि इतर 10 प्रोग्रामर एक अर्ज लिहित आहात. तुम्ही अर्जावर तीन वर्षे काम करता, दर तीन महिन्यांनी इंटरमीडिएट रिलीझसह."

"एवढा वेळ?"

"हा जावा आहे, माझा तरुण तृणदांड!" डझनभर सर्व्हरवर चालणारी आणि 6 वर्षांहून अधिक काळ 100 लोकांनी लिहिलेली एंटरप्राइझ प्रणाली कशी आहे? असंही कधी कधी घडतं."

"व्वा."

"तरीही, मुख्य नियम, कोडची मुख्य आवश्यकता ही आहे की ते इतर विकसकांना वाचणे सोपे असले पाहिजे."

"इतर प्रोग्रामिंग भाषांमध्ये, लोक सहसा लहान कार्यांवर लहान संघ म्हणून काम करतात, म्हणून त्यांच्याकडे दुसरा मुख्य नियम असू शकतो, जसे की 'हे कार्य करते? उत्कृष्ट'."

"दोन वर्षांच्या कालावधीत, तुमचे सर्व कार्यसंघ सदस्य तुम्ही लिहिलेल्या कोडमध्ये अनेक बदल करतील. आणि प्रत्येक वेळी त्यांना कोड कसे कार्य करते हे समजून घ्यावे लागेल."

"आणि न समजणारा कोड जो उत्तम प्रकारे कार्य करतो तो बदलणे कठीण आहे.  ते ते टाकून देतील आणि ते त्यांच्या स्वत: च्या मार्गाने पुन्हा लिहतील.  म्हणून, इतरांना समजेल असा कोड लिहा.  जर तुम्ही तुमचा कोड सुधारू शकत असाल, तर तो सुधारा. जर तो सुधारता आला तर, मग त्यात सुधारणा करणे आवश्यक आहे! "

"जर तुम्ही 15 मिनिटांसाठी कोड लिहिला आणि नंतर तो सुधारण्यासाठी दोन तास घालवले, तर तुम्ही ते बरोबर करत आहात. तुम्ही संघाचा किती वेळ वाचवत आहात?"

"तुमचा कोड समजून घेण्यासाठी '2 तास' x 'ज्या 100 वेळा लोकांना तो समजून घ्यावा लागेल' = 200 तास."

"मी हे आकडे पातळ हवेतून बाहेर काढले आहेत, परंतु मला तुम्हाला समस्या आणि त्याची व्याप्ती समजून घ्यायची आहे.  तुमचा कोड इतर प्रोग्रामरद्वारे वाचण्यासाठी तयार केला गेला आहे.  बाकी सर्व काही दुय्यम आहे."

"कोड बरोबर काम करत नाही का? आम्ही त्याचे निराकरण करू. ऑप्टिमाइझ केलेले नाही? आम्ही ते ऑप्टिमाइझ करू. दस्तऐवजीकरण केलेले नाही? आम्ही टिप्पण्या जोडू."

" कोड वाचायला कठीण आहे का? ती बकवास कचऱ्यात टाका आणि पुन्हा सुरवातीपासून सर्वकाही लिहा! "

"मला वाटले नाही की ही इतकी मोठी गोष्ट आहे."

"जावा ही अग्रगण्य प्रोग्रामिंग भाषा असण्याचे एक कारण म्हणजे सर्व जावा कोड इतर प्रोग्रामरद्वारे वाचण्यासाठी लिहिलेले आहेत."

"आता दुसऱ्या प्रश्नाकडे वळू: तुम्ही तुमचा कोड शक्य तितका वाचण्यास सोपा कसा बनवाल? "

"कोणीही त्याच्या किंवा तिच्या मूळ भाषेत परिचित शब्द बोलतो तेव्हा कोणीही समजू शकतो. येथेही तेच खरे आहे. जेव्हा प्रोग्रामर सहजपणे अंदाज लावू शकतो तेव्हा कोड वाचणे सोपे आहे:

अ)  प्रत्येक पद्धत काय करते

ब)  प्रत्येक वर्गाचा उद्देश

क)  प्रत्येक व्हेरिएबल नेमके काय साठवते.

हे सर्व नावांमध्ये संप्रेषित केले जाते: वर्ग नावे, पद्धतीची नावे आणि चल नावे. याव्यतिरिक्त, व्हेरिएबल्सचे नामकरण करताना शैली असते. आणि कोड शैली आहे."

"मी ऐकायला तयार आहे."

" प्रोग्रामिंग चांगल्या इंग्रजीवर आधारित आहे!  एक चांगला लिखित प्रोग्राम सामान्य तांत्रिक दस्तऐवजीकरणाप्रमाणे वाचतो. "

" नावांपासून सुरुवात करूया. "

"पद्धतीच्या नावाने पद्धत काय करते याचे थोडक्यात वर्णन केले पाहिजे. नंतर कोड साध्या गद्याप्रमाणे वाचता येईल."

कार्यक्रम
public String downloadPhoto(String url)
{
 String resultFileName = TempHelper.createTempFileName();

 Downloader downloader = new SingleFileDownloader(new Url(url));
 downloader.setResultFileName(resultFileName)
 downloader.start();
 while(downloader.isDone())
 {
  Thread.sleep(1000);
 }

 if (downloader.hasError())
  return null;

 return resultFileName;
}

"असा कार्यक्रम कसा वाचला जातो ते येथे आहे."

ओळ 1.

"पद्धतीला 'डाउनलोडफोटो' असे म्हणतात. असे दिसते की ती इंटरनेटवरून एक फोटो फाइल डाउनलोड करते. ती कोठून डाउनलोड करते? आम्हाला अद्याप माहित नाही. कोठून? या पद्धतीमध्ये url नावाचे पॅरामीटर आहे — कदाचित ती URL आहे डाउनलोड."

ओळ 3.

"व्हेरिएबल resultFileName घोषित केले जाते आणि TempHelper.createTempFileName(); द्वारे मूल्य नियुक्त केले जाते."

तर हा फाईलचा स्थानिक मार्ग असावा जिथे आपण डाउनलोड केलेली फाईल सेव्ह करू.

"'TempHelper' हे नाव आम्हाला काहीही सांगत नाही. 'हेल्पर' प्रत्यय म्हणतो की हा एक प्रकारचा उपयुक्तता वर्ग आहे ज्यामध्ये महत्त्वाचे व्यावसायिक तर्क नसतात, उलट वारंवार होणारी नियमित कामे सुलभ करण्यासाठी वापरली जाते."

"createTempFileName' या पद्धतीचे नाव सूचित करते की ही पद्धत तात्पुरत्या फाइलचे नाव तयार करते आणि परत करते. temp फाइल ही एक तात्पुरती फाइल असते जी काही काळासाठी तयार केली जाते आणि नंतर प्रोग्राम बंद होईपर्यंत हटविली जाते. "

ओळ 5.

"एक सिंगलफाइलडाउनलोडर ऑब्जेक्ट तयार केला जातो आणि व्हेरिएबल डाउनलोडरला नियुक्त केला जातो."

हे ऑब्जेक्ट आहे जे इंटरनेटवरून आमची फाइल डाउनलोड करेल.

"एक सिंगलफाइलडाउनलोडर ऑब्जेक्ट व्हेरिएबल डाउनलोडरला नियुक्त केले आहे. नावावरून, आम्ही असे गृहीत धरू शकतो की प्रोग्राममध्ये अनेक प्रकारचे डाउनलोडर वर्ग आहेत. एक एकल फाइल डाउनलोड करण्यासाठी लिहिली गेली होती आणि आम्ही कदाचित गटांच्या कोडमध्ये इतर डाउनलोडरचा सामना करण्याची अपेक्षा करू शकतो. सारख्या नावांसह फाइल्सची: MultiFileDownloader, FileGroupDownloader, or DirectoryDownloader"

ओळ 6.

"आम्ही डाउनलोडर ऑब्जेक्टची resultFileName प्रॉपर्टी व्हेरिएबल resultFileName च्या मूल्याप्रमाणे सेट करतो. दुसऱ्या शब्दांत, आम्ही लोडरला डाउनलोड केलेली फाइल कुठे सेव्ह करायची ते सांगतो. तुमच्या अपेक्षेप्रमाणे. त्यामुळे, आम्ही मुळात कोडचा अंदाज घेत आहोत!"

ओळ 7.

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

ओळी 8-11.

"आह. येथे आपण डाउनलोड पूर्ण होण्याची वाट पाहत कोणीतरी लिहिलेले मानक लूप पाहतो. डाउनलोडर ऑब्जेक्टमध्ये एक पूर्ण गुणधर्म आहे, जो isDone() पद्धतीद्वारे परत केला जातो. कारण या पद्धतीला getDone() ऐवजी isDone() म्हणतात. ), आम्ही असा निष्कर्ष काढतो की पूर्ण व्हेरिएबल बुलियन किंवा कदाचित बुलियन आहे."

ओळी 13-14.

"डाउनलोड करताना त्रुटी आढळल्यास, डाउनलोडफोटो पद्धत शून्य परत करते. ती त्रुटी हाताळते हे चांगले आहे. ते फक्त शून्य परत करते हे वाईट आहे - त्रुटी काय आहे हे स्पष्ट नाही. याविषयी माहितीसह अपवाद टाकणे चांगले होईल चूक."

ओळ 16.

"आम्ही डाऊनलोड केलेली फाइल असलेल्या स्थानिक फाइलचा मार्ग परत करतो."

"व्वा!"

"या प्रोग्रामच्या कोडमुळे ते काय करते हे पूर्णपणे स्पष्ट आहे. कार्यक्रम कसा आयोजित केला जातो आणि आम्हाला इतर कोणते वर्ग/पद्धती सापडतील याबद्दल तुम्ही अंदाज लावू शकता."

"आता मला समजले की नावे किती महत्वाची आहेत."

"नावांबद्दल अधिक. आपण अनेकदा अंदाज लावू शकता की ऑब्जेक्ट/क्लासमध्ये कोणत्या पद्धती आहेत. उदाहरणार्थ, जर एखादी वस्तू संग्रह असेल, तर घटकांची संख्या मिळविण्यासाठी त्यात बहुधा आकार() किंवा गणना() पद्धत असेल. तसेच , त्यात कदाचित add() किंवा insert() पद्धत असेल. घटक हे get/getItem/getElement पद्धती वापरून संग्रह वर्गातून पुनर्प्राप्त केले जातात."

"जर व्हेरिएबलला i, j, किंवा k म्हणतात, तर बहुधा ते लूप काउंटर असेल."

"जर व्हेरिएबलला m किंवा n म्हटले जाते, तर ते बहुधा अॅरे/कलेक्शनचा आकार असेल."

"जर व्हेरिएबलला नाव म्हटले, तर बहुधा ते एखाद्याचे नाव असलेली स्ट्रिंग असते."

"जर एखाद्या वर्गाला FileInputStream म्हटले जाते, तर ती एकाच वेळी फाइल आणि इनपुट प्रवाह असते."

"तुम्ही जितके अधिक कोड पहाल तितके इतरांचे कोड वाचणे सोपे होईल."

"परंतु काहीवेळा असा कोड असतो जो वाचणे खूप कठीण असते. या प्रकरणात, येथे एक अतिशय व्यावहारिक सल्ला आहे:"

टीप
कोड असे लिहा जणू काही हिंसक मनोरुग्ण ज्याला तुम्ही कुठे राहता हे माहीत आहे .

"ते एकाच वेळी मजेदार आहे आणि मजेदार नाही."

"व्हेरिएबल्सना नाव देण्यासाठी वापरल्या जाणार्‍या शैलींबद्दल आता थोडेसे."

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

1) लोअरकेस  - सर्व शब्द लोअरकेस अक्षरांनी लिहिलेले आहेत. उदाहरणार्थ:

'ग्रीन हाऊस'  बनले 'हरितगृह'

'हॉलीवूड गर्ल'  बनली  'हॉलीवूडगर्ल'

ही शैली पॅकेज नावांसाठी वापरली जाते.

२) अप्परकेस  - सर्व शब्द मोठ्या अक्षरांनी लिहिलेले असतात आणि अंडरस्कोरने वेगळे केले जातात. उदाहरणार्थ:

'कमाल मूल्य' MAX_VALUE  होते

'मांजरांची संख्या' CAT_COUNT  होते

"ही शैली स्थिरांकांच्या नावांसाठी (अंतिम स्थिर क्षेत्र) वापरली जाते."

३) कॅमलकेस  – प्रत्येक शब्दाचे पहिले अक्षर अपरकेस वगळता सर्व शब्द लोअरकेस अक्षरांनी लिहिलेले आहेत. उदाहरणार्थ:

'ग्रीन हाऊस'  बनले  'ग्रीनहाऊस'

'हॉलीवूड गर्ल'  बनली 'हॉलीवूडगर्ल'

ही शैली वर्ग आणि इंटरफेसच्या नावांसाठी वापरली जाते.

4) लोअर कॅमलकेस (मिश्र केस)  – सर्व शब्द लोअरकेस अक्षरे वापरून लिहिलेले आहेत, प्रथम अक्षर वगळता प्रत्येक शब्दाचे पहिले अक्षर अपरकेस आहे. उदाहरणार्थ:

'रुंदी मिळवा' 'गेटविड्थ' बनते

'गेट हॉलीवूड गर्ल नेम' 'गेटहॉलीवुडगर्लनेम' झाले 

"ही शैली व्हेरिएबल्स आणि पद्धतींच्या नावांसाठी वापरली जाते."

"म्हणून, खूप नियम नाहीत."

1)  सर्व काही लोअर कॅमलकेसमध्ये लिहिलेले आहे.

2)  वर्ग आणि इंटरफेसची नावे नेहमी कॅपिटल केलेली असतात.

3)  पॅकेजची नावे नेहमी लोअरकेस असतात.

4)  स्थिरांक नेहमी अप्परकेस असतात.

"दोन बारकावे आहेत, परंतु सर्वसाधारणपणे तेच आहे."

"आता पद्धतींबद्दल.  "पद्धतीची नावे जवळजवळ नेहमीच क्रियापदाने सुरू होतात! 'count' हे एका पद्धतीचे वाईट नाव आहे. याला getCount() म्हणणे चांगले. पद्धत ऑब्जेक्टवर काही क्रिया करते:  startDownload , interrupt  , sleep  , loadPirateMusic ."

"तुम्हाला आधीच माहित आहे की, ऑब्जेक्टच्या गुणधर्म/फील्डसह कार्य करण्यासाठी गेटर्स आणि सेटर्स आहेत:  getName / setName , getCount / setCount , इ."

"एवढाच अपवाद बुलियनसाठी आहे. बुलियनसाठी, गेटरची नावे 'is' वापरतात, 'get' नाही, उदा isDone, isEmpty. अशा प्रकारे ते सामान्य भाषणाच्या जवळ आहे."

"दिवसातून 8 ऐवजी दोन तास काम कसे करायचे? मोह झाला?"

"हो!"

"तुम्ही असायला हवे तसे. कनिष्ठ Java विकासकासाठी, मूलभूत गरज म्हणजे Java च्या मूलभूत गोष्टींची, म्हणजे Java Core ची उत्कृष्ट समज असणे."

"मला दुसरा प्रश्न आहे. घटकांची संख्या मिळवण्यासाठी आपल्याकडे या वेगवेगळ्या पद्धती का आहेत?"

वर्ग घटकांची संख्या मिळवण्यासाठी पद्धत/मालमत्ता
स्ट्रिंग लांबी ()
रचना लांबी
अॅरेलिस्ट आकार ()
थ्रेडग्रुप सक्रिय संख्या ()

"सर्वप्रथम, Java चा शोध 20 वर्षांहून अधिक वर्षांपूर्वी लागला होता, setCount / getCount सारख्या आवश्यकतांची स्थापना होण्यापूर्वी, आणि C भाषेतून 'शक्य तितके लहान' बनवण्याचा एक सामान्य दृष्टीकोन होता."

"दुसरे, अर्थशास्त्र येथे भूमिका बजावते. अॅरेबद्दल बोलत असताना, आपण त्याच्या लांबीबद्दल बोलतो. संग्रहाबद्दल बोलत असताना, आपण त्याच्या आकाराबद्दल बोलतो."

"काय मनोरंजक धडा."

"मला तुम्हाला आणखी सांगायचे आहे, परंतु मला भीती वाटते की तुम्हाला हे सर्व एकाच वेळी आठवणार नाही. ते तुमच्यासाठी लहान सर्विंग्समध्ये डिश करणे चांगले आहे."

"परंतु मला कुरळे कंसाच्या वापरासंदर्भात शैलीला स्पर्श करायचा आहे: {}. दोन दृष्टिकोन आहेत:"

1)  कंस प्रत्येक वेळी नवीन ओळीवर जातो

2)  ओपनिंग ब्रॅकेट मागील ओळीच्या शेवटी जातो, तर बंद होणारा कंस नवीन ओळीवर जातो. या शैलीला 'इजिप्शियन ब्रेसेस' म्हणतात.

"प्रामाणिकपणे, तुम्हाला कोड कसा करायचा हे निवडायचे आहे. बरेच लोक त्याच ओळीवर ओपनिंग ब्रेस वापरतात. बरेच लोक ते नवीन ओळीवर ठेवतात. हे अंडीचे कोणते टोक फोडायचे यावर वादविवादासारखे आहे: लहान टोक किंवा मोठे समाप्त."

"मी फक्त एकच शिफारस करू शकतो की तुम्ही ज्या प्रोजेक्टवर काम करत आहात त्यामध्ये कोणत्याही शैलीचा वापर केला जात आहे. तुमच्या पसंतीच्या शैलीशी जुळण्यासाठी इतर कोणाचा कोड बदलू नका.  लोक अपूर्ण आहेत. मी तुम्हाला डॉक्टर बिलाबो म्हणून सांगत आहे. "

"रंजक धड्याबद्दल धन्यवाद, बिलाबो. तुम्ही जे बोललात त्यावर मी विचार करेन."