Чаро Java-ро омӯзед ва чӣ гуна онро самаранок иҷро кунед. Ҳисоботи Yandex

Java аз дигар забонҳои маъмул чӣ фарқ дорад? Чаро Java бояд забони аввалини омӯхташуда бошад? Биёед нақшаеро таҳия кунем, ки ба шумо ҳам аз сифр ва ҳам тавассути татбиқи малакаҳои барномасозӣ бо забонҳои дигар омӯхтани Java кӯмак кунад. Биёед фарқиятҳои байни эҷоди коди истеҳсолӣ дар Java ва таҳияи забонҳои дигарро номбар кунем. Михаил Затепякин ин маърузаро дар мачлиси машваратй барои иштироккунандагони оянда хонда дод таҷрибаомӯзӣ Яндекс ва дигар таҳиягарони ибтидоӣ - мулоқоти Java Junior.


— Салом ба хама, номи ман Миша. Ман як таҳиягари Yandex.Market ҳастам ва имрӯз ман ба шумо мегӯям, ки чаро Java-ро омӯзед ва чӣ гуна онро самаранок иҷро кунед. Шумо метавонед як саволи оқилона диҳед: чаро ман ин ҳикояро нақл хоҳам кард, на як таҳиягари пурқуввате, ки таҷрибаи чандинсола дорад? Гап дар он аст, ки ман худам Java-ро ба наздикӣ, тақрибан якуним сол пеш омӯхта будам, аз ин рӯ то ҳол дар ёд дорам, ки он чӣ гуна буд ва чӣ гуна домҳо вуҷуд дорад.

Як сол пеш ман дар Яндекс.Маркет таҷрибаомӯзӣ гирифтам. Ман пуштибониро барои Беру таҳия кардам, барои худи бозор, шумо эҳтимол онро истифода кардаед. Ҳоло ман дар он ҷо, дар як дастаи дигар кор мекунам. Мо платформаи таҳлилиро барои Yandex.Market барои шарикони тиҷоратӣ эҷод мекунем.

Чаро Java-ро омӯзед ва чӣ гуна онро самаранок иҷро кунед. Ҳисоботи Yandex

Биёед оғоз кунем. Чаро Java-ро аз нуқтаи назари амалӣ меомӯзед? Далели он аст, ки Java забони хеле машҳури барномасозӣ аст. Он ҷамъияти хеле калон дорад.

Масалан, чунин як шохиси TIOBE, шохиси маъруфи маъруфияти забонҳои барномасозӣ вуҷуд дорад ва Java дар он ҷо ҷои аввалро ишғол мекунад. Инчунин, дар сайтҳои корӣ, шумо эҳтимол пай хоҳед кард, ки аксари ҷойҳои холӣ дар бораи Java мебошанд, яъне бо таҳияи Java, шумо ҳамеша метавонед ҷои кор пайдо кунед.

Азбаски ҷомеа хеле калон аст, ҳама саволе, ки шумо доред, дар баъзе Stack Overflow ё сайтҳои дигар ҷавоб хоҳед ёфт. Инчунин, ҳангоми таҳияи Java, шумо воқеан дар JVM код менависед, то шумо метавонед ба осонӣ ба Kotlin, Scala ва дигар забонҳое, ки JVM-ро истифода мебаранд, гузаред.

Чаро Java-ро омӯзед ва чӣ гуна онро самаранок иҷро кунед. Ҳисоботи Yandex

Дар бораи Java аз нуқтаи назари идеологӣ чӣ хуб аст? Забонҳои гуногуни барномасозӣ мавҷуданд. Онҳо мушкилоти гуногунро ҳал мекунанд, шумо медонед. Масалан, Python барои навиштани скриптҳои як сатр барои ҳалли мушкилоти зуд олӣ аст.

Аз тарафи мусбат, шумо метавонед рамзи иҷрошавандаро пурра назорат кунед. Масалан, мо мошинҳо дорем, мошинҳои бидуни ронандаи Яндекс, рамзи онҳо бо плюс навишта шудааст. Чаро? Java чунин чизе дорад - Ҷамъоварии партовҳо. Он RAM-ро аз объектҳои нолозим тоза мекунад. Ин чиз ба таври стихиявӣ оғоз меёбад ва ҷаҳонро қатъ мекунад, яъне он қисми боқимондаи барномаро қатъ мекунад ва ба ҳисоб кардани объектҳо, хотираи равшани объектҳо меравад. Агар чунин кор дар як дрон кор кунад, ин хуб нест. Дрони шумо рост меронад, дар айни замон хотираи худро тоза мекунад ва ба роҳ тамоман нигоҳ намекунад. Аз ин рӯ, дрон дар профессионал навишта шудааст.

Чаро Java-ро омӯзед ва чӣ гуна онро самаранок иҷро кунед. Ҳисоботи Yandex

Java кадом мушкилотро ҳал мекунад? Ин пеш аз ҳама забонест барои таҳияи барномаҳои калон, ки дар тӯли солҳо аз ҷониби даҳҳо ё садҳо одамон навишта мешаванд. Аз ҷумла, бисёре аз пуштибонии Yandex.Market дар Java навишта шудаанд. Мо дар якчанд шаҳр як дастаи тақсимшуда дорем, ки дар ҳар кадом даҳ нафар. Ва кодро нигоҳ доштан осон аст, он даҳ сол ё бештар аз он дастгирӣ карда мешавад ва дар айни замон одамони нав меоянд ва ин кодро мефаҳманд.

Забон бояд кадом хусусиятҳоро дошта бошад, то коди он ба осонӣ дастгирӣ шавад ва он дар дастаҳои калон ба осонӣ таҳия карда шавад. Пеш аз хама, он бояд коди хондашаванда бошад ва барои татбики карорхои мураккаби меъморй осон бошад. Яъне навиштани абстраксияҳои сатҳи баланд ва ғайра бояд осон бошад. Ҳамаи ин он чизест, ки Java ба мо медиҳад. Ин забони ба объект нигаронидашуда аст. Татбиқи абстраксияҳои сатҳи баланд ва меъмории мураккаб воқеан осон аст.

Инчунин барои Java чаҳорчӯба ва китобхонаҳои зиёде мавҷуданд, зеро забони он зиёда аз 15 сол дорад. Дар тӯли ин вақт, ҳама чизеро, ки метавон навишт, дар он навишта шуда буд, аз ин рӯ даҳҳо китобхонаҳо барои ҳама чизҳое, ки ба шумо лозиманд, мавҷуданд.

Чаро Java-ро омӯзед ва чӣ гуна онро самаранок иҷро кунед. Ҳисоботи Yandex

Ба андешаи ман, як бозигари ибтидоии JA бояд кадом малакаҳои асосӣ дошта бошад? Пеш аз ҳама, ин донистани забони асосии Java мебошад. Оянда як намуди чаҳорчӯбаи Injection Dependency аст. Нотики навбатй Кирилл дар ин бора пурратар накл мекунад. Ман хеле амиқ намеравам. Минбаъд намунаҳои меъморӣ ва тарроҳӣ мебошанд. Барои навиштани замимаҳои калон ба мо лозим аст, ки коди аз ҷиҳати меъморӣ зебо навишт. Ва ин як навъ SQL ё ORM барои вазифаҳои кор бо пойгоҳи додаҳост. Ва ин бештар ба пуштибон дахл дорад.

Чаро Java-ро омӯзед ва чӣ гуна онро самаранок иҷро кунед. Ҳисоботи Yandex

Бирав! Ядрои Java. Ман аслан Амрикоро дар ин ҷо кашф намекунам - шумо бояд худи забонро донед. Ба он чизе, ки шумо бояд диққат диҳед. Аввалан, Java дар солҳои охир версияҳои зиёдеро баровард, яъне дар солҳои 2014-2015 ҳафтум бароварда шуд, баъд ҳаштум, нӯҳум, даҳум, бисёр версияҳои нав ва дар онҳо бисёр чизҳои нави ҷолиб ворид карда шуданд. , масалан, Java Stream API , lambda ва ғайра. Чизҳои хеле олӣ, тару тоза ва олӣ, ки дар коди истеҳсолӣ истифода мешаванд, дар мусоҳибаҳо дар бораи он чӣ мепурсанд ва шумо бояд донед. Аз ин рӯ, шумо набояд аз рафи китобхонаи Java-4 китоб гиред ва онро омӯзед. Ин нақшаи мост: мо Java-8 ё навтарро меомӯзем.

Мо ба инноватсияҳо, аз қабили Stream API, var ва ғайра диққати ҷиддӣ медиҳем. Онҳоро ҳангоми мусоҳиба мепурсанд ва пайваста дар истеҳсолот истифода мешаванд. Яъне, Stream API нисбат ба ҳалқаҳо хеле сардтар аст, дар маҷмӯъ, чизи хеле олӣ аст. Ҳатман диққат диҳед.

Ва ҳама гуна чизҳо мавҷуданд, ба монанди итераторҳо, Истисноҳо ва ғайра. То он даме, ки шумо худатон коди хурд менависед, чизҳое, ки барои шумо аҳамият надоранд. Шумо ин Истисноҳо лозим нестед, ба ҳар ҳол онҳо ба кӣ лозим аст? Аммо дар мусоҳибаҳо онҳо ҳатман пурсида мешаванд, онҳо бешубҳа дар истеҳсолот ба шумо муфид хоҳанд буд. Умуман, шумо бояд ба Истисноҳо, итераторҳо ва чизҳои дигар диққат диҳед.

Чаро Java-ро омӯзед ва чӣ гуна онро самаранок иҷро кунед. Ҳисоботи Yandex

Сохторҳои маълумот. Шумо бе сохторҳо рафта наметавонед, аммо ин хеле хуб хоҳад буд, агар шумо нафаҳмед, ки маҷмӯаҳо, луғатҳо ва варақҳо мавҷуданд. Ва инчунин татбиқи гуногуни сохторҳо. Масалан, ҳамон луғат дар Java амалҳои зиёде дорад, аз ҷумла HashMap ва TreeMap. Онҳо асимптотикаи гуногун доранд, дар дохили онҳо ба таври гуногун сохта шудаанд. Шумо бояд бидонед, ки онҳо чӣ гуна фарқ мекунанд ва кай кадомашро истифода бурдан лозим аст.

Агар шумо бидонед, ки ин сохторҳои додаҳо дар дохили он чӣ гуна кор мекунанд, хеле хуб хоҳад буд. Яъне донистани асимптотикаи онҳо осон нест - шарт чӣ қадар кор мекунад, гузариш чӣ қадар кор мекунад, аммо сохтор дар дохили он чӣ гуна кор мекунад - масалан, сатил дар HashMap чист.

Инчунин ба дарахтон ва графикҳо диққат додан лозим аст. Ин чизҳое ҳастанд, ки дар коди истеҳсолӣ чандон маъмул нестанд, аммо онҳоро дар мусоҳибаҳо дӯст медоранд. Мувофиқи он, шумо бояд қодир бошед, ки дарахтҳо, графикҳоро дар паҳнӣ ва амиқ гузаронед. Ин ҳама алгоритмҳои оддӣ мебошанд.

Ҳамин ки шумо ба навиштани ҳама гуна рамзи калон, мураккаб, бо истифода аз китобхонаҳо, коди бисёрсинфӣ шурӯъ мекунед, шумо хоҳед фаҳмид, ки бидуни сохтани системаҳо ва ҳалли вобастагӣ бароятон душвор аст. Инҳо пеш аз ҳама Maven ва Gradle мебошанд. Онҳо ба шумо имкон медиҳанд, ки китобхонаҳоро ба лоиҳаи худ дар як сатр ворид кунед. Яъне, шумо як сатри xml менависед ва китобхонаҳоро ба лоиҳа ворид мекунед. Системаҳои бузург. Онҳо тақрибан якхелаанд, якеро истифода баред - Maven ё Gradle.

Оянда - як намуди системаи идоракунии версия. Ман Git-ро тавсия медиҳам, зеро он маъмул аст ва даҳҳо дарсҳо мавҷуданд. Қариб ҳама Git-ро истифода мебаранд, ин чизи аҷиб аст, шумо бе он зиндагӣ карда наметавонед.

Ва як навъ муҳити рушд. Ман IntelliJ Ide-ро тавсия медиҳам. Он раванди рушдро хеле суръат мебахшад, ба шумо кӯмаки зиёд медиҳад, ҳама коди таблиғро барои шумо менависад, дар маҷмӯъ, ин хуб аст.

Чаро Java-ро омӯзед ва чӣ гуна онро самаранок иҷро кунед. Ҳисоботи Yandex

Истинодҳо аз слайд: SQLZOO, хабрапост

SQL. Каме дар бораи пуштибонҳо. Дар ин ҷо воқеан як ҳодисаи хандаовар буд. Ду рӯз пеш аз мусоҳибаи дуюми таҷрибаомӯзӣ, як духтари HR ба ман занг зад ва гуфт, ки дар ду рӯз онҳо аз ман дар бораи SQL ва HTTP мепурсанд, ман бояд онро омӯзам. Ва ман дар бораи SQL ё HTTP қариб чизе намедонистам. Ва ман ин сайти ҷолибро ёфтам - SQLZOO. Ман SQL-ро дар давоми 12 соат омӯхтам, яъне синтаксиси SQL, чӣ тавр навиштани дархостҳои SELECT, JOIN ва ғайра. Сомонаи хеле олӣ, ман онро хеле тавсия медиҳам. Дарвоқеъ, дар 12 соат ман 90% он чизеро, ки ҳоло медонам, омӯхтам.

Ва инчунин донистани меъмории пойгоҳи додаҳо хеле хуб аст. Инҳо ҳама гуна калидҳо, индексҳо, нормализатсия мебошанд. Дар бораи ин дар Ҳабре як қатор паёмҳо мавҷуданд.

Чаро Java-ро омӯзед ва чӣ гуна онро самаранок иҷро кунед. Ҳисоботи Yandex

Дар Java, ба ғайр аз SQL, ҳама гуна системаҳои харитасозии объектӣ, ба монанди JPA мавҷуданд. Якчанд код вуҷуд дорад. Дар усули аввал баъзе коди SQL мавҷуд аст - SELECT id name FROM info.users WHERE id IN userIds. Аз базаи истифодабарандагон, аз ҷадвал, ID ва номҳои онҳо гирифта мешаванд.

Баъдан, як харитасоз мавҷуд аст, ки объектро аз база ба объекти Java табдил медиҳад. Ва дар зер усули сеюм вуҷуд дорад, ки воқеан ин кодро иҷро мекунад. Ҳамаи инро бо истифода аз JPA бо як сатр иваз кардан мумкин аст, ки дар зер навишта шудааст. Он ҳамон корро мекунад - All ByIdIn-ро пайдо кунед. Яъне, дар асоси номи усул, он барои шумо дархости SQL тавлид мекунад.

Чизи хеле аҷиб. Ман худам, вақте ки ман SQL-ро намедонистам, JPA-ро истифода мебурдам. Умуман, диққат диҳед. Агар шумо барои омӯхтани SQL танбал бошед, ин як фалокат аст. Ва умуман, оташ!

Чаро Java-ро омӯзед ва чӣ гуна онро самаранок иҷро кунед. Ҳисоботи Yandex

Баҳор. Кӣ дар бораи чунин чизе ба монанди чаҳорчӯбаи баҳор шунидааст? Оё шумо мебинед, ки шумо чанд нафаред? Бесабаб не. Баҳор ба талаботи ҳар як ҷои дуюми пуштибонии Java дохил карда шудааст. Бидуни он, воқеан ҳеҷ ҷое дар рушди бузург вуҷуд надорад. Баҳор чист? Пеш аз ҳама, ин чаҳорчӯбаи Injection Dependency аст. Дар ин бора низ накл мекунад маърузачии навбатй. Аммо дар кӯтоҳ, ин чизест, ки ба шумо имкон медиҳад, ки вобастагии баъзе синфҳоро ба дигарон осонтар кунед. Яъне, дониши вобастагӣ содда карда мешавад.

Spring Boot як пораи баҳор аст, ки ба шумо имкон медиҳад барномаи сервери худро бо як тугма иҷро кунед. Шумо ба THID меравед, якчанд тугмаро пахш мекунед ва ҳоло шумо барномаи сервери худро дар localhost 8080 кор карда истодаед. Яъне, шумо то ҳол як сатри код нанавиштаед, аммо он аллакай кор мекунад. Чизи хеле аҷиб. Агар шумо чизе аз худатон нависед, оташ!

Баҳор чаҳорчӯбаи хеле калон аст. Он на танҳо барномаи сервери шуморо мегирад ва тазриқи Dependency -ро ҳал мекунад. Он ба шумо имкон медиҳад, ки як қатор корҳоро иҷро кунед, аз ҷумла эҷод кардани усулҳои REST API. Яъне шумо ягон усул навиштед ва ба он шарҳи харитасозии Get-ро замима кардед. Ва ҳоло шумо аллакай дар localhost як усул доред, ки ба шумо Салом ҷаҳонро менависад. Ду сатри код ва он кор мекунад. Чизҳои сард.

Баҳор инчунин санҷишҳои навиштанро осон мекунад. Бе озмоиш дар рушди калон ҳеҷ роҳе нест. Рамз бояд санҷида шавад. Бо ин мақсад, Java дорои китобхонаи зебои JUnit 5. Ва умуман JUnit, аммо версияи охирини панҷум аст. Ҳама чиз барои санҷиш, ҳама гуна изҳорот ва чизҳои дигар вуҷуд дорад.

Ва чаҳорчӯбаи аҷиби Mockito вуҷуд дорад. Тасаввур кунед, ки шумо ягон функсия доред, ки мехоҳед санҷед. Функсия чизҳои зиёдеро иҷро мекунад, аз ҷумла, дар ҷое дар мобайн, масалан, бо ID-и шумо ба ВКонтакте ворид мешавад ва аз ID ному насаби корбари ВКонтакте мегирад. Эҳтимол шумо VKontakte-ро ба санҷишҳо дохил нахоҳед кард, ин аҷиб аст. Аммо ба шумо лозим аст, ки функсияро санҷед, бинобар ин шумо ин синфро бо истифода аз Mockito сохтаед, онро тақлид кардаед.

Шумо мегӯед, ки вақте дархосте ба ин синф бо ID-и фалон ва фалон меояд, он фамилияро бармегардонад, масалан, Вася Пупкин. Ва он кор хоҳад кард. Яъне, шумо тамоми функсияҳоро барои mok як синф месанҷед. Чизи хеле аҷиб.

Чаро Java-ро омӯзед ва чӣ гуна онро самаранок иҷро кунед. Ҳисоботи Yandex

Истинод аз слайд

Намунаҳои тарроҳӣ. Ин чист? Инҳо қолибҳои ҳалли мушкилоти маъмулие мебошанд, ки ҳангоми рушд ба миён меоянд. Ҳангоми таҳия, мушкилоти якхела ё шабеҳ аксар вақт ба миён меоянд, ки ҳалли онҳо хеле хуб мебуд. Аз ин рӯ, одамон дар бораи чӣ гуна ҳал кардани ин мушкилот таҷрибаҳои беҳтарин, қолабҳои муайянро таҳия карданд.

Вебсайте мавҷуд аст, ки намунаҳои маъмултарин дорад - refactoring.guru, шумо метавонед онро хонед, бидонед, ки кадом намунаҳо мавҷуданд, як даста назарияро хонед. Масъала дар он аст, ки он амалан бефоида аст. Дар асл, намунаҳои бе амалия махсусан муфид нестанд.

Шумо дар бораи баъзе намунаҳо ба монанди Singletone ё Builder хоҳед шунид. Ин суханонро кӣ шунидааст? Бисьёр одамон. Чунин намунаҳои оддӣ мавҷуданд, ки шумо метавонед худатон амал кунед. Аммо аксари намунаҳо: стратегия, фабрика, фасад - маълум нест, ки онҳоро дар куҷо истифода бурдан лозим аст.

Ва то даме ки шумо дар амал дар коди ягон шахси дигар ҷойеро набинед, ки ин намуна дар он татбиқ карда мешавад, шумо наметавонед онро худатон татбиқ кунед. Аз ин рӯ, амалия бо намунаҳо хеле муҳим аст. Ва танҳо хондан дар бораи онҳо дар refactoring.guru муфид нест, аммо ин бешубҳа арзанда аст.

Чаро Java-ро омӯзед ва чӣ гуна онро самаранок иҷро кунед. Ҳисоботи Yandex

Чаро намунаҳо лозиманд? Фарз мекунем, ки шумо як синфи муайяни корбар доред. Он ID ва ном дорад. Ҳар як корбар бояд ҳам ID ва ҳам ном дошта бошад. Дар тарафи чапи боло синфхона аст.

Роҳҳои оғоз кардани корбар кадомҳоянд? Ду вариант вуҷуд дорад - ё созанда ё танзимкунанда. Камбудиҳои ҳарду равиш чӣ гунаанд?

Конструктор. Корбари нав (7, "Бонд"), хуб. Акнун биёед бигӯем, ки мо синфи корбар надорем, аммо синфи дигар бо ҳафт майдони рақамӣ. Шумо конструкторе хоҳед дошт, ки ҳафт рақами пайдарпайро дар бар мегирад. Маълум нест, ки ин рақамҳо чист ва кадоме аз онҳо ба кадом амвол тааллуқ дорад. Дизайнер бузург нест.

Варианти дуюм танзимкунанда аст. Шумо равшан менависед: setId (7), setName ("Бонд"). Шумо мефаҳмед, ки кадом моликият ба кадом соҳа тааллуқ дорад. Аммо сетер мушкилот дорад. Аввалан, шумо метавонед таъин кардани чизеро фаромӯш кунед ва дуюм, объекти шумо тағирёбанда мешавад. Ин ришта бехатар нест ва хондани кодро каме коҳиш медиҳад. Аз ин чост, ки одамон як намунаи олихимматона — Бинокорро ба миён гузоштанд.

Чаро Java-ро омӯзед ва чӣ гуна онро самаранок иҷро кунед. Ҳисоботи Yandex

Ин дар бораи чӣ аст? Биёед кӯшиш кунем, ки бартариҳои ҳарду равиш - танзимкунанда ва созанда - дар як ҷо якҷоя кунем. Мо як объекти муайяни Сохтмонро месозем, ки он дорои майдонҳои Id ва Ном низ хоҳад буд, ки худаш дар асоси танзимкунанда сохта мешавад ва он дорои усули Сохта мешавад, ки ба шумо корбари навро бо тамоми параметрҳо бармегардонад. Мо объекти тағирнопазир ва танзимкунанда мегирем. Хуб!

Мушкилот чист? Дар ин ҷо мо Сохтмони классикӣ дорем. Мушкилот дар он аст, ки мо ҳоло ҳам метавонем тафтишро дар баъзе соҳа фаромӯш кунем. Ва агар мо дидани ID-ро фаромӯш карда бошем, дар ин ҳолат дар Builder он ба сифр оғоз карда мешавад, зеро навъи int беэътибор нест. Ва агар мо Номи "Бонд" -ро созем ва боздид аз идораи ID-ро фаромӯш кунем, мо корбари нав бо ID "0" ва номи "Бонд" хоҳем дошт. Хуб нест.

Биёед кӯшиш кунем, ки бо ин мубориза барем. Дар Builder мо int-ро ба int иваз мекунем, то ки он беэътибор бошад. Акнун ҳама чиз бузург аст.

Чаро Java-ро омӯзед ва чӣ гуна онро самаранок иҷро кунед. Ҳисоботи Yandex

Агар мо кӯшиш кунем, ки корбареро бо номи "Бонд" эҷод кунем ва гузоштани ID-и худро фаромӯш кунем, мо истиснои нишондиҳандаи нулро ба даст меорем, зеро ID беэътибор нест ва Builder истиснои нул дорад, махсусан нишондиҳанда.

Чаро Java-ро омӯзед ва чӣ гуна онро самаранок иҷро кунед. Ҳисоботи Yandex

Аммо мо ба ҳар ҳол метавонем гузоштани номро фаромӯш кунем, аз ин рӯ бозсозии объектро ба нул муқаррар кардем. Ҳоло, вақте ки мо объекти худро аз Builder месозем, он тафтиш мекунад, ки майдон беэътибор нест. Ва ин ҳама нест.

Биёед ба мисоли охирин назар андозем. Дар ин ҳолат, агар мо бо ягон роҳ дар вақти иҷроиши ID null гузорем, хуб мебуд, ки фавран бидонем, ки шумо ин корро кардаед ва ин кори хуб нест, ки шумо ҳоло хато карда истодаед.

Чаро Java-ро омӯзед ва чӣ гуна онро самаранок иҷро кунед. Ҳисоботи Yandex

Ба шумо лозим аст, ки хатогиро на дар лаҳзаи эҷоди корбар, балки вақте ки шумо ба ID null муқаррар кардаед. Аз ин рӯ, дар Builder мо танзимгари Integer-ро ба int иваз мекунем ва ӯ дарҳол қасам хӯрд, ки онҳо нулро хориҷ кардаанд.

Хулоса, дар чист? Намунаи оддии Builder вуҷуд дорад, аммо ҳатто татбиқи он баъзе нозукиҳо дорад, аз ин рӯ дидан ба татбиқҳои гуногуни намунаҳо хеле ҷолиб аст. Ҳар як намуна дорои даҳҳо амалия мебошад. Ин ҳама хеле ҷолиб аст.

Чаро Java-ро омӯзед ва чӣ гуна онро самаранок иҷро кунед. Ҳисоботи Yandex

Чӣ тавр мо дар коди истеҳсолӣ Builder нависед? Ин аст корбари мо. Мо аз китобхонаи Ломбок ба он як гардиши Builder замима мекунем ва худи он барои мо Сохтмонро тавлид мекунад. Яъне, мо ягон код наменависем, аммо Java аллакай фикр мекунад, ки ин синф Builder дорад ва мо метавонем онро чунин номида тавонем.

Ман аллакай гуфта будам, ки Java дорои китобхонаҳои қариб ҳама чиз аст, аз ҷумла Lombok, китобхонаи олӣ, ки ба шумо имкон медиҳад, ки аз навиштани дегхона худдорӣ кунед. Бинокор, ГЕТ.

Чаро Java-ро омӯзед ва чӣ гуна онро самаранок иҷро кунед. Ҳисоботи Yandex

Намунаҳо метавонанд меъморӣ бошанд - на танҳо ба як синф, балки ба тамоми система алоқаманданд. Дар тарҳрезии система чунин як принсипи олӣ вуҷуд дорад: Принсипи масъулиятшиносии ягона. Вай дар бораи чй гап мезанад? Далели он, ки ҳар як синф бояд барои баъзе функсияҳои худ масъул бошад. Дар ин ҳолат, мо як Назоратчӣ дорем, ки бо корбарон, объектҳои JSON муошират мекунад. Фасад мавҷуд аст, ки объектҳои JSON-ро ба моделҳое табдил медиҳад, ки барномаи Java баъдан бо онҳо кор хоҳад кард. Хизмате мавҷуд аст, ки мантиқи мураккаб дорад, ки бо ин моделҳо кор мекунад. Объекти дастрасии маълумот мавҷуд аст, ки ин моделҳоро ба пойгоҳи додаҳо мегузорад ва онҳоро аз пойгоҳи додаҳо бармегардонад. Ва худи база вуҷуд дорад. Ба ибораи дигар, ин ҳама дар як синф нест, аммо мо панҷ синфи гуногунро месозем ва ин намунаи дигар аст.

Чаро Java-ро омӯзед ва чӣ гуна онро самаранок иҷро кунед. Ҳисоботи Yandex

Пас аз он ки шумо Java-ро кам ё кам омӯхтед, хуб аст, ки лоиҳаи шахсии худро нависед, ки дорои пойгоҳи додаҳо, кор бо API-ҳои дигар ва барномаи сервери худро ба мизоҷони REST API фош мекунад. Ин як чизи олие хоҳад буд, ки ба резюмеи шумо илова кунед, ин як анҷоми хуби таҳсили шумо хоҳад буд. Бо ин шумо метавонед рафта кор пайдо кунед.

Чаро Java-ро омӯзед ва чӣ гуна онро самаранок иҷро кунед. Ҳисоботи Yandex

Дар ин ҷо як мисоли барномаи сервери ман аст. Дар соли дуюм ман бо бачаҳо як кори курсӣ навиштам. Онҳо барномаи мобилӣ барои ташкили чорабиниҳо менависанд. Дар он ҷо корбарон метавонанд тавассути ВКонтакте ворид шаванд, нуқтаҳоро дар харита ҷойгир кунанд, чорабиниҳо эҷод кунанд, дӯстони худро ба онҳо даъват кунанд, тасвирҳои рӯйдодҳоро захира кунанд ва ғайра.

Ман дар лоиҳа чӣ кор кардам? Дар Spring Boot як барномаи серверро бидуни истифодаи SQL навишт. Ман ӯро намешинохтам, ман JPA-ро истифода кардам. Он чӣ кор карда метавонист? Ба VK тавассути OAuth-2 ворид шавед. Токени корбарро гиред, бо он ба ВК гузаред ва санҷед, ки он корбари воқеӣ аст. Дар бораи корбарон тавассути ВКонтакте маълумот гиред. Он тавонист маълумотро дар пойгоҳи додаҳо, инчунин тавассути JPA захира кунад. Суратҳо ва файлҳои дигарро дар хотираи компютер моҳирона захира кунед ва пайвандҳоро ба онҳо дар базаи маълумот захира кунед. Он вақт ман намедонистам, ки дар пойгоҳи додаҳо объектҳои CLOB вуҷуд доранд, бинобар ин ман ин корро кардам. Барои корбарон, барномаҳои муштарӣ API REST мавҷуд буд. Ва санҷишҳои воҳид барои фаъолияти асосӣ вуҷуд доштанд.

[…] Намунаи хурди омӯзиши бомуваффақияти ман дар Java. Дар соли аввал дар донишгоҳ ба ман забони C# таълим дода шуд ва дар бораи барномасозии OOP фаҳмиш доданд - кадом синфҳо, интерфейсҳо, абстраксия ва чаро онҳо лозиманд. Ин ба ман хеле кӯмак кард. Бе ин, омӯзиши Java хеле душвор аст; маълум нест, ки чаро дарсҳо лозиманд.

Чаро Java-ро омӯзед ва чӣ гуна онро самаранок иҷро кунед. Ҳисоботи Yandex

Дар соли дуюми ман дар донишгоҳ онҳо боз ядрои Java-ро таълим медоданд, аммо ман дар ин ҷо таваққуф накардам, худам ба омӯзиши Баҳор рафтам ва як кори курсӣ, лоиҳаи худ, ки дар боло зикр кардам, навиштам. Ва бо ин ҳама, ман барои таҷрибаомӯзӣ дар Яндекс рафтам, аз мусоҳиба гузаштам ва ба Яндекс.Маркет дохил шудам. Дар он ҷо ман пуштибониро барои Беру навиштам, ин бозори мо ва худи Yandex.Market аст.

Пас аз он, шаш моҳ пеш ман ба дастаи дигар дар ҳамон бозор гузаштам. Мо барои шарикони тиҷоратӣ таҳлил мекунем. Мо дар платформаи таҳлилӣ ҳастем, дар пушти сар се нафар ҳастем, бинобар ин ман дар лоиҳа саҳми хеле калон дорам. Ин хеле ҷолиб аст, дар асл. Ин аст, ки мо воқеан маълумотро дар бораи бозор пешниҳод мекунем - фурӯш чӣ гуна аст, дар кадом категорияҳо, дар кадом моделҳо, барои шарикони тиҷоратӣ, ширкатҳои бузурги маъруф. Ва мо танҳо се нафар ҳастем, мо ин кодро менависем ва ин хеле хуб аст.

Сипос! Истинодҳои муфид:
- "Java 8. Дастур барои шурӯъкунандагон".
- Сохторҳои маълумот.
- SQLZOO.
- Нормализатсияи пойгоҳи додаҳо.
- Намунаҳои тарроҳӣ.
- Намунаҳои тарроҳӣ.
- Кодекси тоза.
- Java самаранок.

Манбаъ: will.com

Илова Эзоҳ