ትርፍ፡
- እንደገና ከመፈጠሩ በፊት የአሁኑን ባህሪ የሚይዝ የሙከራ ሴፍቲኔት የማዘጋጀት ችሎታ
- AI ትንንሽ፣ አንድ እርምጃ፣ ባህሪን የሚጠብቁ ለውጦችን የመጠየቅ እና እያንዳንዱን እርምጃ የማረጋገጥ ችሎታ
- በንግድ አውድ ውስጥ የቴክኒክ ዕዳን የመለየት እና ቅድሚያ የመስጠት ችሎታ
ማደስ የውጫዊ ባህሪውን ሳይለውጥ የኮዱን ውስጣዊ መዋቅር ማሻሻል ነው፡ የበለጠ ሊነበብ የሚችል፣ ቀላል እና የበለጠ እንዲቆይ ማድረግ። የቴክኒክ እዳ ለፈጣን መፍትሄ ተብሎ የተደረገ የዲዛይን ስምምነት እና በጊዜ ሂደት "በወለድ" የሚከፈል ነው - ዛሬ የቆረጥክበት ጥግ ሁሉ ነገ እንደ መቀዛቀዝ ወይም ሳንካ ይመለሳል። ሰው ሰራሽ የማሰብ ችሎታ ተደጋጋሚ እና ሜካኒካል የማደስ ስራዎችን የሚያፋጥን ኃይለኛ ረዳት ነው; ግን አንድ ወርቃማ የመልሶ ማቋቋም ህግ አለ, እና AI ብቻ ዋስትና ሊሰጠው አይችልም: ባህሪ መለወጥ የለበትም.
በዚህ ክፍል ውስጥ በ AI ደህንነቱ የተጠበቀ ማደስ እንዴት እንደሚሰራ እንማራለን-ትንሽ እና ሊቀለበስ የሚችሉ እርምጃዎች, በፈተናዎች መከላከል, የኮድ ሽታዎችን መለየት እና የቴክኒካዊ ዕዳን ቅድሚያ መስጠት. ወሳኙ ነጥብ ይህ ነው፡ ባህሪው መጠበቁን የሚያረጋግጠው የማለፊያ ፈተናዎች እንጂ የ AI ቃል አይደለም።
ወርቃማው የመልሶ ማቋቋም ህግ፡ ባህሪው ያለማቋረጥ ይኖራል
ዳግም መፈጠርን አደገኛ የሚያደርገው ባለማወቅ "እየተሻሻልኩ ነው" እያለ ባህሪን መቀየር ነው። ሁኔታን ሲያቃልል የጠርዝ መያዣን መጣል፣ ሉፕ በሚቀይርበት ጊዜ ትዕዛዙን መጣስ፣ አንድ ተግባር ሲሰነጠቅ የጎንዮሽ ጉዳት ማጣት - ሁሉም "ንፁህ የሚመስል" ግን የተሰበረ ኮድ ያዘጋጃሉ።
ለዚህም ነው እንደገና ለመፈጠር መሞከር ቅድመ ሁኔታ የሆነው፡ ከመቀየርዎ በፊት ያለውን ባህሪ የሚይዙ ሙከራዎች ሊኖሩዎት ይገባል። እነዚህ ሙከራዎች "የደህንነት መረብ" ናቸው; በመልሶ ማቋቋም ጊዜ በድንገት አንድ ነገር ከጣሱ እነሱ ሰብረው ያስጠነቅቁዎታል። ፈተናዎች ከሌሉዎት መጀመሪያ ያለውን ባህሪ የሚያስተካክሉ ሙከራዎችን ይፃፉ (በክፍል 5 ላይ እንደተማርነው) - AI መዝለል የሚጀምረው እዚህ ላይ ነው።
ጥንቃቄ፡- ያለ ቴስትኔት በ AI የታገዘ ማደስ በጣም ተንኮለኛ ከሆኑ የሳንካ ምንጮች አንዱ ነው። "ባህሪውን ጠብቄአለሁ" ማለት ቀላል ነው; ማስረጃው ከለውጡ በፊት እና በኋላ ተመሳሳይ ሙከራዎች ማለፋቸው ነው.
ደረጃ በደረጃ፡ ደህንነቱ የተጠበቀ የመልሶ ማቋቋም ፍሰት
- የሴፍቲኔት መረቡን ያዋቅሩ። እርስዎ የሚያድሱትን ኮድ የአሁኑን ባህሪ የሚይዙ ሙከራዎች ይኖሩ። ካልሆነ በመጀመሪያ ይፃፉ (እና ሲያልፉ ይመልከቱ)።
- ሽታውን ይሰይሙ. ምን እያሻሻሉ ነው እና ለምን? "ይህ ተግባር 3 ነገሮችን ያደርጋል", "ተመሳሳይ አመክንዮ በ 4 ቦታዎች ይደገማል", "ስሞች አሳሳች ናቸው."
- ትንሽ፣ ባለ አንድ ደረጃ እርምጃዎችን ይጠይቁ። መላውን ፋይል እንደገና ለመፃፍ AI ን ለአንድ ነጠላ ለውጥ ይጠይቁ (ለምሳሌ “ይህን ተግባር በግማሽ ይከፋፍሉት”)።
- ፈተናዎችን አሂድ. ከእያንዳንዱ እርምጃ በኋላ. አረንጓዴ ከሆነ ይቀጥሉ፣ ቀይ ከሆነ መልሰው ይውሰዱት።
- Diff አንብብ። ለውጡ በእርግጥ ባህሪን የሚጠብቅ መሆኑን በመስመር ያረጋግጡ; AI “መዋቅር ብቻ ነው” ሲል አመክንዮ መንሸራተት ሊኖር ይችላል።
- ወደ ትናንሽ ቁርጥራጮች ይቀላቀሉ. ትልልቅ የአንድ ጊዜ ዳግም መፈጠር PRs ሁለቱም አደገኛ እና የማይገመገሙ ናቸው።
ሶስት ሚኒ ጉዳዮች
ጉዳይ 1 - 220-መስመር ተግባር ደህንነቱ በተጠበቀ ሁኔታ ተከፍሎ። አንድ ቡድን ባለ 220-መስመር የማዘዣ ሂደት ተግባር ነበረው። የመጀመሪያዎቹ 14 ሙከራዎች ተጽፈዋል (በ AI እርዳታ) የአሁኑን ባህሪ የያዙ, ሁሉም አልፈዋል. ከዚያም ተግባሩ በ AI በደረጃ በ 5 ትናንሽ ተግባራት ተከፍሏል; ፈተናዎች ከእያንዳንዱ እርምጃ በኋላ ተካሂደዋል. በአንድ ደረጃ ሁለት ሙከራዎች ተሰብረዋል - AI በጠርዝ መያዣ ውስጥ መመለሱን አምልጦታል። ሙከራዎች ይህንን ወዲያውኑ ያዙት እና ያስተካክሉት። ኔትወርክ ከሌለ ስህተቱ እስከ ምርት ድረስ ሊሄድ ይችል ነበር።
ጉዳይ 2 - ያለ ቴስትኔት ጥፋት. ሌላ ገንቢ ከ AI ጋር ምንም ሙከራዎች ያልነበረው የቀን ስሌት ሞጁሉን "አጽድቷል". ኮድ የተሻለ ይመስላል, ነገር ግን የዝላይ ዓመቱን በስህተት እያሰላ ነበር; ስህተቱ ከሁለት ሳምንታት በኋላ ከደንበኛ ቅሬታ ጋር ወጣ። ኪሳራው እንደገና ከመፍጠር ከተቀመጠው ጊዜ በላይ ይበልጣል። ትምህርት፡ ሳይፈተሽ ማደስ ቁማር ነው።
ጉዳይ 3 - የቴክኒክ ዕዳ ቅድሚያ መስጠት. አንድ ቡድን ለ AI የ 30 ወይም ከዚያ በላይ "ሊሻሻል" ነጥቦችን የሰጠው እና እያንዳንዳቸው በ "ድግግሞሽ ለውጥ × አደጋ × ጥረት" ዘንግ ላይ አስመዝግበዋል. በውጤቱ ሠንጠረዥ ውስጥ, እምብዛም ያልተነካ አስቀያሚ ሞጁል በእውነቱ ዝቅተኛ ቅድሚያ የሚሰጠው ሲሆን, በተደጋጋሚ የሚለወጠው መካከለኛ ውስብስብነት ያለው ሞጁል ከፍተኛ ቅድሚያ የሚሰጠው ጉዳይ ነው. ቡድኑ ጉልበቱን ወደ ትክክለኛው ቦታ መርቷል.
አራት ሊገለበጡ የሚችሉ አብነቶች
የኮድ ሽታ መለየት እና ቅድሚያ መስጠት፡-
የዝርዝር ማሻሻያ እጩ በዚህ ኮድ ውስጥ "ይሸታል": ረጅም ተግባር, መድገም (DRYViolation), አሳሳች ስም, ጥልቅ የጎጆ ሁኔታ, የተደበቀ የጎንዮሽ ጉዳት, አስማት ቁጥር. ለእያንዳንዱ፡ አካባቢ፣ ለምን ችግሩ፣ የተጠቆመ ትንሽ እርምጃ፣ የተገመተ አደጋ (ዝቅተኛ/መካከለኛ/ከፍተኛ)። ኮድ ገና አትለውጡ፣ በቀላሉ ያቅዱ።{{code}}
አንድ እርምጃ፣ ባህሪን የሚጠብቅ ለውጥ፡-
ይህንን ብቻ ያድርጉ፡ {{ነጠላ መለወጥ፣ ለምሳሌ ይህንን ተግባር ወደ 3 ትናንሽ የተሰየሙ ተግባራት ይከፋፍሉት}}። የሚታየውን ባህሪ፣ ፊርማ እና የመመለሻ እሴቶችን ይቀይሩ። የቀየሩት ነገር ሁሉ ባህሪውን ለምን እንደሚጠብቅ በ1 ዓረፍተ ነገር ፃፉ።{{code}}
ከመልሶ ማቋቋም በፊት የደህንነት መረብ (የባህሪ ሙከራ)
የዚህን ተግባር CURRENT ባህሪ የሚይዙ ሙከራዎችን ይፃፉ (ትክክል ወይም አይደለም); ግቡ በማደስ ጊዜ ባህሪው ከተቀየረ ለመያዝ ነው. የተለመዱ + የጠርዝ ግቤቶችን ያካትቱ። አሁን ባለው የተግባሩ ውጤት መሰረት የሚጠበቁትን ይፃፉ።{{ተግባር}}
የቴክኒክ ዕዳ መዝገብ (የኋላ መዝገብ) ማመንጨት፡-
የሚከተለውን የሽታ ዝርዝር ወደ ቅድሚያ መስጫ ሰንጠረዥ ውስጥ አፍስሱ፡ ንጥረ ነገር፣ የተጎዳው አካባቢ፣ የለውጥ ድግግሞሽ (የእኔ እውቀት፡ {{...}})፣ ስጋት፣ የተገመተ ጥረት፣ የሚመከር ቅድሚያ። ከፍተኛ ተጽዕኖውን + ዝቅተኛ ጥረትን ከላይ ያስቀምጡ። {{የሽታ_ዝርዝር}}
ደካማ ጥያቄ / ጠንካራ ጥያቄ
ደካማ፡ "ይህን ኮድ አጽዳ እና የተሻለ አድርግ።"
ጠንካራ: "ይህን 90-መስመር ተግባር ውጫዊ ባህሪውን እና ፊርማውን ሳይቀይር ወደ 3 ትናንሽ ተግባራት በነጠላ ሃላፊነት ይከፋፍሉት. የጎንዮሽ ጉዳቶችን (ዲቢ ይጽፋል) አሁን ባለው ቅደም ተከተል ያስቀምጡ. እኔ ፈተናዎች አሉኝ, ባህሪው ተመሳሳይ መሆን አለበት. ልዩነቱን ይስጡ እና እያንዳንዱ መለያየት ባህሪን የሚጠብቅበትን ምክንያት በአንድ ዓረፍተ ነገር ያብራሩ. [ኮድ]"
ኃይለኛ ስሪት; አንድ ነጠላ ለውጥን ይፈልጋል፣ የባህሪ እና የፊርማ ገደቦችን በግልፅ ያስገድዳል፣ እናም ማፅደቅን ይጠይቃል። እንደ "የተሻለ አድርግ" ያሉ ግልጽ ያልሆኑ ጥያቄዎች ከቁጥጥር ውጪ የሆኑ እና አደገኛ ለውጦችን ያስከትላሉ።
የመልሶ ማቋቋም አይነት
AI አስተማማኝነት
ቅድመ ሁኔታ
እንደገና መሰየም
ከፍተኛ
ስፋቱ ትክክል ነው?
የተግባር ክፍፍል
መካከለኛ-ከፍተኛ
ቴስትኔት የግድ ነው።
መደጋገም ማጋራት።
መካከለኛ
የባህሪ ልዩነት ሊደበቅ ይችላል።
የአልጎሪዝም/የመዋቅር ለውጥ
ዝቅተኛ
ሰፊ ሙከራ + የሰው ማረጋገጫ
የስነ-ህንፃ ማስተካከያ
ዝቅተኛ
በሰው የሚመራ፣ AI የሚደገፍ
የቴክኒክ ዕዳን ማስተዳደር፣ ዳግም ማስጀመር አይደለም።
የቴክኒክ ዕዳ ሁሉም መጥፎ አይደለም; አንዳንድ ጊዜ በንቃተ ህሊና መበደር (ማድረስን ለማሟላት) ትክክለኛ ውሳኔ ነው. ግቡ ዕዳን ማስወገድ አይደለም, ነገር ግን እንዲታይ እና እንዲተዳደር ማድረግ ነው. AI ዕዳን በመለየት እና በማስቀደም ፈጣን ነው, ነገር ግን "የትኛው ዕዳ መከፈል እንዳለበት እና የትኛው መተው እንዳለበት" መወሰን የንግድ ሥራ አውድ ይጠይቃል: ይህ ሞጁል ምን ያህል ጊዜ ይለወጣል, ምን ያህል ሰዎች ላይ ተጽዕኖ ያሳድራል, አደጋው ምንድን ነው? ይህ ውሳኔ የኮድ መሰረቱን እና ምርቱን በሚያውቀው ቡድን ነው; AI አማራጮችን ብቻ ያብራራል.
ጠቃሚ ምክር፡ የባህሪ ለውጥን ከሚያካትቱ የተሃድሶ PR ዎች ተለይተህ አቆይ። "ይህ PR ማደስ ብቻ ነው፣ ባህሪው አንድ ነው" ማለት መቻል በቀላሉ ለመመርመር ቀላል ያደርገዋል እና ችግር ከተፈጠረ መንስኤውን በፍጥነት ለማጥበብ ያስችልዎታል።
የተለመዱ ስህተቶች
- ያለ testnet refactoring. ባህሪው እንደተጠበቀ የሚያረጋግጥ ምንም ነገር አይኖርዎትም።
- "ሙሉውን ፋይል አጽዳ" ማለት ነው። ትላልቅ, ቁጥጥር የማይደረግባቸው ለውጦች ስህተቱን ይደብቃሉ እና ሊመረመሩ አይችሉም.
- ዲፍ ሳያነቡት መቀበል። AI “መዋቅር ብቻ” ሲል የተወሰነ አመክንዮ ተንሸራቶ ሊሆን ይችላል።
- ከባህሪ ለውጥ ጋር ግራ መጋባት። ሁለቱንም በአንድ PR ውስጥ ማድረግ የስር መንስኤን መከታተል የማይቻል ያደርገዋል።
- እያንዳንዱን ሽታ ለማስተካከል መሞከር. አልፎ አልፎ የሚለወጠው አስቀያሚ ኮድ ብዙውን ጊዜ ዝቅተኛ ቅድሚያ የሚሰጠው ነው; በተደጋጋሚ ለሚለዋወጠው ቦታ ኃይል ይመድቡ.
በማጠቃለያው
ብቸኛው የመልሶ ማቋቋም ህግ ባህሪው ቋሚ ሆኖ የሚቆይ ነው, እና የዚህ ማረጋገጫው ፈተናዎች ናቸው. AI የኮድ ሽታዎችን ፣ አንድ-ደረጃ ለውጦችን እና የቴክኒካዊ ዕዳን በማስቀደም ረገድ ኃይለኛ ነው ። ነገር ግን የሴፍቲኔት መረብን ማዘጋጀት፣ ፈተናዎችን ማካሄድ እና ከእያንዳንዱ እርምጃ በኋላ ልዩነቱን ማንበብ አለብዎት። ትንሽ, ሊቀለበስ የሚችል እርምጃዎችን ይውሰዱ; እንደገና ማደስን ከባህሪ ለውጥ መለየት; እና የቢዝነስ አውድ የሚያውቀው ቡድን የትኛውን ዕዳ መክፈል እንዳለበት ይወስኑ።
የመተግበሪያ ተግባር
ከኮድዎ መሰረት ለእርስዎ ረጅም ወይም ውስብስብ የሚመስል ተግባር ይምረጡ። በመጀመሪያ የህትመት ሙከራዎች አሁን ያለውን ባህሪ በ"Safety net" አብነት የሚይዙ እና ሁሉም ካለፉ ይመልከቱ። ከዚያ ተግባሩን በነጠላ መንገድ (ለምሳሌ በግማሽ መከፋፈል) በ"አንድ-ደረጃ፣ ባህሪ-መጠበቅ ለውጥ" ስርዓተ-ጥለት እና ፈተናዎቹን እንደገና ያሂዱ። ፈተና ከተቋረጠ ምክንያቱን ይወቁ; ጨርሶ ካልተቋረጠ፣ ባህሪው በእርግጥ እንደተጠበቀ ለማረጋገጥ የልዩነቱን መስመር በመስመር ያንብቡ።
የማረጋገጫ ዝርዝር
- [ ] እንደገና መፈጠር ባህሪን መለወጥ እንደሌለበት አውቃለሁ እናም ይህን ለማረጋገጥ ሙከራዎች አሉ።
- [ ] ከተሃድሶ በፊት ወቅታዊ ባህሪን የሚይዝ የሴፍቲኔት መረብ እያዘጋጀሁ ነው።
- [] ትንሽ፣ አንድ-ደረጃ ለውጦችን ከ AI እፈልጋለሁ፣ ትልቅ የአንድ ጊዜ ለውጥ አይደለም።
- [ ] ከእያንዳንዱ እርምጃ በኋላ ፈተናዎቹን እሮጣለሁ እና ልዩነቱን አነባለሁ።
- [ ] PRን ከባህሪ ለውጥ PR ማደስን እቀጥላለሁ።
- [ ] ለቴክኒካል ዕዳ ከንግድ አውድ ጋር ቅድሚያ እሰጣለሁ እንጂ በጭፍን ዜሮ ለመውጣት አልሞክርም።