Kitengo 8 / 12

Urekebishaji na Usimamizi wa Madeni ya Kiufundi

Faida:

  • Uwezo wa kusanidi wavu wa usalama wa jaribio ambao unanasa tabia ya sasa kabla ya kurekebisha tena
  • Uwezo wa kuuliza AI kwa mabadiliko madogo, ya hatua moja, ya kuhifadhi tabia na kuhalalisha kila hatua
  • Uwezo wa kutambua na kuweka kipaumbele deni la kiufundi ndani ya muktadha wa biashara

Kurekebisha upya ni kuboresha muundo wa ndani wa msimbo bila kubadilisha tabia yake ya nje: kuifanya isomeke zaidi, rahisi zaidi, iweze kudumishwa zaidi. Deni la kiufundi, kwa upande mwingine, ni maelewano ya kubuni yaliyofanywa kwa ajili ya suluhu la haraka na kulipwa "pamoja na riba" baada ya muda - kila kona unayokata leo itarudi kama mdudu au mdudu kesho. Akili ya Bandia ni msaidizi mwenye nguvu ambaye huharakisha kazi za kurudia na za mitambo; Lakini kuna kanuni moja ya dhahabu ya kurekebisha tena, na AI pekee haiwezi kuihakikishia: tabia lazima isibadilike.

Katika kitengo hiki, tunajifunza jinsi ya kufanya urekebishaji salama kwa kutumia AI: hatua ndogo na zinazoweza kutenduliwa, kulinda kwa majaribio, kutambua harufu za msimbo na kutanguliza deni la kiufundi. Jambo muhimu ni hili: ni majaribio ya kupita, sio neno la AI, ambayo inathibitisha kwamba tabia imehifadhiwa.

Kanuni ya Dhahabu ya Kurekebisha: Tabia Inabaki Daima

Kinachofanya kurudisha nyuma kuwa hatari ni kubadilisha tabia bila kujua huku ukisema "Ninaboresha." Kudondosha kipochi wakati wa kurahisisha hali, kuvunja mpangilio wakati wa kubadilisha kitanzi, kukosa athari wakati wa kugawa kitendakazi—yote hutoa "mwonekano safi" lakini msimbo uliovunjwa.

Ndio maana upimaji ni sharti la kurekebisha tena: kabla ya kubadilisha, lazima uwe na vipimo vinavyonasa tabia iliyopo. Vipimo hivi ni "wavu wa usalama"; Ikiwa utavunja kitu kwa bahati mbaya wakati wa kurekebisha tena, watakuvunja na kukuonya. Iwapo huna majaribio, andika majaribio ambayo hurekebisha tabia iliyopo kwanza (kama tulivyojifunza katika kitengo cha 5) - hapa ndipo AI inapoanza haraka.

Tahadhari: Urekebishaji upya unaosaidiwa na AI bila testnet ni mojawapo ya vyanzo vya hila vya mende. Ni rahisi kusema "nimehifadhi tabia"; Uthibitisho ni kwamba vipimo sawa hupita kabla na baada ya mabadiliko.

Hatua kwa Hatua: Salama Mtiririko wa Urekebishaji

  1. Weka mtandao wa usalama. Acha kuwe na vipimo ambavyo vinanasa tabia ya sasa ya nambari utakayorekebisha; Ikiwa sivyo, ziandike kwanza (na uzione zikipitia).
  2. Taja harufu. Unaboresha nini na kwa nini? "Kitendaji hiki hufanya mambo 3", "mantiki sawa hurudia katika sehemu 4", "majina yanapotosha".
  3. Uliza hatua ndogo, za hatua moja. Uliza AI mageuzi moja (k.m. "gawanya chaguo hili la kukokotoa kwa nusu"), sio kuandika upya faili nzima.
  4. Endesha majaribio. Baada ya kila hatua. Ikiwa ni ya kijani, endelea, ikiwa ni nyekundu, irudishe.
  5. Soma Tofauti. Thibitisha mstari kwa mstari kwamba mabadiliko ni kweli kuhifadhi tabia; Kunaweza kuwa na utelezi wa kimantiki unaposema AI ni "muundo tu".
  6. Unganisha katika vipande vidogo. PRs kubwa za mara moja za kuonyesha upya ni hatari na haziwezi kukaguliwa.

Kesi Tatu Ndogo

Kesi ya 1 — chaguo za kukokotoa za mistari 220 zimegawanywa kwa usalama. Timu moja ilikuwa na kazi ya kuchakata agizo la mistari 220. Majaribio 14 ya kwanza yaliandikwa (kwa msaada wa AI) ambayo yalichukua tabia ya sasa, wote walipita. Kisha kazi iligawanywa katika kazi 5 ndogo hatua kwa hatua na AI; Majaribio yaliendeshwa baada ya kila hatua. Vipimo viwili vilivunjwa kwa hatua moja - AI alikuwa amekosa kurudi kwa kesi ya makali. Majaribio yalikamata hii mara moja na kuirekebisha. Bila mtandao, hitilafu ingeweza kwenda kwa uzalishaji.

Kesi ya 2 - Maafa bila testnet. Msanidi programu mwingine "alisafisha" moduli ya kuhesabu tarehe ambayo haikuwa na majaribio na AI. Nambari hiyo ilionekana bora, lakini ilikuwa ikihesabu mwaka wa kurukaruka vibaya; Hitilafu ilitoka wiki mbili baadaye na malalamiko ya mteja. Hasara hiyo ilizidi sana muda uliohifadhiwa kutokana na kufikiria upya. Somo: kupanga upya bila kupima ni kamari.

Kesi ya 3 - Uwekaji kipaumbele wa deni la kiufundi. Timu moja iliipa AI kumbukumbu ya alama 30 au zaidi "zisizoweza kuboreshwa" na kila moja ikapata alama kwenye mhimili wa "mabadiliko ya mzunguko × hatari × juhudi". Katika jedwali lililosababisha, moduli mbaya ambayo haikuguswa mara chache kwa kweli ilikuwa kipaumbele cha chini, wakati moduli ya utata wa kati ambayo ilibadilika mara kwa mara ilikuwa kipaumbele cha juu. Timu ilielekeza nguvu zake mahali pazuri.

Violezo Vinne Vinakiliwa

Utambuzi wa harufu ya msimbo na vipaumbele:

Orodhesha "harufu" ya mgombeaji katika msimbo huu: utendaji wa muda mrefu, kurudia (DRYViolation), jina linalopotosha, hali ya kina kiota, athari iliyofichwa, nambari ya uchawi. Kwa kila: eneo, kwa nini tatizo, ilipendekeza hatua ndogo, makadirio ya hatari (chini/kati/juu). USIBADILISHE nambari ya kuthibitisha, panga tu.{{code}}

Hatua moja, mabadiliko ya kuhifadhi tabia:

FANYA hivi TU: {{uongofu mmoja, k.m. Gawa chaguo hili la kukokotoa katika vitendakazi 3 vidogo vilivyopewa jina}}. BADILISHA tabia inayoonekana, saini na maadili ya kurejesha. Andika kwa sentensi 1 kwa nini kila kitu ulichobadilisha kinahifadhi tabia.{{code}}

Wavu ya usalama kabla ya kirekebisha tena (jaribio la tabia):

Andika vipimo vinavyonasa tabia ya CURRENT ya chaguo hili la kukokotoa (sahihi au la); lengo ni kukamata ikiwa tabia itabadilika wakati wa kurekebisha tena. Jumuisha maingizo + ya kawaida ya kawaida. Andika matarajio kulingana na matokeo ya sasa ya chaguo za kukokotoa.{{function}}

Uzalishaji wa rekodi ya deni la kiufundi (backlog):

Mimina orodha ifuatayo ya harufu kwenye jedwali la vipaumbele: dutu, eneo lililoathiriwa, mzunguko wa mabadiliko (maarifa yangu: {{...}}), hatari, makadirio ya juhudi, kipaumbele kilichopendekezwa. Weka athari za juu + zile za juhudi kidogo juu. {{orodha_ya_harufu}}

Agizo dhaifu / Ukumbusho thabiti

Dhaifu: "Safisha msimbo huu na uifanye bora zaidi."
Nguvu: "Gawanya chaguo hili la kukokotoa la mistari 90 katika vitendakazi 3 vidogo na jukumu moja, bila kubadilisha tabia na saini yake ya nje. Weka madhara (DB inaandika) katika mpangilio wa sasa. Nina vipimo, tabia inapaswa kubaki sawa. Toa tofauti na ueleze kwa sentensi moja kwa nini kila mgawanyiko ni kuhifadhi tabia. [code] "

Toleo la nguvu; Inahitaji mageuzi moja mahususi, inaweka kikwazo cha tabia na sahihi, na inadai uhalali. Maombi yasiyoeleweka kama vile "fanya vyema" husababisha mabadiliko yasiyodhibitiwa na hatari.

Aina ya kurekebisha tena

Kuegemea kwa AI

Sharti

badilisha jina

juu

Je, upeo ni sahihi?

Mgawanyiko wa kazi

kati-juu

Testnet ni lazima

Kushiriki marudio

kati

Tofauti ya tabia inaweza kufichwa

Mabadiliko ya algorithm / muundo

chini

Upimaji wa kina + uthibitisho wa kibinadamu

Upangaji upya wa usanifu

chini

Inaongozwa na binadamu, inaungwa mkono na AI

Kusimamia Deni la Kiufundi, Sio Kuiweka upya

Deni la kiufundi sio mbaya kabisa; Wakati mwingine kukopa kwa uangalifu (kukutana na utoaji) ni uamuzi sahihi. Lengo sio kuondoa deni, lakini kuifanya ionekane na iweze kudhibitiwa. AI ina haraka katika kugundua na kuweka deni kipaumbele, lakini kuamua "deni gani linapaswa kulipwa na lipi linapaswa kutelekezwa" kunahitaji muktadha wa biashara: ni mara ngapi moduli hii inabadilika, inaathiri watu wangapi, ni hatari gani? Uamuzi huu unafanywa na timu inayojua msingi wa kanuni na bidhaa; AI inafafanua chaguzi tu.

Kidokezo: Weka PR yako ya kuonyesha upya tofauti na PR zinazohusisha mabadiliko ya tabia. Kuwa na uwezo wa kusema "PR hii ni refactoring tu, tabia ni sawa" hurahisisha uchunguzi na hukuruhusu kupunguza haraka sababu ikiwa shida itatokea.

Makosa ya kawaida

  • Refactoring bila testnet. Umesalia bila chochote kuthibitisha kuwa tabia imehifadhiwa.
  • Inamaanisha "futa faili nzima". Mabadiliko makubwa, yasiyodhibitiwa huficha kosa na haiwezi kuchunguzwa.
  • Kukubali Diff bila kuisoma. AI inaweza kuwa imeteleza mantiki iliposema "muundo tu".
  • Kuchanganya urekebishaji na mabadiliko ya tabia. Kufanya zote mbili katika PR sawa hufanya ufuatiliaji wa sababu za mizizi usiwezekane.
  • Kujaribu kurekebisha kila harufu. Nambari mbovu ambayo mara chache hubadilika huwa haipewi kipaumbele; Tenga nishati mahali panapobadilika mara kwa mara.

Kwa muhtasari

Utawala pekee wa kurekebisha tena ni kwamba tabia inabaki mara kwa mara, na uthibitisho wa hii ni vipimo. AI ina nguvu katika kugundua harufu za msimbo, mabadiliko ya hatua moja, na kutanguliza deni la kiufundi; lakini lazima usanidi wavu wa usalama, endesha vipimo na usome tofauti baada ya kila hatua. Chukua hatua ndogo, zinazoweza kugeuzwa; kutofautisha refactoring kutoka mabadiliko ya tabia; na kuruhusu timu inayojua muktadha wa biashara iamue deni gani la kulipa.

Jukumu la maombi

Chagua chaguo la kukokotoa kutoka kwa msingi wa msimbo wako ambalo linaonekana kuwa refu au ngumu kwako. Chapisha majaribio ya kwanza ambayo yananasa tabia yake ya sasa kwa kiolezo cha "safety net" na uone kama yote yatafaulu. Kisha fanya kazi ibadilishwe kwa njia moja (k.m. kugawanyika katikati) na muundo wa "hatua moja, kuhifadhi tabia" na ufanye majaribio tena. Ikiwa mtihani utavunjika, tafuta kwa nini; Ikiwa haitavunjika kabisa, soma mstari tofauti kwa mstari ili kuthibitisha kuwa tabia hiyo imehifadhiwa.

orodha ya ukaguzi

  • [ ] Ninajua kuwa urekebishaji upya haufai kubadili tabia na kuna majaribio ya kuthibitisha hilo.
  • [ ] Ninaweka wavu wa usalama ambao unashika tabia ya sasa kabla ya kirekebishaji.
  • [ ] Ninataka mabadiliko madogo, ya hatua moja kutoka kwa AI, sio mabadiliko makubwa ya mara moja.
  • [ ] Baada ya kila hatua mimi huendesha vipimo na kusoma tofauti.
  • [ ] Ninaendelea kurekebisha PR tofauti na mabadiliko ya tabia PR.
  • [ ] Ninatanguliza deni la kiufundi kulingana na muktadha wa biashara, si kujaribu kwa upofu sifuri.