Яагаад Java сурах вэ, үүнийг хэрхэн үр дүнтэй хийх вэ? Yandex тайлан

Java хэл нь бусад алдартай хэлнээс юугаараа ялгаатай вэ? Яагаад Java хэл хамгийн түрүүнд сурах ёстой вэ? Жава хэлийг эхнээс нь болон бусад хэл дээр програмчлалын ур чадвараа ашиглан сурахад тань туслах төлөвлөгөө гаргацгаая. Java хэл дээр үйлдвэрлэлийн код үүсгэх болон бусад хэл дээр хөгжүүлэх хоёрын ялгааг жагсаацгаая. Михаил Затепякин энэ илтгэлийг ирээдүйн оролцогчдод зориулсан уулзалт дээр уншив дадлага хийх Yandex болон бусад шинэ хөгжүүлэгчид - Java Junior уулзалт.


- Бүгдээрээ сайн уу, намайг Миша гэдэг. Би Yandex.Market-ийн хөгжүүлэгч бөгөөд өнөөдөр яагаад Java сурах, үүнийг хэрхэн үр дүнтэй хийхийг танд хэлэх болно. Та боломжийн асуулт асууж магадгүй: яагаад би олон жилийн туршлагатай хүчирхэг хөгжүүлэгч биш харин энэ түүхийг ярих болов? Би өөрөө саяхан, жил хагасын өмнө Java-г судалж байсан болохоор ямар байсан, ямар бэрхшээл байдгийг одоо ч санаж байна.

Жилийн өмнө би Yandex.Market-д дадлага хийсэн. Би Beru-д зориулж, зах зээлд зориулж арын хэсгийг боловсруулсан, та үүнийг ашигласан байх. Одоо би тэнд өөр багт үргэлжлүүлэн ажиллаж байна. Бид Yandex.Market-ийн бизнесийн түншүүдэд зориулсан аналитик платформыг бий болгодог.

Яагаад Java сурах вэ, үүнийг хэрхэн үр дүнтэй хийх вэ? Yandex тайлан

Эхэлцгээе. Яагаад Java хэлийг практик талаас нь сурах вэ? Баримт нь Java бол маш алдартай програмчлалын хэл юм. Энэ нь маш том нийгэмлэгтэй.

Жишээлбэл, програмчлалын хэлний алдартай индекс болох TIOBE индекс байдаг бөгөөд Java нь тэнд нэгдүгээрт ордог. Мөн ажлын сайтууд дээр та ихэнх сул орон тоо нь Java хэлтэй холбоотой байдгийг анзаарах байх, өөрөөр хэлбэл Java хэлийг хөгжүүлснээр та үргэлж ажил олох боломжтой болно.

Нийгэмлэг маш том тул танд ямар ч асуулт хариултыг зарим Stack Overflow эсвэл бусад сайтаас олох болно. Түүнчлэн, Java хэл дээр хөгжүүлж байхдаа та JVM дээр код бичиж байгаа тул Kotlin, Scala болон JVM ашигладаг бусад хэл рүү хялбархан шилжих боломжтой.

Яагаад Java сурах вэ, үүнийг хэрхэн үр дүнтэй хийх вэ? Yandex тайлан

Үзэл суртлын үүднээс Java нь юугаараа сайн бэ? Өөр өөр програмчлалын хэлүүд байдаг. Тэд янз бүрийн асуудлыг шийддэг, та үүнийг мэднэ. Жишээлбэл, Python нь асуудлыг хурдан шийдвэрлэхийн тулд нэг мөрт скрипт бичихэд тохиромжтой.

Сайн тал нь та гүйцэтгэх кодыг бүрэн хянах боломжтой. Жишээлбэл, бидэнд машинууд байдаг, Yandex жолоочгүй машинууд, тэдгээрийн кодыг нэмэх үсгээр бичсэн байдаг. Яагаад? Java-д ийм зүйл байдаг - Хог цуглуулагч. Энэ нь RAM-г шаардлагагүй объектуудаас цэвэрлэдэг. Энэ зүйл аяндаа эхэлж, ертөнцийг зогсоодог, өөрөөр хэлбэл, энэ нь програмын үлдсэн хэсгийг зогсоож, объектыг тоолох, объектын санах ойг цэвэрлэхэд чиглэгддэг. Хэрэв ийм зүйл дрон дээр ажилладаг бол энэ нь тийм ч таатай биш юм. Таны дрон шулуун жолоодох бөгөөд энэ мөчид санах ойгоо цэвэрлэж, зам руу огт хардаггүй. Тиймээс, дрон нь давуу тал дээр бичигдсэн байдаг.

Яагаад Java сурах вэ, үүнийг хэрхэн үр дүнтэй хийх вэ? Yandex тайлан

Java ямар асуудлыг шийддэг вэ? Энэ нь үндсэндээ олон арван эсвэл хэдэн зуун хүний ​​бичсэн том программуудыг боловсруулахад зориулагдсан хэл юм. Ялангуяа Yandex.Market-ийн арын хэсэг нь Java хэл дээр бичигдсэн байдаг. Бид хэд хэдэн хотод хуваарилагдсан багтай, тус бүр арван хүнтэй. Мөн кодыг засварлахад хялбар, арав ба түүнээс дээш жил дэмжигдсэн, тэр үед шинэ хүмүүс орж ирж, энэ кодыг ойлгодог.

Хэл нь ямар шинж чанартай байх ёстой бөгөөд ингэснээр түүний доторх кодыг хялбархан дэмжиж, том багуудад хялбархан хөгжүүлж болно. Юуны өмнө энэ нь унших боломжтой код байх ёстой бөгөөд архитектурын цогц шийдлүүдийг хэрэгжүүлэхэд хялбар байх ёстой. Өөрөөр хэлбэл, өндөр түвшний хийсвэрлэл бичихэд хялбар байх ёстой. Энэ бүхэн нь Java-г бидэнд өгдөг. Энэ бол объект хандалтат хэл юм. Өндөр түвшний хийсвэрлэл, нарийн төвөгтэй архитектурыг хэрэгжүүлэхэд үнэхээр амархан.

Мөн Java-д зориулсан олон тооны фреймворк, номын сан байдаг, учир нь хэл нь 15-аас дээш жилийн настай. Энэ хугацаанд бичиж болох бүх зүйл түүн дээр бичигдсэн байсан тул танд хэрэгтэй бүх зүйлд зориулсан олон тонн номын сан бий.

Яагаад Java сурах вэ, үүнийг хэрхэн үр дүнтэй хийх вэ? Yandex тайлан

Миний бодлоор JA тоглогч анхан шатны ямар чадвартай байх ёстой вэ? Юуны өмнө энэ нь Java хэлний үндсэн хэлний мэдлэг юм. Дараа нь нэг төрлийн Dependency Injection хүрээ юм. Дараагийн илтгэгч Кирилл энэ талаар илүү дэлгэрэнгүй ярих болно. Би нэг их гүнд орохгүй. Дараа нь архитектур, дизайны загварууд юм. Бид том хэмжээний программ бичихийн тулд архитектурын хувьд үзэсгэлэнтэй код бичих чадвартай байх хэрэгтэй. Энэ бол мэдээллийн сантай ажиллахад зориулагдсан 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 санааг санал болгож байна. Энэ нь хөгжүүлэх үйл явцыг ихээхэн хурдасгаж, танд маш их тусалдаг, танд зориулж бүх кодыг бичдэг, ерөнхийдөө энэ нь гайхалтай юм.

Яагаад Java сурах вэ, үүнийг хэрхэн үр дүнтэй хийх вэ? Yandex тайлан

Слайд дээрх холбоосууд: SQLZOO, habrapost

SQL. Ардлагчдын талаар бага зэрэг. Энд үнэхээр инээдтэй тохиолдол гарсан. Хоёр дахь дадлага хийх ярилцлагаас минь хоёр хоногийн өмнө хүний ​​нөөцийн охин над руу залгаад хоёр хоногийн дараа тэд надаас SQL болон HTTP-ийн талаар асуух болно, би үүнийг сурах хэрэгтэй гэж хэлсэн. Тэгээд би SQL эсвэл HTTP-ийн талаар бараг юу ч мэдэхгүй байсан. Тэгээд би энэ сайхан сайтыг олсон - SQLZOO. Би түүн дээр SQL-г 12 цагийн дотор сурсан, SQL-ийн синтакс, СОНГОХ асуулга хэрхэн бичих, НЭГДЭХ гэх мэт. Маш гоё сайт, би үүнийг маш их санал болгож байна. Ер нь 12 цагийн дотор би одоо мэддэг зүйлсийнхээ 90%-ийг сурсан.

Мөн өгөгдлийн сангийн архитектурыг мэдэх нь бас сайхан хэрэг юм. Эдгээр нь бүх төрлийн түлхүүр, индекс, хэвийн байдал юм. Хабре дээр энэ тухай цуврал нийтлэлүүд бий.

Яагаад Java сурах вэ, үүнийг хэрхэн үр дүнтэй хийх вэ? Yandex тайлан

Java хэл дээр SQL-ээс гадна JPA гэх мэт бүх төрлийн Объект-харилцааны зураглалын системүүд байдаг. Зарим код байна. Эхний аргад SQL код байдаг - SELECT id name FROM info.users WHERE id IN userIds. Хэрэглэгчдийн мэдээллийн сангаас, хүснэгтээс тэдний ID, нэрийг авдаг.

Дараа нь объектыг сууринаас Java объект болгон хувиргах тодорхой mapper байдаг. Мөн доор нь энэ кодыг гүйцэтгэдэг гуравдахь арга бий. Энэ бүгдийг JPA ашиглан доор бичсэн нэг мөрөнд сольж болно. Энэ нь ижил зүйлийг хийдэг - All ByIdIn-ийг олох. Өөрөөр хэлбэл, аргын нэр дээр үндэслэн энэ нь танд зориулж SQL асуулга үүсгэдэг.

Маш дажгүй зүйл. Би өөрөө SQL мэдэхгүй байхдаа JPA ашигладаг байсан. Ерөнхийдөө анхаарлаа хандуулаарай. Хэрэв та SQL сурахаас залхуу байгаа бол энэ нь сүйрэл болно. Тэгээд ерөнхийдөө гал!

Яагаад Java сурах вэ, үүнийг хэрхэн үр дүнтэй хийх вэ? Yandex тайлан

Хавар. Хаврын хүрээ гэх мэт зүйлийг хэн сонссон бэ? Та нар хэд байгааг харж байна уу? Шалтгаангүйгээр биш. Хаврын хоёр дахь Java backend сул орон тоо бүрийн шаардлагад хавар орсон. Үүнгүйгээр үнэхээр том бүтээн байгуулалт хаана ч байхгүй. Хавар гэж юу вэ? Юуны өмнө энэ нь Dependency Injection хүрээ юм. Энэ талаар бас хэлэх болно дараагийн илтгэгч. Товчхондоо, энэ нь зарим ангиудын хамаарлыг бусдаас импортлоход хялбар болгох боломжийг олгодог зүйл юм. Өөрөөр хэлбэл, хамаарлын талаархи мэдлэгийг хялбаршуулсан болно.

Spring Boot бол нэг товчлуураар серверийн програмаа ажиллуулах боломжийг олгодог Spring-ийн хэсэг юм. Та THID руу орж, хэд хэдэн товчлуурыг дарж, одоо серверийн програмаа localhost 8080 дээр ажиллуулж байна. Өөрөөр хэлбэл, та нэг мөр код бичээгүй байгаа ч аль хэдийн ажиллаж байна. Маш дажгүй зүйл. Хэрэв та өөрийнхөөрөө юм бичвэл гал!

Хавар бол маш том хүрээ юм. Энэ нь зөвхөн таны серверийн програмыг авч, Dependency Injection-ийг шийдээд зогсохгүй. Энэ нь танд REST API аргуудыг бий болгох зэрэг олон зүйлийг хийх боломжийг олгодог. Өөрөөр хэлбэл, та ямар нэгэн арга бичиж, түүнд газрын зургийн Get тайлбарыг хавсаргасан байна. Одоо танд localhost дээр Hello world to танд бичих арга байгаа. Хоёр мөр код, энэ нь ажилладаг. Гайхалтай зүйл.

Хавар нь бичих тестийг ч хөнгөвчилдөг. Томоохон бүтээн байгуулалтад туршилт хийхгүй бол арга байхгүй. Кодыг шалгах шаардлагатай. Энэ зорилгоор Java нь гайхалтай JUnit 5 номын сантай. Тэгээд ерөнхийдөө JUnit, гэхдээ хамгийн сүүлийн хувилбар нь тав дахь нь юм. Туршилтын бүх зүйл, янз бүрийн нотолгоо болон бусад зүйлс байдаг.

Мөн гайхалтай Mockito хүрээ бий. Танд туршихыг хүссэн зарим функц байгаа гэж төсөөлөөд үз дээ. Энэ функц нь маш олон зүйлийг хийдэг, тухайлбал дунд нь хаа нэгтээ VKontakte руу таны ID-аар нэвтэрч, ID-аас VKontakte хэрэглэгчийн овог, овог нэрийг хүлээн авдаг. Та ВКонтакте-г туршилтанд оруулахгүй байх, энэ нь хачирхалтай юм. Гэхдээ та функциональ байдлыг шалгах хэрэгтэй, тиймээс та Mockito-г ашиглан энэ ангийг хийсэн, үүнийг дуурайлган хийдэг.

Энэ ангид ийм ийм ID-тай хүсэлт ирэхэд овог нэр, жишээ нь Вася Пупкин буцаж ирдэг гэж та хэлэх болно. Тэгээд ажиллах болно. Өөрөөр хэлбэл, та mok нэг ангийн бүх функцийг туршиж үзэх болно. Маш дажгүй зүйл.

Яагаад Java сурах вэ, үүнийг хэрхэн үр дүнтэй хийх вэ? Yandex тайлан

Слайдаас холбоос

Дизайн загварууд. Энэ юу вэ? Эдгээр нь хөгжлийн явцад үүсдэг ердийн асуудлуудыг шийдвэрлэх загварууд юм. Хөгжүүлэлтийн явцад ижил төстэй эсвэл ижил төстэй асуудлууд ихэвчлэн гарч ирдэг бөгөөд үүнийг ямар нэгэн байдлаар шийдэх нь маш сайн байх болно. Тиймээс хүмүүс эдгээр асуудлыг хэрхэн шийдвэрлэх талаар шилдэг туршлага, тодорхой загваруудыг гаргаж ирсэн.

Хамгийн алдартай загвар бүхий вэбсайт байдаг - refactoring.guru, та үүнийг уншиж, ямар хэв маяг байгааг олж мэдэх, олон тооны онолыг уншиж болно. Асуудал нь энэ нь бараг ашиггүй юм. Үнэн хэрэгтээ дадлагагүй хэв маяг нь тийм ч ашигтай биш юм.

Та Singletone эсвэл Builder гэх мэт загваруудын талаар сонсох болно. Эдгээр үгийг хэн сонссон бэ? Олон хүмүүс. Та өөрөө хэрэгжүүлж болох ийм энгийн загварууд байдаг. Гэхдээ ихэнх хэв маяг: стратеги, үйлдвэр, фасад - тэдгээрийг хаана хэрэглэх нь тодорхойгүй байна.

Мөн та өөр хүний ​​код дээр энэ хэв маягийг ашигласан газрыг практик дээр олж харах хүртэл та үүнийг өөрөө хэрэгжүүлэх боломжгүй болно. Тиймээс хэв маягтай дадлага хийх нь маш чухал юм. Зөвхөн refactoring.guru дээр тэдний тухай унших нь тийм ч тус болохгүй, гэхдээ үүнийг хийх нь гарцаагүй.

Яагаад Java сурах вэ, үүнийг хэрхэн үр дүнтэй хийх вэ? Yandex тайлан

Яагаад загвар хэрэгтэй вэ? Та тодорхой Хэрэглэгчийн ангилалтай гэж бодъё. Энэ нь Id болон нэртэй. Хэрэглэгч бүр ID болон нэртэй байх ёстой. Зүүн дээд талд анги байна.

Хэрэглэгчийг эхлүүлэх ямар аргууд байдаг вэ? Хоёр сонголт байдаг - бүтээгч эсвэл тохируулагч. Энэ хоёр аргын сул тал юу вэ?

Барилгачин. шинэ хэрэглэгч (7, "Бонд"), зүгээр. Одоо бидэнд Хэрэглэгчийн анги байхгүй, харин өөр долоон тоон талбартай гэж бодъё. Та дараалсан долоон тоог агуулсан бүтээгчтэй болно. Эдгээр тоо юу вэ, аль нь ямар өмчийнх вэ гэдэг нь тодорхойгүй байна. Дизайнер нь тийм ч сайн биш.

Хоёр дахь сонголт бол тохируулагч юм. Та тодорхой бичнэ үү: setId(7), setName("Бонд"). Аль өмч нь аль салбарт хамаарахыг та ойлгодог. Гэхдээ сэтерт асуудал байна. Нэгдүгээрт, та ямар нэг зүйл өгөхөө мартаж магадгүй, хоёрдугаарт, таны объект өөрчлөгдөх боломжтой. Энэ нь хэлхээнд аюулгүй биш бөгөөд кодын унших чадварыг бага зэрэг бууруулдаг. Тийм ч учраас хүмүүс Барилгачин хэмээх гайхалтай загварыг гаргаж ирсэн.

Яагаад Java сурах вэ, үүнийг хэрхэн үр дүнтэй хийх вэ? Yandex тайлан

Энэ юуны тухай вэ? Тохируулагч ба бүтээгч гэсэн хоёр аргын давуу талыг нэг дор нэгтгэхийг хичээцгээе. Бид тодорхой нэг объект болох Builder хийдэг бөгөөд энэ нь мөн Id болон Name талбаруудтай байх бөгөөд энэ нь өөрөө тохируулагч дээр тулгуурлан бүтээгдэх ба энэ нь танд бүх параметртэй шинэ Хэрэглэгчийг буцаах Build аргатай байх болно. Бид өөрчлөгдөшгүй объект ба тохируулагчийг авдаг. Гайхалтай!

Ямар асуудал тулгарч байна вэ? Энд бид сонгодог Builder байна. Асуудал нь бид зарим талбарт шалгахаа мартсан хэвээр байгаа юм. Хэрэв бид ID-д зочлохоо мартсан бол энэ тохиолдолд Builder-д үүнийг тэг болгож эхлүүлнэ, учир нь int төрөл нь хүчингүй болно. Хэрэв бид "Бонд" гэсэн нэр хийчихээд иргэний үнэмлэхээр зочлохоо мартвал "0" id, "Бонд" гэсэн шинэ хэрэглэгчтэй болно. Сайхан биш.

Үүнтэй тэмцэхийг хичээцгээе. Builder дээр бид int-г int болгон өөрчилснөөр үүнийг хүчингүй болгоно. Одоо бүх зүйл сайхан байна.

Яагаад Java сурах вэ, үүнийг хэрхэн үр дүнтэй хийх вэ? Yandex тайлан

Хэрэв бид ID-г оруулахаа мартсан "Бонд" нэртэй хэрэглэгч үүсгэхийг оролдвол бид null заагчийн онцгой тохиолдол авах болно, учир нь ID нь null боломжгүй бөгөөд Builder нь null, ялангуяа заагчийн онцгой тохиолдолтой байдаг.

Яагаад Java сурах вэ, үүнийг хэрхэн үр дүнтэй хийх вэ? Yandex тайлан

Гэхдээ бид нэр өгөхөө мартсан хэвээр байгаа тул объектын дахин тоглуулахыг null гэж тохируулсан. Одоо бид Builder-ээс объектоо бүтээхэд энэ талбарыг хүчингүй болгох боломжгүй эсэхийг шалгадаг. Мөн энэ нь бүгд биш юм.

Сүүлийн жишээг харцгаая. Энэ тохиолдолд, хэрэв бид ID-ийн ажиллах хугацаанд ямар нэгэн байдлаар null оруулбал, та үүнийг хийсэн гэдгээ шууд мэдэх нь сайхан байх бөгөөд та одоо алдаа гаргаж байгаа нь тийм ч таатай биш байх болно.

Яагаад Java сурах вэ, үүнийг хэрхэн үр дүнтэй хийх вэ? Yandex тайлан

Та хэрэглэгч үүсгэх үед биш харин ID-д null гэж тохируулах үед алдаа гаргах хэрэгтэй. Тиймээс, Builder дээр бид бүхэл тоог int болгон өөрчлөх бөгөөд тэр даруй тэд null-ыг хаясан гэж тангараглах болно.

Товчхондоо, ямар учиртай юм бэ? Энгийн Builder загвар байдаг, гэхдээ түүний хэрэгжилт хүртэл зарим нэг нарийн шинж чанартай байдаг тул янз бүрийн хэв маягийн хэрэгжилтийг харахад маш сайхан байдаг. Загвар бүр хэдэн арван хэрэгжүүлэлттэй. Энэ бүхэн маш сонирхолтой юм.

Яагаад Java сурах вэ, үүнийг хэрхэн үр дүнтэй хийх вэ? Yandex тайлан

Үйлдвэрлэлийн кодонд Builder гэж хэрхэн бичих вэ? Энд манай хэрэглэгч байна. Бид Ломбок номын сангаас Builder-ийн эргэлтийг хавсаргадаг бөгөөд энэ нь өөрөө бидэнд Барилгачин үүсгэдэг. Өөрөөр хэлбэл, бид ямар ч код бичдэггүй, гэхдээ Java аль хэдийн энэ ангид Builder-тэй гэж бодож байгаа бөгөөд бид үүнийг ингэж нэрлэж болно.

Жава нь бараг бүх зүйлд зориулагдсан номын сантай, тэр дундаа Lombok номын сантай гэдгийг би аль хэдийн хэлсэн. Барилгачин, GET.

Яагаад Java сурах вэ, үүнийг хэрхэн үр дүнтэй хийх вэ? Yandex тайлан

Загвар нь архитектурын шинж чанартай байж болно - зөвхөн нэг ангид төдийгүй бүхэл бүтэн системтэй холбоотой. Системийн дизайнд ийм гайхалтай зарчим байдаг: Нэг хариуцлагатай зарчим. Тэр юу яриад байгаа юм бэ? Анги бүр өөрийн гэсэн зарим функцийг хариуцах ёстой. Энэ тохиолдолд бидэнд JSON объектуудтай хэрэглэгчидтэй харилцдаг Controller байдаг. JSON объектуудыг дараа нь Java програмын ажиллах загвар болгон хувиргадаг Facade байдаг. Эдгээр загваруудтай ажилладаг нарийн төвөгтэй логиктой үйлчилгээ байдаг. Эдгээр загваруудыг өгөгдлийн санд оруулан мэдээллийн сангаас татаж авдаг Data Access Object байна. Мөн мэдээллийн сан нь өөрөө байдаг. Өөрөөр хэлбэл, бүх зүйл нэг ангид байдаггүй, гэхдээ бид таван өөр анги хийж байгаа бөгөөд энэ нь өөр нэг загвар юм.

Яагаад Java сурах вэ, үүнийг хэрхэн үр дүнтэй хийх вэ? Yandex тайлан

Жава хэлийг бага багаар сурсан бол өгөгдлийн сантай, бусад API-уудтай хамтран ажиллаж, серверийнхээ программыг REST API үйлчлүүлэгчдэд үзүүлэх өөрийн төслөө бичих нь үнэхээр сайхан хэрэг юм. Энэ нь таны намтар дээр нэмэхэд маш сайн зүйл байх болно, энэ нь таны боловсролын төгсгөл байх болно. Ингэснээр та очиж ажилд орох боломжтой.

Яагаад Java сурах вэ, үүнийг хэрхэн үр дүнтэй хийх вэ? Yandex тайлан

Миний серверийн програмын жишээ энд байна. Хоёр дахь жилдээ би залуустай курсын ажил бичсэн. Тэд арга хэмжээ зохион байгуулах гар утасны програм бичиж байв. Тэнд хэрэглэгчид VKontakte-ээр нэвтэрч, газрын зураг дээр цэг байрлуулах, үйл явдал үүсгэх, найз нөхдөө урих, үйл явдлын зургийг хадгалах гэх мэт боломжтой.

Төсөлд би юу хийсэн бэ? SQL ашиглахгүйгээр Spring Boot дээр серверийн програм бичсэн. Би түүнийг танихгүй, би JPA ашигладаг байсан. Энэ юу хийж чадах вэ? OAuth-2-ээр дамжуулан VK руу нэвтэрнэ үү. Хэрэглэгчийн жетоныг аваад VK руу орж, жинхэнэ хэрэглэгч мөн эсэхийг шалгаарай. VKontakte-ээр дамжуулан хэрэглэгчдийн талаарх мэдээллийг хүлээн авах. Энэ нь JPA-ээр дамжуулан мэдээллийн санд мэдээллийг хадгалах боломжтой болсон. Зураг болон бусад файлуудыг компьютерийн санах ойд чадварлаг хадгалах, тэдгээрийн холбоосыг мэдээллийн санд хадгалах. Тухайн үед би мэдээллийн санд CLOB объект байгааг мэдээгүй байсан тул би үүнийг ингэж хийсэн. Хэрэглэгчид, үйлчлүүлэгчийн програмуудад зориулсан REST API байсан. Мөн үндсэн үйл ажиллагааны нэгжийн туршилтууд байсан.

[...] Миний Java хэлийг амжилттай сурсан бяцхан жишээ. Их сургуульд орсон эхний жилдээ надад C# зааж, OOP програмчлалын тухай ойлголт өгсөн - ямар ангиуд, интерфейс, хийсвэрлэл, тэдгээр нь яагаад хэрэгтэй вэ. Энэ нь надад маш их тусалсан. Үүнгүйгээр Java сурах нь маш хэцүү бөгөөд яагаад ангиуд хэрэгтэй байгаа нь тодорхойгүй байна.

Яагаад Java сурах вэ, үүнийг хэрхэн үр дүнтэй хийх вэ? Yandex тайлан

Их сургуульд хоёр дахь жилдээ тэд дахин Java-ийн цөмийг зааж байсан ч би үүгээр зогсолтгүй, би өөрөө хавар судлахаар явж, дээр дурдсан курсын ажил, төслөө бичсэн. Энэ бүхний хажуугаар би Yandex-д дадлага хийхээр явж, ярилцлага өгч, Yandex.Market-т орсон. Тэнд би Беругийн арын хэсгийг бичсэн, энэ бол манай зах зээл, мөн Yandex.Market өөрөө.

Үүний дараа зургаан сарын өмнө би нэг захын өөр багт шилжсэн. Бид бизнесийн түншүүдэд аналитик хийдэг. Бид аналитик платформд байгаа, арын хэсэгт бид гурав байгаа тул би төсөлд маш их нөлөө үзүүлж байна. Энэ нь үнэхээр сонирхолтой юм. Өөрөөр хэлбэл, бид зах зээл дээр ямар борлуулалт, ямар ангилалд, ямар загвараар, бизнесийн түншүүд, томоохон алдартай компаниудад зориулсан мэдээллийг өгдөг. Бид гурав л байгаа, бид энэ кодыг бичдэг бөгөөд энэ нь маш сайхан юм.

Баярлалаа! Хэрэгтэй холбоосууд:
- "Java 8. Эхлэгчдэд зориулсан гарын авлага".
- Өгөгдлийн бүтэц.
- SQLZOO.
- Өгөгдлийн санг хэвийн болгох.
- Дизайн загварууд.
- Дизайн загвар.
- Цэвэр код.
- Үр дүнтэй Java.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх