ትርፍ፡
- እንደ MVVM ያሉ አርክቴክቸር በመጫን እና ሰው ሰራሽ ኢንተለጀንስ ኮድ ከማመንጨትዎ በፊት ለመንከባከብ ቀላል እና ሊሞከር የሚችል ኮድ ማግኘት።
- እንደ ኑል ሴፍቲ እና ኮትሊን፣ አማራጭ እና የማስታወሻ ምልልሶች በስዊፍት ውስጥ ያሉ ቋንቋ-ተኮር ወጥመዶችን የማወቅ ችሎታ እና የመነጨውን ኮድ በእነሱ ላይ ያረጋግጡ።
- በመስቀል-መድረክ (Flutter፣ React Native) ፕሮጀክቶች ውስጥ ለእያንዳንዱ መድረክ ፈቃዶችን እና ውቅርን በተናጠል የማረጋገጥ ችሎታ
የተንቀሳቃሽ ስልክ ልማት ልብ ኮድ ነው፣ እና ከ AI በጣም ተጨባጭ የሆኑ ጥቅማ ጥቅሞች የሚታዩበት ነው። ነገር ግን " AI ኮድ ይፃፍልኝ " የሚለው አረፍተ ነገር በራሱ ስልት አይደለም. ጥሩ ኮድ ማመንጨት; ትክክለኛውን ቋንቋ፣ ትክክለኛ አርክቴክቸር፣ ትክክለኛ ወሰን እና ትክክለኛ ማረጋገጫን ማጣመርን ይጠይቃል። በዚህ ክፍል ውስጥ፣ በአንድ ኮድ መሰረት በሁለት መድረኮች ላይ ለሚሰሩ የስዊፍት፣ የአይኦኤስ ቋንቋ፣ ኮትሊን፣ የአንድሮይድ ቋንቋ እና መስቀል-ፕላትፎርም መሳሪያዎችን እንዴት በተቀላጠፈ እና ደህንነቱ በተጠበቀ ሁኔታ መጠቀም እንደምንችል እንማራለን። ግቡ AIን እንደ “ኮድ አውቶሜትድ” ሳይሆን እንደ አርክቴክቸር የሚወስኑት እንደ ማፋጠን ነው።
አርክቴክቸር መጀመሪያ፣ ኮድ ሁለተኛ
በጣም የተለመደው ስህተት ኤአይአይን ያለሥነ ሕንፃ ፕላን በቀጥታ ኮድ መጠየቅ ነው። ይህ መሠረት ሳይጥል ግድግዳ እንደመገንባት ነው። በሞባይል ላይ በጣም የተለመደው አርክቴክቸር MVVM (ሞዴል-እይታ-እይታ ሞዴል — ውሂቡን፣ ማሳያውን እና የማሳያውን አመክንዮ የሚለይ የንድፍ ንድፍ) ነው። ይህ ማለት እይታ እይታ ብቻ ነው, አመክንዮ እና ሁኔታ በ ViewModel ውስጥ ይኖራሉ, እና ውሂቡ በሞዴል ንብርብር ውስጥ ነው. ይህንን መለያየት ከጅምሩ በ AI ላይ ካላስገደዱ ፣ ሁሉንም አመክንዮዎች ወደ ማያ ገጹ ኮድ የሚይዝ የማይሞከር እና ለመጠገን አስቸጋሪ የሆነ መዋቅር ይፈጥራል።
ጤናማ የኮድ ማመንጨት ፍሰት ደረጃ በደረጃ፡-
- አውዱን ስጡ። መድረክ፣ ቋንቋ፣ ሥሪት፣ አርክቴክቸር፣ ጥቅም ላይ የዋሉ ቤተ መጻሕፍት።
- ንብርብሮችን ይጠይቁ. በመጀመሪያ የውሂብ ሞዴል, ከዚያም የአውታረ መረብ / የውሂብ ንብርብር, ከዚያም ViewModel, ማያ ገጹን ያበቃል.
- ትናንሽ ቁርጥራጮችን ይጠይቁ. አንድ ማያ ገጽ ወይም አንድ ተግባር; ግዙፍ ባለ 500 መስመር ፋይል አይደለም።
- እያንዳንዱን ክፍል ያረጋግጡ. ይገንቡ, ይፈትኑ, ያዋህዱ; ከዚያም ወደ ቀጣዩ ትራክ ይሂዱ.
- ሪፋክተር ይጠይቁ (ኮዱን አሻሽል)። ከስራ ኮድ በኋላ "ይህን የበለጠ ሊነበብ እና ሊሞከር የሚችል ያድርጉት".
ፍንጭ፡ ለ AI ይንገሩ "ኮዱን በ MVVM መሰረት ይከፋፍሉት፡ የትኛው ክፍል View መሆን አለበት, የትኛው ViewModel መሆን አለበት, ሞዴል መሆን አለበት, ለየብቻ ይስጧቸው". ይህ ነጠላ ዓረፍተ ነገር የመነጨውን ኮድ የስነ-ህንፃ ጥራት በሚያስደንቅ ሁኔታ ያሻሽላል።
ኮትሊን እና ስዊፍት፡- ቋንቋ-ተኮር ግምት
ኮትሊን (አንድሮይድ) እና ስዊፍት (አይኦኤስ) ዘመናዊ፣ ደህንነታቸው የተጠበቁ ቋንቋዎች ናቸው፣ ግን የተለያዩ ችግሮች አሏቸው። በኮትሊን፣ ባዶ ደኅንነት (ተለዋዋጭ በአይነት ስርዓቱ “ኑል” ሊሆን እንደሚችል መፈተሽ) አንዳንድ ጊዜ በ AI የተተየበ ነው። አላስፈላጊ!! ኦፕሬተር (ብልሽት የሚያስገድድ ምልክት ባዶ ከሆነ) መተግበሪያውን ሊያበላሽ ይችላል። በስዊፍት ውስጥ የአማራጭ አስተዳደር እና የማቆያ ዑደቶች ወሳኝ ናቸው; AI በመዝጊያዎች ውስጥ [ደካማ ራስን] መጨመር ሊረሳው ይችላል እና ይህ የማስታወስ ችሎታን ይፈጥራል።
ስለዚህ ቋንቋ ሲመርጡ መጠየቂያውን በዚሁ መሰረት ያሻሽሉ፡ እንደ "Kotlin ውስጥ ባዶ ደህንነትን ጠብቅ፣ አይጠቀሙ!!" ወይም "በስዊፍት ውስጥ በመዝጊያዎች ውስጥ ጠንካራ የማጣቀሻ ምልልስን ይከላከሉ"።
ማስጠንቀቂያ፡- AI-የተሰራ ያልተመሳሰለ ኮድ ልዩ ትኩረት ያስፈልገዋል። በ Kotlin coroutines ውስጥ የተሳሳተውን ወሰን መምረጥ ወይም ዋናውን ክር በአሲንክ/በስዊፍት መጠበቅ ላይ ማገድ መተግበሪያውን ያቆማል። AI እነዚህን ስህተቶች በተደጋጋሚ ያደርጋል; ሳትሞክሩት አትመኑት።
ተሻጋሪ ልማት፡ ፍሉተር እና ምላሽ ተወላጅ
ወደ ሁለቱም አይኦኤስ እና አንድሮይድ በነጠላ ኮድ መሰረት መሄድ ለሚፈልጉ ፍሉተር (የጉግል ዳርት ቋንቋን መሰረት ያደረገ መሳሪያ ስብስብ) እና React Native (ሜታ ጃቫስክሪፕት ላይ የተመሰረተ መፍትሄ) ጎልተው ይታያሉ። AI በእነዚህ አካባቢዎችም ኃይለኛ ነው, ነገር ግን አንዳንድ ጊዜ የመድረክ ልዩነቶችን (ፍቃዶችን, የማከማቻ ደንቦችን, መሳሪያ-ተኮር ባህሪን) ያልፋል. ለምሳሌ በFlutter ውስጥ የካሜራ ፍቃድ በ iOS እና Android ላይ በተለያዩ ፋይሎች ውስጥ ይገለጻል; AI አንድ ብቻ ነው መጻፍ የሚችለው. በፕላትፎርም ኮድ ውስጥ፣ "ለሁለቱም የመሣሪያ ስርዓቶች አስፈላጊ የሆኑትን ፈቃዶች እና ውቅር ስጥ" ማለት አስፈላጊ ነው።
የምርጫ ማጠቃለያ፡-
አቀራረብ
መቼ ነው።
ትኩረት ከ AI ጋር
ቤተኛ (ኮትሊን/ስዊፍት)
ከፍተኛው አፈጻጸም፣ የመሣሪያ-ጥልቅ ውህደት
እያንዳንዱ መድረክ የተለየ ኮድ አለው; ሁለት ጊዜ ያረጋግጡ
ፍንዳታ
አንድ ቡድን፣ ፈጣን፣ ወጥ የሆነ በይነገጽ
የመሳሪያ ስርዓት-ተኮር ፍቃድ/ቅንብሮችን በእጅ ያረጋግጡ
ቤተኛ ምላሽ ስጥ
የድር/ጄኤስ ቡድን ይገኛል።
የድልድዩን (የቤተኛ ድልድይ) ክፍሎችን በጥንቃቄ ይፈትሹ
ሶስት ጥቃቅን ጉዳዮች
ጉዳይ 1 - Corotine ወጥመድ. የአንድሮይድ ቡድን የምርት ዝርዝሩን ከ AI የሚጎትት ተግባር አግኝቷል። ኮዱ በዋናው ክር ውስጥ የአውታረ መረብ ጥያቄ ያቀርብ ነበር; ችግሩ በሙከራ መሳሪያው ላይ አልታየም ነገር ግን ደካማ በሆነው ኔትወርክ ላይ አፕሊኬሽኑ ለ4 ሰከንድ ከቀዘቀዘ በኋላ ኤኤንአር (አፕሊኬሽን ምላሽ የማይሰጥ) ማስጠንቀቂያ ሰጥቷል። AI "የኔትወርክ ስራውን በ IO መላክ ውስጥ እንዲሰራ" ሲነገረው ተስተካክሏል. ትምህርት፡- ተጓዳኝ ምንጊዜም ቁጥጥር ይደረግበታል።
ጉዳይ 2 - የማህደረ ትውስታ መፍሰስ. አንድ የአይኦኤስ ገንቢ በ AI የመነጨውን ስክሪን 20 ጊዜ ከፍቶ ከዘጋው በኋላ የመተግበሪያው ማህደረ ትውስታ ከ40 ሜባ ወደ 180 ሜባ ከፍ ብሏል። ምክንያቱ ViewController በመዝጊያው ውስጥ በመጥፋቱ [ደካማ ራስ] ምክንያት ከማስታወሻ ሊጸዳ አልቻለም። የ Xcode ማህደረ ትውስታ ግራፍ ወጥመዱን አሳይቷል. ትምህርት፡ የማህደረ ትውስታ መገለጫ በአፍ መፍቻ እድገት ውስጥ ግዴታ ነው።
ጉዳይ 3 - የመድረክ ልዩነት. የFlutter ቡድን ከ AI የጋለሪ መዳረሻ ኮድ አግኝቷል፣ በአንድሮይድ ላይ ይሰራል ነገር ግን በiOS ላይ ተሰናክሏል። ምክንያቱ የፎቶ ቤተ-መጽሐፍት ፍቃድ መግለጫ (NSPhotoLibraryUsageDescription) ወደ Info.plist ፋይል ስላልተጨመረ ነው፤ AI የፃፈው አንድሮይድ ጎን ብቻ ነው። የ15 ደቂቃ ጥገና ነው፣ ነገር ግን ካልተያዘ የሱቅ ውድቅ ይሆን ነበር።
ደካማ ጥያቄ / ጠንካራ ጥያቄ
ደካማ መጠየቂያ፡ "ምርቶችን ከኤፒአይ የሚጎትት የ Kotlin ኮድ ይፃፉ።"
ኃይለኛ ጥያቄ፡ "የምርቱን ዝርዝር ከREST ኤፒአይ የሚጎትት ኮድ ለ አንድሮይድ/Kotlin ያመንጩ።- የአውታረ መረብ ንብርብር ከዳግም ሥራ ጋር፣ ተንጠልጣይ ተግባር - የአውታረ መረብ ሥራ በ Dispatchers.IO ውስጥ፤ ዋናውን ክር ማገድ- MVVM: ማከማቻ -> ViewModel -> የዩአይ ሁኔታ ከStateFlow ጋር - ስህተት አውታረ መረብ የለም ፣ የተለየ የታሸገ ክፍል ለ 4xx ፣ 5x ን ይከላከሉ 1 ዓረፍተ ነገር እያንዳንዱ ያብራራል."
ጠንካራ ማነሳሳት የተፈጠረው ኮድ በቀደሙት ጉዳዮች ወጥመድ ውስጥ እንዳይወድቅ ይከላከላል።
ሊገለበጡ የሚችሉ አብነቶች
የተነባበረ የማምረቻ አብነት፡ "ለ [መድረክ/ቋንቋ] [ገጽታ] አዳብር። በቅደም ተከተል አምርት፡ 1) የውሂብ ሞዴል (የውሂብ ክፍል/መዋቅር)2) የአውታረ መረብ ወይም የውሂብ ምንጭ layer3) ማከማቻ4) ViewModel (የግዛት አስተዳደር)5) ስክሪን (UI) እያንዳንዱን ንብርብር ለየብቻ ወደ ውጭ ላክ፣ በመካከላቸው የውህደት ማስታወሻ ጨምር።
የቋንቋ ልዩ የደህንነት አብነት (ኮትሊን)፡"ይህን የኮትሊን ኮድ ይገምግሙ፡- የ!! አጠቃቀምን አጽዳ እና የመድረክ አይነት - የCorotine ስፋት እና የላኪ ምርጫን ያረጋግጡ - ዋናውን ክር የሚከለክሉ ጥሪዎች አሉ?[ኮድ]"
ቋንቋ-ተኮር የደህንነት አብነት (ስዊፍት): "ይህን የስዊፍት ኮድ ይገምግሙ: - በመዘጋቶች ውስጥ የመቆየት አደጋ (ደካማ / ባለቤት ያልሆነ ራስን) - የአማራጭ ኃይል-ማራገፍ (!) - ከዋናው ክር (ኮድ) መውጣት የሚያስፈልገው ከባድ ስራ"
የመድረክ-አቋራጭ መቆጣጠሪያ አብነት፡ "ለዚህ [Flutter/React Native] በሁለቱም በiOS እና Android ባህሪ የሚያስፈልጉትን ሁሉንም ፍቃዶች፣ ውቅሮች እና የመሣሪያ ስርዓት-ተኮር ኮድ ይዘርዝሩ። የተለየ Info.plist እና AndroidManifest.xml ግቤቶችን ያቅርቡ።"
የተለመዱ ስህተቶች
- አርክቴክቸር ሳይጫን ኮድ መጠየቅ። ውጤቱ፡ ሁሉንም ነገር በስክሪኑ ላይ የሚያጨናነቅ የማይሞከር መዋቅር።
- የተመጣጣኝ ኮድ ሳይፈተሽ መተማመን። ዋና የክር ማገጃዎች እና ትክክለኛ ያልሆነ ስፋት በጣም የተለመዱ የአደጋ መንስኤዎች ናቸው።
- የማስታወስ አስተዳደርን ችላ ማለት. በተለይም በ iOS መዘጋት ውስጥ ይፈስሳል; መገለጫ ሳይወስዱ አይታወቅም.
- የመድረክ ልዩነቶችን ማለፍ። በመስቀል-መድረክ መሳሪያዎች ውስጥ, ፍቃዶች እና ውቅር በሁለቱ መድረኮች ላይ በተናጠል ተጽፈዋል.
- የቤተ መፃህፍቱን ስሪት አለማረጋገጥ። AI ጊዜው ያለፈበት Retrofit/Alamofire API ሊጠቁም ይችላል። ከኦፊሴላዊው ሰነድ ጋር ያረጋግጡ።
- ነጠላ ግዙፍ ፋይል በማዘጋጀት ላይ። ለማቆየት እና ለማረጋገጥ የማይቻል; ንብርብሮችን ይጠይቁ.
በማጠቃለያው
አርክቴክቸርን ሲገልጹ ከ AI ጋር ኮድ ማመንጨት ኃይለኛ ነው። መጀመሪያ እንደ MVVM ያለ መዋቅር ይጫኑ፣ ከዚያም ንብርብርን በንብርብር ይጠይቁ እና በትናንሽ ቁርጥራጮች፣ እያንዳንዱን ክፍል ሰብስቡ እና ይሞክሩት። በኮትሊን ውስጥ ባዶ ደህንነት እና ኮርኦቲን፣ አማራጭ እና የማስታወሻ ምልልሶች በስዊፍት ውስጥ ልዩ ትኩረት ያስፈልጋቸዋል። በመስቀል-መድረክ መሳሪያዎች ውስጥ, ፈቃዶች እና ውቅሮች ለእያንዳንዱ መድረክ ለየብቻ ይፃፋሉ. የጠንካራ መጠየቂያው ቋንቋን፣ ሥሪትን፣ አርክቴክቸርን፣ እና ቋንቋን-ተኮር የደህንነት ደንቦችን ፊት ለፊት ይናገራል። ይህ በምርት ውስጥ በጣም የተለመዱ ብልሽቶችን እና የፍሳሽ ስህተቶችን ይከላከላል።
የመተግበሪያ ተግባር
ለዝርዝር ስክሪን (ለምሳሌ “የእውቂያ ዝርዝር”) በመረጡት መድረክ (ኮትሊን ወይም ስዊፍት) ውስጥ ያለውን “ተጨማሪ የማኑፋክቸሪንግ አብነት” በመጠቀም ከ AI ኮድ ይጠይቁ። የተፈጠረውን ኮድ በፕሮጀክት ላይ ጨምሩበት፣ ያጠናቅሩት እና እነዚህን ሁለት ቼኮች ያድርጉ፡ (1) ኔትወርክ/ረጅም ሂደት በዋናው ክር ላይ እየሄደ ነው፣ (2) ባዶ/አማራጭ ደህንነት ትክክል ነው? በቋንቋ-ተኮር የደህንነት አብነት ያገኙትን ችግር AI እንዲያስተካክል ያድርጉ።
የማረጋገጫ ዝርዝር
- [ ] ኮድ ከመጠየቅ በፊት አርክቴክቸርን (MVVM ወዘተ) ገለጽኩኝ።
- [] በትናንሽ ቁርጥራጮች በንብርብር ፈለግሁት
- [ ] የተመጣጣኝ ኮድ ዋናውን ክር እንደማይከለክል ሞከርኩ።
- [] ባዶ/አማራጭ የደህንነት እና የማህደረ ትውስታ አስተዳደርን አረጋግጫለሁ።
- [ ] የሁለት መድረኮችን ፈቃዶች/ቅንጅቶች በፕላትፎርም አቋራጭ ፕሮጀክት ውስጥ በተናጠል አረጋግጫለሁ።
- [ ] የቤተ-መጽሐፍት ስሪቶችን እና የኤፒአይ ፊርማዎችን ከኦፊሴላዊ ሰነዶች አረጋግጣለሁ።