ለምን ጃቫን መማር እና እንዴት ውጤታማ በሆነ መንገድ ማድረግ እንደሚቻል። የ Yandex ሪፖርት

ጃቫ ከሌሎች ታዋቂ ቋንቋዎች የሚለየው እንዴት ነው? ለምን ጃቫ ለመማር የመጀመሪያ ቋንቋ መሆን አለበት? ጃቫን ከባዶ እና በሌሎች ቋንቋዎች የፕሮግራም ችሎታዎችን በመተግበር ለመማር የሚረዳዎትን እቅድ እንፍጠር። በጃቫ ውስጥ የምርት ኮድ በመፍጠር እና በሌሎች ቋንቋዎች በማደግ መካከል ያለውን ልዩነት እንዘርዝር። ሚካሂል ዛቴፒያኪን ለወደፊት ተሳታፊዎች በሚደረገው ስብሰባ ላይ ይህን ዘገባ አነበበ internships Yandex እና ሌሎች ጅምር ገንቢዎች - Java Junior meetup.


- ሰላም ለሁላችሁም ስሜ ሚሻ እባላለሁ። እኔ ከ Yandex.Market ገንቢ ነኝ ፣ እና ዛሬ ለምን ጃቫን መማር እና እንዴት ውጤታማ በሆነ መንገድ ማድረግ እንዳለብኝ እነግርዎታለሁ። ምክንያታዊ ጥያቄ ሊጠይቁ ይችላሉ፡ ለምንድነው ይህን ታሪክ የምናገረው፣ እና የብዙ አመታት ልምድ ያለው ጠንካራ ገንቢ አይደለም? እውነታው ግን እኔ ራሴ ጃቫን በቅርቡ ያጠናሁት ከአንድ ዓመት ተኩል በፊት ነው, ስለዚህ ምን እንደሚመስል እና ምን አይነት ወጥመዶች እንዳሉ አሁንም አስታውሳለሁ.

ከአንድ ዓመት በፊት በ Yandex.Market ውስጥ internship አግኝቻለሁ። ለቤሩ ጀርባውን አዘጋጅቻለሁ፣ ለገበያው ራሱ፣ ምናልባት ተጠቀምክበት። አሁን እዚያ መስራቴን እቀጥላለሁ፣ በተለየ ቡድን ውስጥ። ለ Yandex.Market ለንግድ አጋሮች የትንታኔ መድረክ እንፈጥራለን.

ለምን ጃቫን መማር እና እንዴት ውጤታማ በሆነ መንገድ ማድረግ እንደሚቻል። የ Yandex ሪፖርት

እንጀምር. ጃቫን ከተግባራዊ እይታ ለምን ተማር? እውነታው ግን ጃቫ በጣም ታዋቂ የፕሮግራም አወጣጥ ቋንቋ ነው። በጣም ትልቅ ማህበረሰብ አለው።

ለምሳሌ፣ እንደዚህ ያለ TIOBE ኢንዴክስ አለ፣ የፕሮግራም አወጣጥ ቋንቋዎች ታዋቂነት ታዋቂነት ያለው መረጃ ጠቋሚ፣ እና ጃቫ እዚያ አንደኛ ደረጃ ላይ ትገኛለች። በተጨማሪም፣ በስራ ቦታዎች ላይ፣ አብዛኛው ክፍት የስራ መደቦች ስለ ጃቫ፣ ማለትም፣ በጃቫ በማዳበር፣ ሁልጊዜም ስራ ማግኘት እንደሚችሉ ታስተውላለህ።

ማህበረሰቡ በጣም ትልቅ ስለሆነ ማንኛውም ያለህ ጥያቄ በአንዳንድ የStack Overflow ወይም ሌሎች ጣቢያዎች ላይ መልስ ታገኛለህ። እንዲሁም በጃቫ ውስጥ በሚገነቡበት ጊዜ በ JVM ላይ ኮድ እየፃፉ ነው ፣ ስለሆነም በቀላሉ ወደ ኮትሊን ፣ ስካላ እና ሌሎች JVM የሚጠቀሙ ቋንቋዎችን መቀየር ይችላሉ።

ለምን ጃቫን መማር እና እንዴት ውጤታማ በሆነ መንገድ ማድረግ እንደሚቻል። የ Yandex ሪፖርት

ከርዕዮተ ዓለም አንፃር ስለ ጃቫ ምን ጥሩ ነገር አለ? የተለያዩ የፕሮግራሚንግ ቋንቋዎች አሉ። የተለያዩ ችግሮችን ይፈታሉ, ያንን ያውቃሉ. ለምሳሌ, Python ፈጣን ችግሮችን ለመፍታት የአንድ መስመር ስክሪፕቶችን ለመጻፍ በጣም ጥሩ ነው.

በመልካም ጎኑ፣ የሚፈፀመውን ኮድ ሙሉ በሙሉ መቆጣጠር ይችላሉ። ለምሳሌ መኪኖች አሉን Yandex ነጂ አልባ መኪኖች ኮዳቸው በፕላስ ነው የተፃፈው። ለምን? ጃቫ እንዲህ ያለ ነገር አለው - ቆሻሻ ሰብሳቢ. ራም ከማያስፈልጉ ነገሮች ያጸዳል። ይህ ነገር በድንገት ይጀምራል እና ዓለምን ያቆማል ፣ ማለትም ፣ የቀረውን ፕሮግራም ያቆማል እና እቃዎችን ለመቁጠር ይሄዳል ፣ የነገሮችን ግልፅ ትውስታ። እንዲህ ዓይነቱ ነገር በድሮን ውስጥ ቢሠራ ጥሩ አይደለም. የእርስዎ ድሮን በቀጥታ ይነዳል፣ በዚህ ጊዜ ማህደረ ትውስታውን ያጸዳል እና መንገዱን በጭራሽ አይመለከትም። ስለዚህ, ድራጊው በፕሮፌሽኖቹ ላይ ተጽፏል.

ለምን ጃቫን መማር እና እንዴት ውጤታማ በሆነ መንገድ ማድረግ እንደሚቻል። የ Yandex ሪፖርት

ጃቫ ምን ችግሮችን ይፈታል? በዋነኛነት ለዓመታት በደርዘን ወይም በመቶዎች በሚቆጠሩ ሰዎች የተጻፉ ትልልቅ ፕሮግራሞችን ለማዘጋጀት ቋንቋ ነው። በተለይም በ Yandex.Market ውስጥ ብዙ የጀርባ ሽፋን በጃቫ ተጽፏል. በበርካታ ከተሞች ውስጥ የተከፋፈለ ቡድን አለን, በእያንዳንዱ ውስጥ አስር ሰዎች. እና ኮዱ ለማቆየት ቀላል ነው, ለአስር አመታት ወይም ከዚያ በላይ ይደገፋል, እና በተመሳሳይ ጊዜ አዲስ ሰዎች ገብተው ይህን ኮድ ይገነዘባሉ.

በውስጡ ያለው ኮድ በቀላሉ እንዲደገፍ እና በትልልቅ ቡድኖች ውስጥ በቀላሉ እንዲዳብር አንድ ቋንቋ ምን አይነት ባህሪያት ሊኖረው ይገባል. በመጀመሪያ ደረጃ, ሊነበብ የሚችል ኮድ መሆን አለበት, እና ውስብስብ የስነ-ህንፃ መፍትሄዎችን ለመተግበር ቀላል መሆን አለበት. ማለትም ከፍተኛ ደረጃ ማጠቃለያ ወዘተ ለመጻፍ ቀላል መሆን አለበት ይህ ሁሉ ጃቫ የሚሰጠን ነው። ይህ በነገር ላይ ያተኮረ ቋንቋ ነው። የከፍተኛ ደረጃ ረቂቅ እና ውስብስብ አርክቴክቸርን መተግበር በእውነት ቀላል ነው።

እንዲሁም ለጃቫ ብዙ ማዕቀፎች እና ቤተ-መጻሕፍት አሉ, ምክንያቱም ቋንቋው ከ 15 ዓመት በላይ ነው. በዚህ ጊዜ ውስጥ, ሊጻፍ የሚችል ነገር ሁሉ በላዩ ላይ ተጽፏል, ስለዚህ ለሚፈልጉት ነገር ሁሉ ብዙ ቶን ቤተ-መጻሕፍት አሉ.

ለምን ጃቫን መማር እና እንዴት ውጤታማ በሆነ መንገድ ማድረግ እንደሚቻል። የ Yandex ሪፖርት

በእኔ አስተያየት ጀማሪ JA ተጫዋች ምን አይነት መሰረታዊ ችሎታዎች ሊኖረው ይገባል? በመጀመሪያ ደረጃ, ይህ የጃቫ ዋና ቋንቋ እውቀት ነው. ቀጥሎ አንዳንድ ዓይነት የጥገኛ መርፌ ማዕቀፍ ነው። የሚቀጥለው ተናጋሪ ኪሪል ስለዚህ ጉዳይ በተሟላ ሁኔታ ይናገራል። ወደ ውስጥ አልገባም። ቀጥሎ የአርክቴክቸር እና የንድፍ ንድፎች ናቸው. ትልልቅ አፕሊኬሽኖችን ለመጻፍ በሥነ ሕንፃ ውብ ኮድ መጻፍ መቻል አለብን። እና ይህ ከመረጃ ቋቱ ጋር ለመስራት አንዳንድ ዓይነት SQL ወይም ORM ነው። እና ይሄ ለጀርባው የበለጠ ይሠራል.

ለምን ጃቫን መማር እና እንዴት ውጤታማ በሆነ መንገድ ማድረግ እንደሚቻል። የ Yandex ሪፖርት

ሂድ! ጃቫ ኮር. አሜሪካን እዚህ አላገኝም - ቋንቋውን ራሱ ማወቅ አለብህ። ትኩረት መስጠት ያለብዎት ነገር. በመጀመሪያ ፣ ጃቫ በቅርብ ዓመታት ውስጥ ብዙ ስሪቶችን አውጥቷል ፣ ማለትም ፣ በ 2014-2015 ሰባተኛው ተለቀቀ ፣ ከዚያ ስምንተኛው ፣ ዘጠነኛው ፣ አሥረኛው ፣ ብዙ አዳዲስ ስሪቶች እና ብዙ አዳዲስ አሪፍ ነገሮች በውስጣቸው ገብተዋል ። ለምሳሌ, Java Stream API , lambda, ወዘተ. በጣም አሪፍ, ትኩስ, አሪፍ ነገሮች በምርት ኮድ ውስጥ ጥቅም ላይ የሚውሉ, በቃለ መጠይቅ ስለሚጠይቁት እና ማወቅ ያለብዎት. ስለዚህ በጃቫ-4 ላይብረሪ ውስጥ ካለው መደርደሪያ ላይ መጽሐፍ ወስደህ ተማርበት። ይህ የእኛ እቅድ ነው: Java-8 ወይም ከዚያ በላይ እንማራለን.

እንደ Stream API, var, ወዘተ ለመሳሰሉት ፈጠራዎች ትኩረት እንሰጣለን. በቃለ-መጠይቆች ውስጥ ይጠየቃሉ እና ሁልጊዜም በምርት ውስጥ ጥቅም ላይ ይውላሉ. ማለትም፣ የዥረት ኤፒአይ ከሉፕስ በጣም ቀዝቃዛ ነው፣ በአጠቃላይ፣ በጣም አሪፍ ነገር ነው። ትኩረት መስጠቱን እርግጠኛ ይሁኑ.

እና እንደ ተደጋጋሚ፣ ልዩ ሁኔታዎች እና የመሳሰሉት ሁሉም አይነት ነገሮች አሉ። ትንሽ ኮድ እራስዎ እስከጻፉ ድረስ ለእርስዎ አስፈላጊ ያልሆኑ የሚመስሉ ነገሮች። እነዚህ ልዩ ሁኔታዎች አያስፈልጉዎትም ፣ ለማንኛውም ማን ያስፈልገዋል? ግን በእርግጠኝነት በቃለ መጠይቅ ይጠየቃሉ, በእርግጠኝነት በምርት ውስጥ ለእርስዎ ጠቃሚ ይሆናሉ. በአጠቃላይ ለልዩነት፣ ተደጋጋሚ እና ሌሎች ነገሮች ትኩረት መስጠት አለቦት።

ለምን ጃቫን መማር እና እንዴት ውጤታማ በሆነ መንገድ ማድረግ እንደሚቻል። የ Yandex ሪፖርት

የውሂብ አወቃቀሮች. ያለ መዋቅሮች መሄድ አይችሉም, ነገር ግን ስብስቦች, መዝገበ ቃላት እና ሉሆች እንዳሉ ካላወቁ በጣም ጥሩ ይሆናል. እንዲሁም የተለያዩ መዋቅሮች አተገባበር. ለምሳሌ፣ በጃቫ ውስጥ ያለው ተመሳሳይ መዝገበ-ቃላት HashMap እና TreeMapን ጨምሮ ብዙ ትግበራዎች አሉት። የተለያዩ አሲምፖቲክስ አላቸው, በውስጣቸው በተለያየ መንገድ የተዋቀሩ ናቸው. እንዴት እንደሚለያዩ እና የትኛውን መቼ እንደሚጠቀሙ ማወቅ ያስፈልግዎታል.

እነዚህ የውሂብ አወቃቀሮች በውስጥም እንዴት እንደሚሠሩ ካወቁ በጣም ጥሩ ይሆናል. ያም ማለት የእነሱን asymptotics ማወቅ ቀላል አይደለም - ውርርድ ምን ያህል እንደሚሰራ, ማለፊያው ለምን ያህል ጊዜ እንደሚሰራ, ነገር ግን አወቃቀሩ እንዴት እንደሚሰራ - ለምሳሌ, በ HashMap ውስጥ አንድ ባልዲ ምንድን ነው.

እንዲሁም ለዛፎች እና ግራፎች ትኩረት መስጠት ተገቢ ነው. እነዚህ በምርት ኮድ ውስጥ በጣም የተለመዱ ያልሆኑ ነገሮች ናቸው, ነገር ግን በቃለ መጠይቆች ውስጥ ታዋቂ ናቸው. በዚህ መሠረት ዛፎችን, ስፋቶችን እና ጥልቀትን ግራፎችን ማለፍ መቻል አለብዎት. እነዚህ ሁሉ ቀላል ስልተ ቀመሮች ናቸው.

ማንኛውንም ትልቅ ኮድ ፣ ውስብስብ ፣ ቤተ-መጽሐፍት በመጠቀም ፣ ባለብዙ ክፍል ኮድ መጻፍ እንደጀመሩ ፣ ስርዓቶችን ሳትገነቡ እና ጥገኛዎችን መፍታት ለእርስዎ ከባድ እንደሆነ ይገነዘባሉ። እነዚህ በዋነኝነት Maven እና Gradle ናቸው. በአንድ መስመር ላይብረሪዎችን ወደ ፕሮጀክትዎ እንዲያስገቡ ያስችሉዎታል። ማለትም፣ ባለ አንድ መስመር xml ጻፍ እና ቤተ-መጻህፍት ወደ ፕሮጀክቱ አስገባ። ምርጥ ስርዓቶች. እነሱ በግምት ተመሳሳይ ናቸው ፣ አንዱን ይጠቀሙ - Maven ወይም Gradle።

ቀጣይ - አንዳንድ ዓይነት የስሪት ቁጥጥር ስርዓት. Gitን እመክራለሁ ምክንያቱም ታዋቂ ስለሆነ እና ብዙ መማሪያዎች አሉ። ሁሉም ሰው ማለት ይቻላል Git ን ይጠቀማል, ጥሩ ነገር ነው, ያለሱ መኖር አይችሉም.

እና አንድ ዓይነት የእድገት አካባቢ። IntelliJ Ideaን እመክራለሁ. የእድገት ሂደቱን በጣም ያፋጥናል, በጣም ይረዳል, ሁሉንም የቦይለር ኮድ ይጽፍልዎታል, በአጠቃላይ, አሪፍ ነው.

ለምን ጃቫን መማር እና እንዴት ውጤታማ በሆነ መንገድ ማድረግ እንደሚቻል። የ Yandex ሪፖርት

አገናኞች ከስላይድ፡- SQLZOO, ሃብራፖስት

SQL ስለ ደጋፊዎች ትንሽ። በእውነቱ እዚህ አንድ አስቂኝ ጉዳይ ነበር። ከሁለተኛው የኢንተርንሺፕ ቃለ መጠይቅ ሁለት ቀን ቀደም ብሎ አንዲት የሰው ሃይል ልጅ ደውላኝ እና በሁለት ቀናት ውስጥ ስለ SQL እና HTTP እንደሚጠይቁኝ ነገረችኝ፣ መማር አለብኝ። እና ስለ SQL ወይም HTTP ምንም አላውቅም ነበር። እና ይህን ጥሩ ጣቢያ አገኘሁ - SQLZOO. በላዩ ላይ SQL በ12 ሰአታት ውስጥ ተምሬያለሁ፣ ማለቴ፣ የSQL አገባብ፣ የ SELECT መጠይቆችን እንዴት እንደሚፃፍ፣ JOIN፣ ወዘተ. በጣም አሪፍ ጣቢያ፣ በጣም እመክራለሁ። እንደውም በ12 ሰአታት ውስጥ 90% አሁን የማውቀውን ተማርኩ።

እንዲሁም የውሂብ ጎታ አርክቴክቸርን ማወቅ በጣም ጥሩ ነው። እነዚህ ሁሉም ዓይነት ቁልፎች, ኢንዴክሶች, መደበኛነት ናቸው. በሐበሬ ላይ ስለዚህ ጉዳይ ተከታታይ ጽሁፎች አሉ።

ለምን ጃቫን መማር እና እንዴት ውጤታማ በሆነ መንገድ ማድረግ እንደሚቻል። የ Yandex ሪፖርት

በጃቫ፣ ከ SQL በተጨማሪ፣ እንደ JPA ያሉ ሁሉም ዓይነት የነገር-ተዛማጅ የካርታ ሥርዓቶች አሉ። የተወሰነ ኮድ አለ። በመጀመሪያው ዘዴ አንዳንድ SQL ኮድ አለ - ከመረጃ ተጠቃሚዎች የመታወቂያ ስም ይምረጡ WHERE id in userIDs። ከተጠቃሚዎች የውሂብ ጎታ, ከጠረጴዛው, መታወቂያዎቻቸው እና ስሞቻቸው ይገኛሉ.

በመቀጠል, አንድን ነገር ከመሠረቱ ወደ ጃቫ ነገር የሚቀይር የተወሰነ ካርታ አለ. እና ይህን ኮድ በትክክል የሚያስፈጽም ሶስተኛው ዘዴ ከዚህ በታች አለ። ይህ ሁሉ ከዚህ በታች በተፃፈው አንድ መስመር JPA በመጠቀም ሊተካ ይችላል. ተመሳሳይ ነገር ያደርጋል - ሁሉንም ByIdIn ያግኙ። ያም ማለት በዘዴው ስም መሰረት የ SQL ጥያቄን ያመነጫል.

በጣም አሪፍ ነገር። እኔ ራሴ፣ SQL ሳላውቅ JPAን ተጠቀምኩ። በአጠቃላይ, ትኩረት ይስጡ. SQL ለመማር በጣም ሰነፍ ከሆንክ ጥፋት ነው። እና በአጠቃላይ, እሳት!

ለምን ጃቫን መማር እና እንዴት ውጤታማ በሆነ መንገድ ማድረግ እንደሚቻል። የ Yandex ሪፖርት

ጸደይ. እንደ የፀደይ ማዕቀፍ ያለ ነገር ማን ሰማ? ምን ያህሎቻችሁ እንዳሉ ታያላችሁ? ያለምክንያት አይደለም። ፀደይ በእያንዳንዱ ሁለተኛ የጃቫ የጀርባ ክፍት የስራ ቦታ መስፈርቶች ውስጥ ተካትቷል። ያለሱ, በእውነቱ ትልቅ እድገት ውስጥ የትም ቦታ የለም. ጸደይ ምንድን ነው? በመጀመሪያ ደረጃ, ይህ የጥገኛ መርፌ ማዕቀፍ ነው. ስለዚህ ጉዳይ ይላል ቀጣይ ተናጋሪ። ነገር ግን ባጭሩ ይህ የአንዳንድ ክፍሎችን ጥገኝነት በሌሎች ላይ ለማስገባት ቀላል ለማድረግ የሚያስችል ነገር ነው። ማለትም የጥገኝነት እውቀት ቀላል ነው።

ስፕሪንግ ቡት የአገልጋይ መተግበሪያዎን በአንድ ቁልፍ እንዲያሄዱ የሚያስችልዎ የስፕሪንግ ቁራጭ ነው። ወደ THID ሂድ፣ ሁለት ቁልፎችን ተጫን፣ እና አሁን የአገልጋይ አፕሊኬሽን በ localhost 8080 እየሰራህ ነው። ማለትም አንድ ነጠላ የኮድ መስመር ገና አልፃፉም ነገር ግን አስቀድሞ እየሰራ ነው። በጣም አሪፍ ነገር። የራስህ የሆነ ነገር ከጻፍክ እሳት!

ፀደይ በጣም ትልቅ ማዕቀፍ ነው. የአገልጋይ መተግበሪያዎን ብቻ አይወስድም እና የጥገኝነት መርፌን ይፈታል። የ REST API ዘዴዎችን መፍጠርን ጨምሮ ብዙ ነገሮችን እንዲያደርጉ ይፈቅድልዎታል. ማለትም አንዳንድ ዘዴ ጽፈው የGet maping ማብራሪያውን አያይዘውታል። እና አሁን እርስዎ ሄሎ አለምን የሚጽፍልዎት በ localhost ላይ አንዳንድ ዘዴ አለዎት። ሁለት የኮድ መስመሮች እና ይሰራል. አሪፍ ነገሮች።

ፀደይ እንዲሁ የመፃፍ ሙከራዎችን ቀላል ያደርገዋል። በትልቅ እድገት ውስጥ ያለ ሙከራ ምንም መንገድ የለም. ኮዱ መሞከር አለበት። ለዚህ አላማ ጃቫ አሪፍ ላይብረሪ አለው JUnit 5. እና JUnit በአጠቃላይ ግን የቅርብ ጊዜው ስሪት አምስተኛው ነው። ለመፈተሽ ሁሉም ነገር አለ, ሁሉም አይነት ማረጋገጫዎች እና ሌሎች ነገሮች.

እና አስደናቂ የሞኪቶ ማዕቀፍ አለ። ለመፈተሽ የሚፈልጉት አንዳንድ ተግባራት እንዳለህ አስብ። ተግባራቱ ብዙ ነገሮችን ያከናውናል, በመሃል ላይ የሆነ ቦታ, በመታወቂያዎ ወደ VKontakte ውስጥ ይገባል, ለምሳሌ, ከመታወቂያው የ VKontakte ተጠቃሚ የመጀመሪያ እና የመጨረሻ ስም ይቀበላል. ምናልባት VKontakteን በፈተናዎች ውስጥ አታካትቱት ፣ ያ እንግዳ ነገር ነው። ግን ተግባራዊነቱን መፈተሽ ያስፈልግዎታል, ስለዚህ ይህንን ክፍል ሠርተዋል, ሞኪቶ, ሞክ, አስመስሎታል.

እንደዚህ አይነት መታወቂያ ያለው ጥያቄ ወደዚህ ክፍል ሲመጣ አንዳንድ የአያት ስም ይመልሳል ይላሉ ለምሳሌ ቫስያ ፑኪን። እና ይሰራል። ማለትም ለሞክ አንድ ክፍል ሁሉንም ተግባራት ይፈትሻል። በጣም አሪፍ ነገር።

ለምን ጃቫን መማር እና እንዴት ውጤታማ በሆነ መንገድ ማድረግ እንደሚቻል። የ Yandex ሪፖርት

አገናኝ ከስላይድ

የንድፍ ቅጦች. ምንድን ነው? እነዚህ በልማት ውስጥ የሚነሱ ዓይነተኛ ችግሮችን ለመፍታት አብነቶች ናቸው። በእድገት ውስጥ, ተመሳሳይ ወይም ተመሳሳይ ችግሮች ብዙውን ጊዜ ይነሳሉ, ይህም በሆነ መንገድ በትክክል መፍታት ጥሩ ይሆናል. ስለዚህ, ሰዎች እነዚህን ችግሮች እንዴት እንደሚፈቱ ምርጥ ልምዶችን, የተወሰኑ አብነቶችን አወጡ.

በጣም ታዋቂ ቅጦች ያለው ድር ጣቢያ አለ - refactoring.guru, ሊያነቡት ይችላሉ, ምን አይነት ቅጦች እንዳሉ ይወቁ, የንድፈ ሀሳብ ስብስብ ያንብቡ. ችግሩ በተግባር ከንቱ መሆኑ ነው። በእርግጥ, ያለ ልምምድ ቅጦች በተለይ ጠቃሚ አይደሉም.

እንደ ነጠላ ቶን ወይም ግንበኛ ያሉ አንዳንድ ቅጦችን ይሰማሉ። እነዚህን ቃላት ማን ሰማ? ብዙ ሰዎች. እራስዎን መተግበር የሚችሉት እንደዚህ አይነት ቀላል ቅጦች አሉ. ግን አብዛኛዎቹ ቅጦች: ስልት, ፋብሪካ, ፊት ለፊት - የት እንደሚተገበሩ ግልጽ አይደለም.

እና በሌላ ሰው ኮድ ውስጥ ይህ ስርዓተ-ጥለት የተተገበረበትን ቦታ በተግባር እስካላዩ ድረስ እራስዎ መተግበር አይችሉም። ስለዚህ, ከስርዓተ-ጥለት ጋር ልምምድ በጣም አስፈላጊ ነው. እና ስለእነሱ በ refactoring.guru ላይ ማንበብ ብቻ በጣም ጠቃሚ አይደለም፣ ግን በእርግጠኝነት ማድረግ ተገቢ ነው።

ለምን ጃቫን መማር እና እንዴት ውጤታማ በሆነ መንገድ ማድረግ እንደሚቻል። የ Yandex ሪፖርት

ቅጦች ለምን ያስፈልጋሉ? የተወሰነ የተጠቃሚ ክፍል አለህ እንበል። መታወቂያ እና ስም አለው። እያንዳንዱ ተጠቃሚ ሁለቱም መታወቂያ እና ስም ሊኖራቸው ይገባል። የላይኛው ግራ ክፍል ነው።

ተጠቃሚን ለመጀመር ምን መንገዶች አሉ? ሁለት አማራጮች አሉ - ገንቢ ወይም አዘጋጅ። የሁለቱም ዘዴዎች ጉዳቶች ምንድናቸው?

ገንቢ። አዲስ ተጠቃሚ (7፣ "ቦንድ")፣ እሺ። አሁን የተጠቃሚ ክፍል የለንም እንበል፣ ግን ሌላ፣ ሰባት የቁጥር መስኮች ያለው። ሰባት ተከታታይ ቁጥሮች የያዘ ገንቢ ይኖርዎታል። እነዚህ ቁጥሮች ምን እንደሆኑ እና የትኛው ንብረት የትኛው እንደሆነ ግልጽ አይደለም. ንድፍ አውጪው በጣም ጥሩ አይደለም.

ሁለተኛው አማራጭ አዘጋጅ ነው. በግልጽ ይጽፋሉ፡ setId(7)፣ setName("Bond")። የትኛው ንብረት የየትኛው መስክ እንደሆነ ይገባዎታል። ግን አዘጋጅ ችግር አለበት። በመጀመሪያ፣ የሆነ ነገር መመደብ ሊረሱ ይችላሉ፣ እና ሁለተኛ፣ የእርስዎ ነገር ተለዋዋጭ ይሆናል። ይህ ክር ደህንነቱ የተጠበቀ አይደለም እና የኮዱን ተነባቢነት በትንሹ ይቀንሳል። ለዚህ ነው ሰዎች አሪፍ ጥለት ይዘው የመጡት - ግንበኛ።

ለምን ጃቫን መማር እና እንዴት ውጤታማ በሆነ መንገድ ማድረግ እንደሚቻል። የ Yandex ሪፖርት

ይህ ስለ ምንድን ነው? የሁለቱንም አቀራረቦች-አቀናባሪ እና ገንቢ-በአንድ ላይ ለማጣመር እንሞክር። እኛ አንድ የተወሰነ ነገር እንሰራለን ፣ ግንበኛ ፣ እሱም እንዲሁ የመታወቂያ እና የስም መስኮች ይኖረዋል ፣ እሱ ራሱ በአዘጋጁ ላይ በመመስረት የሚገነባ እና ከሁሉም መለኪያዎች ጋር አዲስ ተጠቃሚን የሚመልስ የግንባታ ዘዴ ይኖረዋል። የማይለወጥ ነገር እና አዘጋጅ እናገኛለን. ጥሩ!

ችግሮቹ ምንድን ናቸው? እዚህ እኛ ክላሲክ ግንበኛ አለን። ችግሩ አሁንም በአንዳንድ መስክ ላይ ማረጋገጥ ልንረሳው እንችላለን. መታወቂያውን መጎብኘት ከረሳን ፣ በዚህ ሁኔታ በግንባታ ውስጥ ወደ ዜሮ ተጀምሯል ፣ ምክንያቱም የ int ዓይነት ውድቅ አይደለም ። እና ስሙን "ቦንድ" ከሰራን እና መታወቂያ ቢሮውን መጎብኘት ከረሳን, መታወቂያ "0" እና "ቦንድ" የሚል ስም ያለው አዲስ ተጠቃሚ ይኖረናል. ደስ አይልም.

ይህንን ለመዋጋት እንሞክር. በገንቢ ውስጥ ከንቱ እንዲሆን ኢንትን ወደ ኢንት እንለውጣለን። አሁን ሁሉም ነገር ጥሩ ነው።

ለምን ጃቫን መማር እና እንዴት ውጤታማ በሆነ መንገድ ማድረግ እንደሚቻል። የ Yandex ሪፖርት

“ቦንድ” የሚል ስም ያለው ተጠቃሚ ለመፍጠር ከሞከርን መታወቂያውን ማስቀመጡን ከረሳን ፣መታወቂያው ውድቅ ስለሌለው እና ገንቢው ባዶ ፣ በተለይም ጠቋሚ ልዩነት አለው።

ለምን ጃቫን መማር እና እንዴት ውጤታማ በሆነ መንገድ ማድረግ እንደሚቻል። የ Yandex ሪፖርት

ግን አሁንም ስም ማስቀመጥ ልንረሳው እንችላለን፣ ስለዚህ የነገር መልሶ ማጫወትን ባዶ አድርገነዋል። አሁን፣ እቃችንን ከግንባታ ስንገነባ ሜዳው ውድቅ እንዳልሆነ ይፈትሻል። እና ያ ብቻ አይደለም.

የመጨረሻውን ምሳሌ እንመልከት። በዚህ አጋጣሚ፣ በመታወቂያው የሩጫ ጊዜ ውስጥ እንደምንም ባዶ ካስቀመጥነው፣ እርስዎ እንዳደረጉት ወዲያውኑ ማወቁ በጣም ጥሩ ነው እና አሁን ስህተት እየሰሩ መሆኑ ጥሩ አይደለም።

ለምን ጃቫን መማር እና እንዴት ውጤታማ በሆነ መንገድ ማድረግ እንደሚቻል። የ Yandex ሪፖርት

ስህተት መወርወር ያለብህ ተጠቃሚ በሚፈጠርበት ጊዜ ሳይሆን ወደ መታወቂያው ባዶ ስታቀናብር ነው። ስለዚህ፣ በBuilder ውስጥ ሴተር ኢንቲጀርን ወደ ኢንት እንለውጣለን እና ወዲያውኑ ባዶ እንደጣሉት ይምላል።

ባጭሩ ጥቅሙ ምንድን ነው? ቀላል የገንቢ ንድፍ አለ፣ ነገር ግን አተገባበሩ እንኳን አንዳንድ ረቂቅ ነገሮች አሉት፣ ስለዚህ የተለያዩ የስርዓተ-ጥለት አተገባበርን መመልከት በጣም አሪፍ ነው። እያንዳንዱ ንድፍ በደርዘን የሚቆጠሩ አተገባበርዎች አሉት። ይህ ሁሉ በጣም አስደሳች ነው።

ለምን ጃቫን መማር እና እንዴት ውጤታማ በሆነ መንገድ ማድረግ እንደሚቻል። የ Yandex ሪፖርት

በምርት ኮድ ውስጥ ግንበኛን እንዴት እንጽፋለን? እዚህ የእኛ ተጠቃሚ ነው። ከሎምቦክ ቤተ-መጽሐፍት ውስጥ የገንቢ ሽክርክሪት እናያይዛለን, እና እሱ ራሱ ለእኛ ግንበኛ ያመነጫል. ያም ማለት ምንም ኮድ አንጽፍም, ግን ጃቫ ቀድሞውኑ ይህ ክፍል ገንቢ እንዳለው ያስባል, እና እንደዚህ ብለን ልንጠራው እንችላለን.

ጃቫ ለሁሉም ነገር ማለት ይቻላል ቤተመፃህፍት እንዳለው ተናግሬአለሁ፣ ሎምቦክን ጨምሮ፣ ቦይለርፕሌትን ከመፃፍ ለመቆጠብ የሚያስችል አሪፍ ላይብረሪ። ገንቢ፣ GET

ለምን ጃቫን መማር እና እንዴት ውጤታማ በሆነ መንገድ ማድረግ እንደሚቻል። የ Yandex ሪፖርት

ቅጦች የስነ-ህንፃ ሊሆኑ ይችላሉ - ከአንድ ክፍል ጋር ብቻ ሳይሆን በአጠቃላይ ስርዓቱ ጋር የተያያዘ. በስርዓት ዲዛይን ውስጥ እንደዚህ ያለ ጥሩ መርህ አለ ነጠላ ኃላፊነት መርህ። ስለ ምን እያወራ ነው? እያንዳንዱ ክፍል ለአንዳንድ የራሱ ተግባራት ተጠያቂ መሆን አለበት የሚለው እውነታ. በዚህ አጋጣሚ፣ ከተጠቃሚዎች፣ JSON ነገሮች ጋር የሚገናኝ መቆጣጠሪያ አለን። የJSON ዕቃዎችን የጃቫ አፕሊኬሽኑ ወደ ሚሠራቸው ሞዴሎች የሚቀይር ፊት ለፊት አለ። ከእነዚህ ሞዴሎች ጋር አብሮ የሚሰራ ውስብስብ ሎጂክ ያለው አገልግሎት አለ። እነዚህን ሞዴሎች ወደ ዳታቤዝ የሚያደርጋቸው እና ከመረጃ ቋቱ ውስጥ የሚያወጣ የመረጃ ተደራሽነት ነገር አለ። እና የመረጃ ቋቱ ራሱ አለ። በሌላ አነጋገር፣ ሁሉም በአንድ ክፍል ውስጥ አይደሉም፣ ነገር ግን አምስት የተለያዩ ክፍሎችን እየሠራን ነው፣ እና ይሄ ሌላ ስርዓተ-ጥለት ነው።

ለምን ጃቫን መማር እና እንዴት ውጤታማ በሆነ መንገድ ማድረግ እንደሚቻል። የ Yandex ሪፖርት

አንዴ ብዙ ወይም ባነሰ ጃቫ ከተማሩ፣ ዳታቤዝ ያለው፣ ከሌሎች ኤፒአይዎች ጋር አብሮ የሚሰራ እና የአገልጋይ መተግበሪያዎን ለREST API ደንበኞች የሚያጋልጥ የራስዎን ፕሮጀክት መፃፍ በጣም ጥሩ ነው። ይህ በሂሳብዎ ላይ ቢጨምሩት ጥሩ ነገር ነው፣ ለትምህርትዎ ጥሩ መጨረሻ ይሆናል። በዚህ ሄደህ ሥራ ማግኘት ትችላለህ።

ለምን ጃቫን መማር እና እንዴት ውጤታማ በሆነ መንገድ ማድረግ እንደሚቻል። የ Yandex ሪፖርት

የአገልጋዬ መተግበሪያ ምሳሌ እዚህ አለ። በሁለተኛው ዓመቴ፣ ከወንዶቹ ጋር የቃል ወረቀት ጻፍኩ። ዝግጅቶችን ለማዘጋጀት የሞባይል መተግበሪያ ይጽፉ ነበር. እዚያ, ተጠቃሚዎች በ VKontakte በኩል መግባት, በካርታው ላይ ነጥቦችን ማስቀመጥ, ክስተቶችን መፍጠር, ጓደኞቻቸውን ወደ እነርሱ መጋበዝ, የክስተቶችን ምስሎች ማስቀመጥ, ወዘተ.

በፕሮጀክቱ ውስጥ ምን አደረግሁ? SQL ሳይጠቀሙ የአገልጋይ መተግበሪያን በስፕሪንግ ቡት ጽፈዋል። አላውቀውም ነበር፣ JPA ተጠቅሜያለሁ። ምን ሊያደርግ ይችላል? በ OAuth-2 በኩል ወደ VK ይግቡ። የተጠቃሚውን ማስመሰያ ይውሰዱ ፣ ከእሱ ጋር ወደ VK ይሂዱ ፣ እሱ እውነተኛ ተጠቃሚ መሆኑን ያረጋግጡ። በ VKontakte በኩል ስለተጠቃሚዎች መረጃ ይቀበሉ። መረጃን በዳታቤዝ ውስጥ ማስቀመጥ ችሏል፣ እንዲሁም በJPA በኩል። ስዕሎችን እና ሌሎች ፋይሎችን በኮምፒዩተር ማህደረ ትውስታ ውስጥ በብቃት ያስቀምጡ እና ወደ እነሱ የሚወስዱትን በመረጃ ቋት ውስጥ ያስቀምጡ። በዛን ጊዜ በመረጃ ቋቱ ውስጥ የ CLOB እቃዎች እንዳሉ አላውቅም ነበር, ስለዚህ እኔ በዚህ መንገድ አደረግኩት. ለተጠቃሚዎች፣ የደንበኛ መተግበሪያዎች REST API ነበር። እና ለመሠረታዊ ተግባራት የዩኒት ሙከራዎች ነበሩ.

[…] የጃቫን ስኬታማ የመማር ትንሽ ምሳሌ። በዩንቨርስቲ የመጀመሪያ አመትዬ፣ C # ተምሬያለሁ እና ስለ OOP ፕሮግራሚንግ - ምን አይነት ክፍሎች፣ ኢንተርፕራይዞች፣ አብስትራክት እንደሆኑ እና ለምን እንደሚያስፈልግ ግንዛቤ ተሰጠኝ። በጣም ረድቶኛል። ያለዚህ ፣ ጃቫ መማር በጣም ከባድ ነው ፣ ለምን ክፍሎች እንደሚያስፈልግ ግልፅ አይደለም።

ለምን ጃቫን መማር እና እንዴት ውጤታማ በሆነ መንገድ ማድረግ እንደሚቻል። የ Yandex ሪፖርት

በዩንቨርስቲው በሁለተኛው አመት እንደገና ጃቫ ኮርን አስተማሩ, ነገር ግን እዚያ አላቆምኩም, እኔ እራሴ ስፕሪንግን ለማጥናት ሄጄ አንድ ኮርስ ወረቀት ጻፍኩኝ, ፕሮጄክቴን, ከላይ የጠቀስኩት. እና ከዚህ ሁሉ ጋር, በ Yandex ውስጥ ለስራ ልምምድ ሄድኩ, ቃለ መጠይቅ አልፌ እና ወደ Yandex.Market ገባሁ. እዚያም ለቤሩ ጀርባውን ጻፍኩኝ, ይህ የእኛ የገበያ ቦታ ነው, እና ለ Yandex.Market እራሱ.

ከዚያ በኋላ፣ ከስድስት ወራት በፊት፣ በዚያው ገበያ ውስጥ ወዳለ ሌላ ቡድን ተዛወርኩ። ለንግድ አጋሮች ትንታኔዎችን እናደርጋለን. እኛ የትንታኔ መድረክ ላይ ነን፣ ከኋላ በኩል ሶስት ነን፣ ስለዚህ በፕሮጀክቱ ላይ ትልቅ ተፅዕኖ አለኝ። በእውነቱ በጣም አስደሳች ነው። ያም ማለት በእውነቱ በገበያ ላይ መረጃን እናቀርባለን - ሽያጮች ምን እንደሆኑ ፣ በምን ምድቦች ፣ በምን ሞዴሎች ፣ ለንግድ አጋሮች ፣ ትልልቅ ታዋቂ ኩባንያዎች። እና እኛ ሶስት ብቻ ነን, ይህንን ኮድ እንጽፋለን, እና በጣም አሪፍ ነው.

አመሰግናለሁ! ጠቃሚ አገናኞች፡-
- "ጃቫ 8. የጀማሪ መመሪያ".
- የውሂብ መዋቅሮች.
- SQLZOO.
- የውሂብ ጎታ መደበኛነት.
- የንድፍ ንድፎች.
- የንድፍ ቅጦች.
- ንፁህ ኮድ.
- ውጤታማ ጃቫ.

ምንጭ: hab.com

አስተያየት ያክሉ