جاوا ڇو سکيو ۽ ان کي مؤثر طريقي سان ڪيئن ڪجي. Yandex رپورٽ

جاوا ٻين مشهور ٻولين کان ڪيئن مختلف آهي؟ ڇو جاوا کي پهرين ٻولي سکڻ گهرجي؟ اچو ته ھڪڙو منصوبو ٺاھيو جيڪو توھان کي جاوا سکڻ ۾ مدد ڏيندو ٻئي شروع کان ۽ پروگرامنگ جي صلاحيتن کي ٻين ٻولين ۾ لاڳو ڪرڻ سان. اچو ته جاوا ۾ پروڊڪشن ڪوڊ ٺاهڻ ۽ ٻين ٻولين ۾ ترقي ڪرڻ جي وچ ۾ فرق جي فهرست ڏيون. ميخائل Zatepyakin هن رپورٽ کي مستقبل جي شرڪت ڪندڙن لاء هڪ اجلاس ۾ پڙهيو انٽرن شپس Yandex ۽ ٻيا شروعاتي ڊولپرز - جاوا جونيئر ملاقات.


- هيلو سڀني کي، منهنجو نالو ميشا آهي. مان Yandex.Market مان هڪ ڊولپر آهيان، ۽ اڄ مان توهان کي ٻڌايان ٿو ته جاوا ڇو سکڻ ۽ ان کي مؤثر طريقي سان ڪيئن ڪجي. توهان هڪ معقول سوال پڇي سگهو ٿا: مان هن ڪهاڻي کي ڇو ٻڌايان ٿو، ۽ ڪيترن سالن جي تجربي سان ڪجهه مضبوط ڊولپر نه؟ حقيقت اها آهي ته مون پاڻ تازو جاوا جو اڀياس ڪيو، اٽڪل هڪ اڌ سال اڳ، تنهنڪري مون کي اڃا تائين ياد آهي ته اهو ڇا هو ۽ اتي ڪهڙا نقصان آهن.

هڪ سال اڳ مون Yandex.Market تي انٽرنيشنل شپ حاصل ڪئي. مون بيرو لاءِ پس منظر تيار ڪيو، مارڪيٽ پاڻ لاءِ، توھان شايد ان کي استعمال ڪيو. هاڻي مان اتي ڪم ڪرڻ جاري رکان ٿو، هڪ مختلف ٽيم ۾. اسان ڪاروباري ڀائيوارن لاءِ Yandex.Market لاءِ هڪ تجزياتي پليٽ فارم ٺاهيندا آهيون.

جاوا ڇو سکيو ۽ ان کي مؤثر طريقي سان ڪيئن ڪجي. Yandex رپورٽ

اچو ته شروع ڪريون. جاوا کي عملي نقطه نظر کان ڇو سکيو؟ حقيقت اها آهي ته جاوا هڪ تمام مشهور پروگرامنگ ٻولي آهي. اهو هڪ تمام وڏو ڪميونٽي آهي.

مثال طور، اتي هڪ TIOBE انڊيڪس آهي، پروگرامنگ ٻولين جي مقبوليت جو هڪ مشهور انڊيڪس، ۽ جاوا اتي پهرين نمبر تي آهي. انهي سان گڏ، نوڪري جي سائيٽن تي، توهان شايد شايد نوٽيس ڪندا ته اڪثر جاوا جاوا بابت آهن، اهو آهي، جاوا ۾ ترقي ڪندي، توهان هميشه نوڪري ڳولي سگهو ٿا.

جيئن ته ڪميونٽي تمام وڏي آهي، توهان وٽ جيڪو به سوال آهي ان جو جواب ڪجهه اسٽيڪ اوور فلو يا ٻين سائيٽن تي ملندو. انهي سان گڏ، جڏهن جاوا ۾ ترقي ڪري رهيا آهيو، توهان اصل ۾ JVM تي ڪوڊ لکي رهيا آهيو، تنهنڪري توهان آساني سان ڪوٽلن، اسڪالا ۽ ٻين ٻولين ۾ تبديل ڪري سگهو ٿا جيڪي JVM استعمال ڪن ٿيون.

جاوا ڇو سکيو ۽ ان کي مؤثر طريقي سان ڪيئن ڪجي. Yandex رپورٽ

جاوا بابت هڪ نظرياتي نقطي نظر کان سٺو ڇا آهي؟ اتي مختلف پروگرامنگ ٻوليون آهن. اهي مختلف مسئلا حل ڪن ٿا، توهان کي خبر آهي. مثال طور، پٿون هڪ لڪير اسڪرپٽ لکڻ لاءِ بهترين آهي تڪڙو مسئلا حل ڪرڻ لاءِ.

پلس پاسي تي، توھان مڪمل طور تي قابل عمل ڪوڊ ڪنٽرول ڪري سگھو ٿا. مثال طور، اسان وٽ ڪارون آهن، Yandex ڊرائيور بيڪار ڪارون، انهن جو ڪوڊ پلس ۾ لکيل آهي. ڇو؟ جاوا وٽ اهڙي شيءِ آهي - گاربيج ڪليڪٽر. اهو غير ضروري شين جي رام کي صاف ڪري ٿو. هيءَ شيءِ spontaneously شروع ٿئي ٿي ۽ اسٽاپ-دي-دنيا ڪري ٿي، يعني اها باقي پروگرام کي روڪي ٿي ۽ شيون ڳڻڻ لاءِ وڃي ٿي، شين جي ڪليئر ميموري. جيڪڏهن اهڙي شيءِ ڊرون ۾ ڪم ڪري ٿي ته اها ٿلهي ناهي. توھان جو ڊرون سڌو ھلندو، ھن وقت پنھنجي يادگيري کي صاف ڪريو ۽ روڊ کي بلڪل نه ڏسندا. تنهن ڪري، ڊرون پرو تي لکيل آهي.

جاوا ڇو سکيو ۽ ان کي مؤثر طريقي سان ڪيئن ڪجي. Yandex رپورٽ

جاوا ڪهڙا مسئلا حل ڪري ٿو؟ اهو بنيادي طور تي وڏي پروگرامن کي ترقي ڪرڻ لاءِ هڪ ٻولي آهي جيڪي سالن کان لکين يا سوين ماڻهن طرفان لکيل آهن. خاص طور تي، Yandex.Market ۾ تمام گهڻو پس منظر جاوا ۾ لکيل آهي. اسان وٽ ڪيترن ئي شهرن ۾ ورهايل ٽيم آهي، هر هڪ ۾ ڏهه ماڻهو. ۽ ڪوڊ برقرار رکڻ آسان آهي، اهو ڏهن سالن يا وڌيڪ لاء سپورٽ ڪيو ويو آهي، ۽ ساڳئي وقت نوان ماڻهو اچن ٿا ۽ هن ڪوڊ کي سمجهي رهيا آهن.

ٻوليءَ ۾ ڪهڙيون خاصيتون هئڻ گهرجن ته جيئن ان ۾ ڪوڊ آسانيءَ سان سهائتا ٿئي ۽ ان کي آسانيءَ سان وڏين ٽيمن ۾ ترقي ڪري سگهجي. سڀ کان پهريان، اهو پڙهڻ وارو ڪوڊ هجڻ گهرجي، ۽ اهو پيچيده تعميراتي حل لاڳو ڪرڻ آسان هجڻ گهرجي. يعني، اعليٰ سطحي تجريد وغيره لکڻ آسان هئڻ گهرجي، اهو سڀ ڪجهه جاوا اسان کي مهيا ڪري ٿو. هي هڪ آبجیکٹ تي مبني ٻولي آهي. اهو اعلي سطحي خلاصن ۽ پيچيده فن تعمير کي لاڳو ڪرڻ بلڪل آسان آهي.

جاوا لاءِ ڪيترائي فريم ورڪ ۽ لائبريريون پڻ آهن، ڇاڪاڻ ته ٻولي 15 سالن کان وڌيڪ پراڻي آهي. هن عرصي دوران، هر شيء جيڪا لکي سگهجي ٿي ان تي لکيو ويو، تنهنڪري توهان کي گهربل هر شيء لاء لائبريريون آهن.

جاوا ڇو سکيو ۽ ان کي مؤثر طريقي سان ڪيئن ڪجي. Yandex رپورٽ

ڪهڙيون بنيادي صلاحيتون، منهنجي خيال ۾، هڪ شروعاتي JA پليئر کي گهرجي؟ سڀ کان پهريان، هي جاوا بنيادي ٻولي جي ڄاڻ آهي. اڳيون ڪجهه قسم جي انحصار انجکشن فريم ورڪ آهي. ايندڙ اسپيڪر، ڪريل، ان بابت وڌيڪ تفصيل سان ڳالهائيندو. مان تمام گهڻي اونهي نه ويندس. اڳيون فن تعمير ۽ ڊيزائن جي نمونن آهي. وڏيون ايپليڪيشنون لکڻ لاءِ اسان کي آرڪيٽيڪچرل طور خوبصورت ڪوڊ لکڻ جي ضرورت پوندي. ۽ هي ڊيٽابيس سان ڪم ڪرڻ جي ڪمن لاءِ ڪجهه قسم جو SQL يا ORM آهي. ۽ اهو وڌيڪ پس منظر تي لاڳو ٿئي ٿو.

جاوا ڇو سکيو ۽ ان کي مؤثر طريقي سان ڪيئن ڪجي. Yandex رپورٽ

وڃ! جاوا ڪور. مان هتي آمريڪا کي حقيقت ۾ نه ڳوليندس- توهان کي پنهنجي ٻولي ڄاڻڻ جي ضرورت آهي. ڇا توهان کي ڌيان ڏيڻ گهرجي. پهرين ڳالهه ته جاوا تازو سالن ۾ تمام گهڻا ورجن رليز ڪيا آهن، يعني 2014-2015 ۾ ستين ورزن رليز ٿيو، پوءِ اٺين، نائين، ڏهين، ڪيترائي نوان ورجن ۽ انهن ۾ ڪيتريون ئي نيون سٺيون شيون متعارف ڪرايون ويون. ، مثال طور، جاوا اسٽريم API، lambda، وغيره. تمام سٺيون، تازيون، ٿڌيون شيون جيڪي پروڊڪشن ڪوڊ ۾ استعمال ٿينديون آهن، اهي انٽرويو ۾ ڇا پڇن ٿيون ۽ جيڪي توهان کي ڄاڻڻ گهرجن. تنهن ڪري، توهان کي جاوا-4 لائبريري ۾ شيلف مان ڪتاب نه وٺڻ گهرجي ۽ ان کي سکڻ گهرجي. هي اسان جو منصوبو آهي: اسان سکون ٿا Java-8 يا اعليٰ.

اسان جدت تي تمام گهڻو ڌيان ڏيون ٿا جهڙوڪ اسٽريم API، var، وغيره. اهي انٽرويو دوران پڇيا ويندا آهن ۽ مسلسل پيداوار ۾ استعمال ٿيندا آهن. اهو آهي، اسٽريم API لوپس کان گهڻو ٿڌو آهي، عام طور تي، هڪ تمام سٺي شيء آهي. ضرور ڌيان ڏيو.

۽ هتي هر قسم جون شيون آهن جهڙوڪ آئٽرٽر، استثنا وغيره. شيون جيڪي توهان لاءِ غير اهم لڳي رهيون آهن جيستائين توهان پنهنجو پاڻ ڪجهه ننڍڙو ڪوڊ لکو. توهان کي انهن استثناء جي ضرورت ناهي، ڪنهن کي انهن جي ضرورت آهي؟ پر اهي ضرور انٽرويو ۾ پڇيا ويندا، اهي ضرور توهان جي پيداوار ۾ مفيد هوندا. عام طور تي، توهان کي ڌيان ڏيڻ گهرجي Exceptions، iterators ۽ ٻين شين تي.

جاوا ڇو سکيو ۽ ان کي مؤثر طريقي سان ڪيئن ڪجي. Yandex رپورٽ

ڊيٽا جي جوڙجڪ. توهان بناوتن جي بغير نٿا وڃي سگهو، پر اهو تمام سٺو ٿيندو جيڪڏهن توهان صرف اهو نه ڄاڻو ته اتي سيٽ، لغات، ۽ شيٽ آهن. ۽ پڻ مختلف جوڙجڪ جي نفاذ. مثال طور، ساڳي لغت جاوا ۾ ڪيترن ئي عملن تي مشتمل آهي، بشمول HashMap ۽ TreeMap. انهن وٽ مختلف علامتون آهن، اهي اندر اندر مختلف طرح سان ٺهيل آهن. توهان کي ڄاڻڻ جي ضرورت آهي ته اهي ڪيئن مختلف آهن ۽ جڏهن انهن کي استعمال ڪرڻ گهرجي.

اهو پڻ تمام ٿڌو ٿيندو جيڪڏهن توهان ڄاڻو ٿا ته اهي ڊيٽا جي جوڙجڪ اندروني طور تي ڪيئن ڪم ڪن ٿيون. اهو آهي، انهن جي علامتن کي ڄاڻڻ آسان ناهي - شرط ڪيترو ڪم ڪري ٿو، پاس ڪيترو وقت ڪم ڪري ٿو، پر ساخت اندر ڪيئن ڪم ڪري ٿي - مثال طور، HashMap ۾ هڪ بالٽ ڇا آهي.

اهو پڻ وڻن ۽ گرافس تي ڌيان ڏيڻ جي قابل آهي. اهي شيون آهن جيڪي پيداوار ڪوڊ ۾ تمام عام نه آهن، پر اهي انٽرويو ۾ مشهور آهن. انهي جي مطابق، توهان کي وڻن کي ڇڪڻ جي قابل ٿيڻ جي ضرورت آهي، ويڪر ۽ کوٽائي ۾ گراف. اهي سڀ سادي الگورتھم آهن.

جيئن ئي توهان ڪو به وڏو ڪوڊ، پيچيده، لائبريريون استعمال ڪندي، ملٽي ڪلاس ڪوڊ لکڻ شروع ڪندا، توهان محسوس ڪندا ته اهو توهان لاءِ ڏکيو آهي بغير سسٽم جي تعمير ۽ انحصار کي حل ڪرڻ. اهي بنيادي طور تي Maven ۽ Gradle آهن. اهي توهان کي اجازت ڏين ٿا لائبريريون درآمد ڪرڻ جي توهان جي منصوبي ۾ هڪ لائن ۾. اهو آهي، توهان هڪ لڪير xml لکندا ۽ پروجيڪٽ ۾ لائبريريون درآمد ڪريو. عظيم سسٽم. اهي لڳ ڀڳ ساڳيا آهن، يا ته هڪ استعمال ڪريو - Maven يا Gradle.

اڳيون - ورجن ڪنٽرول نظام جي ڪجهه قسم. مان سفارش ڪريان ٿو گٽ ڇاڪاڻ ته اهو مشهور آهي ۽ اتي ڪيترائي سبق آهن. تقريبن هرڪو استعمال ڪري ٿو Git، اها هڪ سٺي شيء آهي، توهان ان کان سواء رهي نٿا سگهو.

۽ ڪجهه قسم جي ترقي واري ماحول. مان سفارش ڪريان ٿو IntelliJ Idea. اهو ترقي جي عمل کي تمام گهڻو تيز ڪري ٿو، توهان جي تمام گهڻي مدد ڪري ٿو، توهان لاءِ تمام بوائلر پليٽ ڪوڊ لکي ٿو، عام طور تي، اهو سٺو آهي.

جاوا ڇو سکيو ۽ ان کي مؤثر طريقي سان ڪيئن ڪجي. Yandex رپورٽ

سلائڊ مان لنڪس: SQLZOO |, habrapost

SQL. پٺاڻن بابت ٿورڙو. هتي اصل ۾ هڪ عجيب ڪيس هو. منهنجي ٻئي انٽرنشپ انٽرويو کان ٻه ڏينهن اڳ، هڪ HR ڇوڪري مون کي فون ڪيو ۽ چيو ته ٻن ڏينهن ۾ اهي مون کان SQL ۽ HTTP بابت پڇندا، مون کي اهو سکڻ جي ضرورت آهي. ۽ مون کي SQL يا HTTP بابت تقريبا ڪجھ به نه ڄاڻو. ۽ مون کي اها سٺي سائيٽ ملي آهي - SQLZOO |. مون 12 ڪلاڪن ۾ ان تي SQL سکيو، منهنجو مطلب آهي، SQL نحو، ڪيئن لکجي SELECT queries، JOIN، وغيره. تمام سٺي سائيٽ، مان ان جي سفارش ڪريان ٿو. حقيقت ۾، 12 ڪلاڪن ۾ مون سکيو 90٪ جيڪو مان ڄاڻان ٿو.

۽ ڊيٽابيس فن تعمير کي ڄاڻڻ لاء پڻ وڏو آهي. اهي سڀ قسم جون چابيون، انڊيڪس، نارملائيزيشن آهن. هبري تي هن بابت پوسٽن جو هڪ سلسلو آهي.

جاوا ڇو سکيو ۽ ان کي مؤثر طريقي سان ڪيئن ڪجي. Yandex رپورٽ

جاوا ۾، SQL کان علاوه، اتي موجود آھن سڀ قسم جا آبجیکٹ-رابطي واري ميپنگ سسٽم جھڙوڪ JPA. ڪجهه ڪوڊ آهي. پهرين طريقي ۾ ڪجهه SQL ڪوڊ آهي - SELECT id name FROM info.users WHERE id in userIds. صارفين جي ڊيٽابيس مان، ٽيبل تان، انهن جي سڃاڻپ ۽ نالا حاصل ڪيا ويا آهن.

اڳيون، اتي ھڪڙو خاص نقشو آھي جيڪو ھڪڙي اعتراض کي بنيادي کان جاوا اعتراض ۾ تبديل ڪري ٿو. ۽ ھيٺ ڏنل ھڪڙو ٽيون طريقو آھي جيڪو اصل ۾ ھن ڪوڊ تي عمل ڪري ٿو. هي سڀ JPA استعمال ڪندي هڪ لڪير سان تبديل ڪري سگهجي ٿو، جيڪو هيٺ لکيو ويو آهي. اهو ساڳيو ڪم ڪري ٿو - ڳوليو سڀ ByIdIn. اهو آهي، طريقي جي نالي جي بنياد تي، اهو توهان لاءِ هڪ SQL سوال ٺاهي ٿو.

ڏاڍي سٺي ڳالهه. مان پاڻ، جڏهن مون کي SQL جي خبر نه هئي، استعمال ڪيو JPA. عام طور تي، ڌيان ڏيو. جيڪڏهن توهان SQL سکڻ ۾ تمام سست آهيو، اهو هڪ آفت آهي. ۽، عام طور تي، باهه!

جاوا ڇو سکيو ۽ ان کي مؤثر طريقي سان ڪيئن ڪجي. Yandex رپورٽ

بهار. بهار جي فريم ورڪ وانگر اهڙي شيءِ بابت ڪير ٻڌو آهي؟ ڇا توهان ڏسندا آهيو ته توهان مان ڪيترا آهن؟ بي سبب نه. بهار هر سيڪنڊ جاوا جي پس منظر جي خالي جاءِ جي ضرورتن ۾ شامل آهي. ان کان سواء، اتي واقعي وڏي ترقي ۾ ڪٿي به ناهي. بهار ڇا آهي؟ سڀ کان پهريان، هي هڪ انحصار انجکشن فريم ورڪ آهي. ان بابت پڻ ٻڌائيندس ايندڙ اسپيڪر. پر مختصر ۾، اها هڪ شيءِ آهي جيڪا توهان کي اجازت ڏئي ٿي ته ڪجهه طبقن جي انحصار کي ٻين تي درآمد ڪرڻ آسان بڻائي. اهو آهي، انحصار جو علم آسان آهي.

اسپرنگ بوٽ اسپرنگ جو ھڪڙو ٽڪرو آھي جيڪو توھان کي ھڪڙي بٽڻ سان توھان جي سرور ايپليڪيشن کي هلائڻ جي اجازت ڏئي ٿو. توھان وڃو ٿا THID، ڪجھ بٽڻ دٻايو، ۽ ھاڻي توھان وٽ آھي توھان جي سرور جي ايپليڪيشن ۽ ھلائي رھي آھي localhost 8080 تي. اھو آھي، توھان اڃا تائين ڪوڊ جي ھڪڙي لائن نه لکي آھي، پر اھو اڳ ۾ ئي ڪم ڪري رھيو آھي. ڏاڍي سٺي ڳالهه. جيڪڏهن توهان پنهنجو ڪجهه لکندا آهيو، باهه!

بهار هڪ تمام وڏو فريم ورڪ آهي. اهو نه صرف توهان جي سرور ايپليڪيشن کي چونڊيندو آهي ۽ انحصار انجکشن کي حل ڪري ٿو. اهو توهان کي شين جو هڪ گروپ ڪرڻ جي اجازت ڏئي ٿو، بشمول REST API طريقا ٺاهڻ. اهو آهي، توهان ڪجهه طريقو لکيو ۽ ان سان گڏ نقشي جي تشريح حاصل ڪريو. ۽ ھاڻي توھان وٽ اڳ ۾ ئي ڪجھ طريقو آھي localhost تي جيڪو لکي ٿو ھيلو ورلڊ توھان کي. ڪوڊ جون ٻه لائينون ۽ اهو ڪم ڪري ٿو. ٿڌو سامان.

بهار پڻ لکڻ جي ٽيسٽ کي آسان بڻائي ٿو. وڏي ترقي ۾ جاچ کان سواء ڪو رستو ناهي. ڪوڊ کي جانچڻ جي ضرورت آهي. هن مقصد لاءِ جاوا وٽ هڪ بهترين لائبريري آهي JUnit 5. ۽ عام طور تي JUnit، پر جديد ورجن پنجون آهي. هتي جاچ لاءِ سڀ ڪجهه آهي، هر قسم جا دعوا ۽ ٻيون شيون.

۽ اتي هڪ شاندار Mockito فريم ورڪ آهي. تصور ڪريو ته توھان وٽ ڪجھ ڪارڪردگي آھي جنھن کي توھان جانچڻ چاھيو ٿا. ڪارڪردگي تمام گهڻيون شيون ڪري ٿي، بشمول، وچ ۾ ڪٿي، اهو توهان جي ID سان VKontakte ۾ لاگ ان ٿئي ٿو، مثال طور، ۽ ID مان VKontakte صارف جو پهريون ۽ آخري نالو وصول ڪري ٿو. توھان شايد شامل نه ڪندا VKontakte ٽيسٽ ۾، اھو عجيب آھي. پر توهان کي ڪارڪردگي کي جانچڻ جي ضرورت آهي، تنهنڪري توهان هن طبقي کي ٺاهيو، Mockito استعمال ڪندي، ان کي موڪ ڪريو، ان جي نقل ڪريو.

توهان چوندا ته جڏهن ڪا درخواست هن ڪلاس ۾ آئي ڊي سان گڏ اهڙي ۽ اهڙي آهي، اهو ڪجهه آخري نالو ڏئي ٿو، مثال طور، واسيا پپڪن. ۽ اهو ڪم ڪندو. اهو آهي، توهان سڀني ڪارڪردگي کي جانچ ڪنداسين mok هڪ طبقي لاء. ڏاڍي سٺي ڳالهه.

جاوا ڇو سکيو ۽ ان کي مؤثر طريقي سان ڪيئن ڪجي. Yandex رپورٽ

سلائيڊ مان لنڪ

ڊيزائن جا نمونا. هي ڇا آهي؟ اهي نمونا آهن حل ڪرڻ لاءِ عام مسئلا جيڪي ترقي ۾ پيدا ٿين ٿا. ترقي ۾، هڪجهڙا يا ساڳيا مسئلا اڪثر پيدا ٿيندا آهن ته اهو تمام سٺو هوندو ته ڪنهن به طريقي سان حل ڪيو وڃي. تنهن ڪري، ماڻهو انهن مسئلن کي ڪيئن حل ڪرڻ لاء بهترين طريقا، ڪجهه ٽيمپليٽس سان گڏ آيا.

هتي هڪ ويب سائيٽ آهي جنهن ۾ سڀ کان وڌيڪ مشهور نمونن آهن - refactoring.guru، توهان ان کي پڙهي سگهو ٿا، ڳولي سگهو ٿا ته ڪهڙا نمونا آهن، پڙهيل نظريي جو هڪ گروپ. مسئلو اهو آهي ته اهو عملي طور تي بيڪار آهي. حقيقت ۾، مشق کان سواء نمونن خاص طور تي مفيد نه آهن.

توهان ڪجهه نمونن بابت ٻڌندا سين جهڙوڪ سنگلٽون يا بلڊر. اهي لفظ ڪنهن ٻڌا؟ تمام گھڻا ماڻهو. اهڙا سادي نمونا آهن جيڪي توهان پاڻ کي لاڳو ڪري سگهو ٿا. پر سڀ کان وڌيڪ نمونن: حڪمت عملي، ڪارخانو، منهن - اهو واضح ناهي ته انهن کي لاڳو ڪرڻ لاء.

۽ جيستائين توهان عملي طور تي ڪنهن ٻئي شخص جي ڪوڊ ۾ هڪ جڳهه نه ڏسندا جنهن تي اهو نمونو لاڳو ڪيو ويو آهي، توهان ان کي پاڻ لاڳو ڪرڻ جي قابل نه هوندا. تنهن ڪري، نمونن سان مشق تمام ضروري آهي. ۽ صرف refactoring.guru تي انهن جي باري ۾ پڙهڻ تمام مددگار نه آهي، پر اهو ضرور ڪرڻ جي لائق آهي.

جاوا ڇو سکيو ۽ ان کي مؤثر طريقي سان ڪيئن ڪجي. Yandex رپورٽ

ڇو نمونن جي ضرورت آهي؟ اچو ته چئو ته توهان وٽ هڪ مخصوص صارف ڪلاس آهي. ان ۾ هڪ سڃاڻپ ۽ نالو آهي. هر صارف کي هڪ سڃاڻپ ۽ نالو هجڻ گهرجي. مٿي کاٻي پاسي ڪلاس روم آهي.

استعمال ڪندڙ کي شروع ڪرڻ جا طريقا ڪهڙا آهن؟ هتي ٻه اختيار آهن - يا ته هڪ تعمير ڪندڙ يا هڪ سيٽر. ٻنهي طريقن جا نقصان ڇا آهن؟

ٺاھيندڙ. نئون استعمال ڪندڙ (7، "بانڊ")، ٺيڪ. ھاڻي چئون ته اسان وٽ يوزر ڪلاس نه آھي، پر ڪجھ ٻيو آھي، ست عددي شعبن سان. توھان وٽ ھڪڙو ٺاھيندڙ ھوندو جنھن ۾ لڳاتار ست نمبر آھن. اهو واضح ناهي ته اهي نمبر ڪهڙا آهن ۽ انهن مان ڪهڙي ملڪيت جو تعلق آهي. ڊزائنر عظيم نه آهي.

ٻيو اختيار سيٽر آهي. توھان صاف صاف لکندا آھيو: setId(7)، setName (“Bond”). توهان سمجهو ٿا ته ڪهڙي ملڪيت ڪهڙي فيلڊ سان تعلق رکي ٿي. پر سيٽر هڪ مسئلو آهي. پهرين، توهان کي ڪجهه تفويض ڪرڻ وساري سگهو ٿا، ۽ ٻيو، توهان جو اعتراض تبديل ٿي سگهي ٿو. هي ڌاڳو محفوظ نه آهي ۽ ٿورڙي ڪوڊ جي پڙهڻ جي صلاحيت گھٽائي ٿو. اهو ئي سبب آهي ته ماڻهو هڪ ٿڌي نموني سان گڏ آيا - بلڊر.

جاوا ڇو سکيو ۽ ان کي مؤثر طريقي سان ڪيئن ڪجي. Yandex رپورٽ

هي ڇا جي باري ۾ آهي؟ اچو ته ٻنهي طريقن جي فائدن کي گڏ ڪرڻ جي ڪوشش ڪريون- سيٽر ۽ تعمير ڪندڙ- هڪ ۾. اسان هڪ خاص شئي ٺاهيندا آهيون، بلڊر، جنهن ۾ پڻ Id ۽ Name جا شعبا هوندا، جيڪي پاڻ سيٽر جي بنياد تي ٺاهيا ويندا، ۽ جنهن ۾ هڪ تعمير جو طريقو هوندو جيڪو توهان کي سڀني پيرا ميٽرن سان هڪ نئون استعمال ڪندڙ واپس آڻيندو. اسان هڪ ناقابل قابل اعتراض ۽ هڪ سيٽر حاصل ڪندا آهيون. عمده!

مسئلا ڪهڙا آهن؟ هتي اسان وٽ آهي کلاسک بلڊر. مسئلو اهو آهي ته اسان اڃا تائين ڪجهه فيلڊ ۾ چيڪ ڪرڻ وساري سگهون ٿا. ۽ جيڪڏهن اسان ID جو دورو ڪرڻ وساري ويٺا آهيون، انهي صورت ۾ بلڊر ۾ اهو صفر تي شروع ڪيو ويو آهي، ڇاڪاڻ ته int قسم nullable نه آهي. ۽ جيڪڏھن اسان نالو ٺاھيو ”بانڊ“ ۽ آئي ڊي آفيس جو دورو ڪرڻ وساريو ته اسان وٽ ھڪڙو نئون يوزر ھوندو جنھن جو نالو ”0“ ھوندو ۽ نالو ”بانڊ“ ھوندو. ٿڌو ناهي.

اچو ته ان سان وڙهڻ جي ڪوشش ڪريون. Builder ۾ اسان int کي int ۾ تبديل ڪنداسين ته جيئن اهو nullable آهي. هاڻي سڀ ڪجهه عظيم آهي.

جاوا ڇو سکيو ۽ ان کي مؤثر طريقي سان ڪيئن ڪجي. Yandex رپورٽ

جيڪڏهن اسان "بانڊ" نالي سان هڪ صارف ٺاهڻ جي ڪوشش ڪندا آهيون، هن جي ID رکڻ کي وساريندا آهيون، اسان کي هڪ null پوائنٽر استثنا حاصل ٿيندو، ڇاڪاڻ ته ID null نه آهي، ۽ بلڊر کي هڪ null، خاص طور تي پوائنٽر استثنا آهي.

جاوا ڇو سکيو ۽ ان کي مؤثر طريقي سان ڪيئن ڪجي. Yandex رپورٽ

پر اسان اڃا تائين هڪ نالو رکڻ وساري سگهون ٿا، تنهنڪري اسان اعتراض ريپلي کي null ڏانهن سيٽ ڪيو. هاڻي، جڏهن اسان پنهنجو اعتراض بلڊر مان ٺاهيندا آهيون، اهو چيڪ ڪري ٿو ته فيلڊ غير ضروري ناهي. ۽ اهو سڀ ڪجهه ناهي.

اچو ته آخري مثال ڏسو. انهي صورت ۾، جيڪڏهن اسان ڪنهن به طرح ID رن ٽائم ۾ null وجهي ڇڏيو، اهو فوري طور تي ڄاڻڻ لاء تمام سٺو ٿيندو ته توهان اهو ڪيو آهي ۽ اهو سٺو ناهي ته توهان هاڻي غلطي ڪري رهيا آهيو.

جاوا ڇو سکيو ۽ ان کي مؤثر طريقي سان ڪيئن ڪجي. Yandex رپورٽ

توھان کي ھڪڙي غلطي اڇلائڻ جي ضرورت آھي صارف جي ٺاھڻ جي وقت تي نه، پر جڏھن توھان سيٽ ڪريو null کي ID. تنهن ڪري، بلڊر ۾ اسان سيٽٽر انٽيگر کي int ۾ تبديل ڪنداسين، ۽ هو فوري طور تي قسم کڻندو ته انهن null ڪڍي ڇڏيو.

مختصر ۾، نقطو ڇا آهي؟ ھڪڙو سادو ٺاھيندڙ نمونو آھي، پر ان جي عمل ۾ پڻ ڪجھ ذيلي ذخيري آھن، تنھنڪري مختلف نمونن جي عملن کي ڏسڻ لاء تمام سٺو آھي. هر نموني ۾ درجن جي عملن تي مشتمل آهي. اهو سڀ ڪجهه ڏاڍو دلچسپ آهي.

جاوا ڇو سکيو ۽ ان کي مؤثر طريقي سان ڪيئن ڪجي. Yandex رپورٽ

پروڊڪشن ڪوڊ ۾ بلڊر ڪيئن لکجي؟ هتي اسان جو استعمال ڪندڙ آهي. اسان Lombok لائبريري مان هڪ بلڊر جي گردش کي ان سان ڳنڍيندا آهيون، ۽ اهو پاڻ اسان لاءِ هڪ بلڊر ٺاهي ٿو. اهو آهي، اسان ڪو به ڪوڊ نه لکندا آهيون، پر جاوا اڳ ۾ ئي سمجهي ٿو ته هن طبقي ۾ هڪ بلڊر آهي، ۽ اسان ان کي هن طرح سڏي سگهون ٿا.

مان اڳ ۾ ئي چئي چڪو آهيان ته جاوا وٽ لڳ ڀڳ هر شيءِ لاءِ لائبريريون آهن، بشمول Lombok، هڪ بهترين لائبريري جيڪا توهان کي بوائلر پليٽ لکڻ کان بچڻ جي اجازت ڏئي ٿي. ٺاھيندڙ، GET.

جاوا ڇو سکيو ۽ ان کي مؤثر طريقي سان ڪيئن ڪجي. Yandex رپورٽ

نمونا تعميراتي ٿي سگهن ٿا - لاڳاپيل نه رڳو هڪ طبقي سان، پر مجموعي طور تي سسٽم سان. سسٽم جي جوڙجڪ ۾ ھڪڙو ٿڌو اصول آھي: اڪيلو ذميواري اصول. هو ڪهڙي ڳالهه ڪري رهيو آهي؟ حقيقت اها آهي ته هر طبقي کي ان جي پنهنجي ڪارڪردگي جي ڪجهه ذميوار هجڻ گهرجي. انهي حالت ۾، اسان وٽ هڪ ڪنٽرولر آهي جيڪو صارفين سان رابطو ڪري ٿو، JSON شيون. اتي آهي Facade، جيڪو JSON شين کي ماڊل ۾ تبديل ڪري ٿو ته جاوا ايپليڪيشن پوء ڪم ڪندي. ھڪڙي خدمت آھي جنھن ۾ پيچيده منطق آھي جيڪي انھن ماڊل سان ڪم ڪن ٿيون. هتي هڪ ڊيٽا رسائي آبجیکٹ آهي جيڪو انهن ماڊل کي ڊيٽابيس ۾ رکي ٿو ۽ انهن کي ڊيٽابيس مان ٻيهر حاصل ڪري ٿو. ۽ اتي ئي ڊيٽابيس آهي. ٻين لفظن ۾، اهو سڀ هڪ طبقي ۾ ناهي، پر اسان پنج مختلف طبقن کي ٺاهي رهيا آهيون، ۽ اهو ٻيو نمونو آهي.

جاوا ڇو سکيو ۽ ان کي مؤثر طريقي سان ڪيئن ڪجي. Yandex رپورٽ

هڪ دفعو توهان جاوا گهڻو يا گهٽ سکيو، اهو توهان جي پنهنجي پروجيڪٽ کي لکڻ لاءِ تمام سٺو آهي جنهن ۾ هڪ ڊيٽابيس هوندو، ٻين APIs سان ڪم ڪندو، ۽ توهان جي سرور جي ايپليڪيشن کي REST API ڪلائنٽ تائين پهچايو. اهو توهان جي ٻيهر شروع ڪرڻ ۾ شامل ڪرڻ لاء هڪ بهترين شيء هوندو، اهو توهان جي تعليم لاء هڪ ٿڌو آخر هوندو. ان سان توهان وڃو ۽ نوڪري حاصل ڪري سگهو ٿا.

جاوا ڇو سکيو ۽ ان کي مؤثر طريقي سان ڪيئن ڪجي. Yandex رپورٽ

هتي منهنجي سرور ايپليڪيشن جو هڪ مثال آهي. منهنجي ٻئي سال ۾، مون دوستن سان هڪ اصطلاح پيپر لکيو. اهي واقعا منظم ڪرڻ لاءِ هڪ موبائل ايپليڪيشن لکي رهيا هئا. اتي، صارفين VKontakte ذريعي لاگ ان ڪري سگھن ٿا، نقشي تي پوائنٽون رکي، واقعا ٺاھيو، پنھنجي دوستن کي انھن ڏانھن دعوت ڏيو، واقعن جون تصويرون محفوظ ڪريو، وغيره.

مون منصوبي ۾ ڇا ڪيو؟ SQL استعمال ڪرڻ کان سواءِ اسپرنگ بوٽ ۾ سرور ايپليڪيشن لکي. مون هن کي نه سڃاتو، مون JPA استعمال ڪيو. اهو ڇا ڪري سگهي ٿو؟ لاگ ان ٿيو VK ذريعي OAuth-2. استعمال ڪندڙ جو ٽوڪن وٺو، ان سان گڏ VK ڏانھن وڃو، چيڪ ڪريو ته اھو ھڪڙو حقيقي صارف آھي. VKontakte ذريعي صارفين جي باري ۾ معلومات حاصل ڪريو. اهو هڪ ڊيٽابيس ۾ معلومات محفوظ ڪرڻ جي قابل هو، پڻ JPA ذريعي. ڪمپيوٽر جي ميموري ۾ تصويرون ۽ ٻيون فائلون مهارت سان محفوظ ڪريو، ۽ ڊيٽابيس ۾ انهن جا لنڪ محفوظ ڪريو. ان وقت مون کي خبر نه هئي ته ڊيٽابيس ۾ CLOB شيون موجود آهن، تنهنڪري مون هن طريقي سان ڪيو. اتي موجود هئي REST API استعمال ڪندڙن لاءِ، ڪلائنٽ ايپليڪيشنون. ۽ اتي بنيادي ڪارڪردگي لاء يونٽ ٽيسٽ هئا.

[...] جاوا جي منهنجي ڪامياب سکيا جو هڪ ننڍڙو مثال. يونيورسٽي ۾ منهنجي پهرين سال ۾، مون کي سي # سيکاريو ويو ۽ OOP پروگرامنگ جي سمجھ ڏني وئي - ڪهڙا ڪلاس، انٽرفيس، تجريد آهن، ۽ انهن جي ضرورت ڇو آهي. اهو مون کي تمام گهڻو مدد ڪئي. ان کان سواء، جاوا سکڻ تمام ڏکيو آهي؛ اهو واضح ناهي ته ڪلاس ڇو گهربل آهن.

جاوا ڇو سکيو ۽ ان کي مؤثر طريقي سان ڪيئن ڪجي. Yandex رپورٽ

يونيورسٽيءَ ۾ منهنجي ٻئي سال ۾، هنن وري جاوا ڪور سيکاريو، پر مان اتي نه رکان، مان پاڻ به اسپرنگ پڙهڻ لاءِ ويس ۽ هڪ ڪورس پيپر لکيو، منهنجو پروجيڪٽ، جنهن جو مون مٿي ذڪر ڪيو آهي. ۽ ان سان گڏ، مان Yandex ۾ هڪ انٽرنيشنل شپ لاءِ ويس، هڪ انٽرويو پاس ڪيو، ۽ Yandex.Market ۾ داخل ٿيو. اتي مون بيرو لاءِ پس منظر لکيو، ھي اسان جي مارڪيٽ آھي، ۽ پاڻ Yandex.Market لاءِ.

ان کان پوء، ڇهه مهينا اڳ، مون کي ساڳئي مارڪيٽ ۾ هڪ ٻي ٽيم ڏانهن منتقل ڪيو ويو. اسان ڪاروباري ڀائيوارن لاء تجزياتي ڪندا آهيون. اسان تجزياتي پليٽ فارم ۾ آهيون، اسان مان ٽي آهن پس منظر تي، تنهنڪري مون کي منصوبي تي اثر انداز جو تمام وڏو حصو آهي. اهو تمام دلچسپ آهي، حقيقت ۾. اھو آھي، اسان اصل ۾ مارڪيٽ تي ڊيٽا مهيا ڪندا آھيون - ڪھڙا وڪرو آھن، ڪھڙي قسم جا، ڪھڙا ماڊل، ڪاروباري ڀائيوارن لاءِ، وڏيون معروف ڪمپنيون. ۽ اسان مان صرف ٽي آهن، اسان هي ڪوڊ لکون ٿا، ۽ اهو تمام سٺو آهي.

تنهنجي مهرباني! مفيد لنڪس:
- "جاوا 8. شروعاتي گائيڊ".
- ڊيٽا جي جوڙجڪ.
- SQLZOO |.
- ڊيٽابيس کي عام ڪرڻ.
- ڊيزائن جا نمونا.
- خاڪي نموني.
- صاف قائدا.
- مؤثر جاوا.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو