logo

7 koda pārstrukturēšanas metodes programmatūras inženierijā

Būdams izstrādātājs, kā sākt strādāt pie jauna projekta...??

Vispirms jūs apkopojat dažas pamatprasības un pēc tam, pamatojoties uz prasībām, sākat ieviest funkciju pa vienam. Turpinot darbu ar projektu un uzzinot par to vairāk, jūs turpināt pievienot un mainīt kodu savā kodu bāzē. Vēlāk jūs arī mainīsit kodu, lai novērstu kļūdu un malu gadījumus.



7-koda pārveides tehnika programmatūras inženierijā

Bet kas notiek pēc pāris dienām vai mēnešiem…? Kā izskatās tavs kods...?? Vai tas ir sarežģīti? Vai ir grūti saprast? Ja jā, tad jūs noteikti nepievērsāt uzmanību sava koda uzlabošanai vai koda pārstrukturēšanai. Iespējams, esat uzrakstījis dublikātu kodu, neapskatot esošo kodu, vai arī esat uzrakstījis dažas garākas metodes/funkcijas, lielas klases, pārāk daudz parametru, neintuitīvus mainīgo nosaukumus, koda izvietojumu utt.

Koda uzlabošana vai atjaunināšana, nemainot programmatūras funkcionalitāti vai lietojumprogrammas ārējo darbību, ir pazīstama kā koda pārveidošana. Tas samazina tehniskās izmaksas un padara kodu efektīvāku un uzturējamāku. Ja nepievērsīsit uzmanību koda pārveides procesam agrāk, par kļūdām kodā maksāsit vēlāk. Tāpēc neignorējiet koda tīrīšanu.



Programmatūras izstrādes procesā dažādiem izstrādātājiem ir dažādi koda rakstīšanas stili. Viņi veic izmaiņas, uztur kodu, paplašina kodu un lielāko daļu laika atstāj kodu bez nepārtrauktas pārveidošanas. Nepārstrādāts kods mēdz kods rot: daudz apjukums un juceklis kodā, piemēram, dublēts kods, neveselīga atkarība starp klasēm vai pakotnēm, slikta klases pienākumu sadale, pārāk daudz pienākumu katrai metodei vai klasei utt. Lai izvairītos no visām šīm problēmām, ir svarīga nepārtraukta pārstrukturēšana.

Tagad jautājums ir… kādas ir koda pārstrukturēšanas metodes?

Mēs apspriedīsim dažus populārus un izplatītus paņēmienus koda pārveidošanai, bet pirms tam apspriedīsim dažus ātrus padomus…



Padomi:

  • Jums jāveic koda pārstrukturēšana mazos soļos. Veiciet nelielas izmaiņas programmā, katra no nelielām izmaiņām padara jūsu kodu nedaudz labāku un atstāj lietojumprogrammu darba stāvoklī.
  • Pēc nelielu izmaiņu veikšanas pārstrukturēšanas procesā palaidiet testa TDD un CI. Neveicot šos testus, jūs riskējat ieviest kļūdas.
  • Neveidojiet jaunas funkcijas vai funkcionalitāti pārveidošanas procesa laikā. Pirms jebkādu atjauninājumu vai jaunu funkciju pievienošanas esošajam kodam ir jāpārveido kods.
  • Pārveidošanas process var ietekmēt testēšanas rezultātus, tāpēc ir lietderīgi atkārtotas apstrādes procesā iesaistīt savu QA un testēšanas komandu.
  • Jums jāpiekrīt, ka nebūsit pilnībā apmierināts ar savu kodu. Jūsu pārveidotais kods tuvākajā laikā būs novecojis, un jums tas būs jāpārveido vēlreiz.

Visizplatītākās kodu atjaunošanas metodes

Ir daudzas pieejas un metodes koda pārstrukturēšanai. Apspriedīsim dažus populārus…

1. Sarkanzaļa pārveidošana

Red-Green ir vispopulārākā un visplašāk izmantotā koda pārveides tehnika Agile programmatūras izstrādes procesā. Šajā paņēmienā tiek ievērota pirmā testa pieeja projektēšanā un ieviešanā, tādējādi tiek likts pamats visu veidu pārstrukturēšanai. Izstrādātāji uzņemas iniciatīvu pārstrukturēšanai testu vadītā izstrādes ciklā, un tas tiek veikts trīs rajona posmos.

Sarkans-zaļš-Refaktorings

  • SARKANS: Pirmais solis sākas ar nesekmīga sarkanā testa rakstīšanu. Jūs apstājaties un pārbaudāt, kas ir jāattīsta.
  • Zaļš: Otrajā darbībā jūs ierakstāt pietiekami vienkāršāko kodu un iegūstat izstrādes caurlaides zaļo testēšanu.
  • Refaktors: Pēdējā un trešajā darbībā jūs koncentrējaties uz sava koda uzlabošanu un uzlabošanu, lai jūsu pārbaude būtu zaļa.

Tātad būtībā šai tehnikai ir divas atšķirīgas daļas: pirmā daļa ietver koda rakstīšanu, kas jūsu sistēmai pievieno jaunu funkciju, bet otrā daļa ir saistīta ar koda, kas veic šo funkciju, pārveidošanu. Ņemiet vērā, ka darbplūsmas laikā jums nevajadzētu darīt abus vienlaikus.

2. Refaktorēšana ar abstrakciju

Šo paņēmienu galvenokārt izmanto izstrādātāji, ja ir nepieciešams veikt lielu refaktoringa apjomu. Galvenokārt mēs izmantojam šo paņēmienu, lai samazinātu dublēšanos (dublēšanos) mūsu kodā. Tas ietver klašu pārmantošanu, hierarhiju, jaunu klašu un saskarņu izveidi, ieguvi, mantojuma aizstāšanu ar deleģēšanu un otrādi.

Refaktorings-by-abstrakcija

Vilkšana uz augšu/uz leju metode ir šīs pieejas labākais piemērs.

  • Pievilkšanās metode: Tas ievelk koda daļas superklasē un palīdz novērst koda dublēšanos.
  • Nospiešanas metode: Tas paņem koda daļu no superklases un pārvieto to apakšklasēs.

Pavelciet uz augšu konstruktora pamattekstu, izņemiet apakšklasi, izņemiet virsklasi, sakļaujiet hierarhiju, veidlapas veidnes metodi, izņemiet interfeisu, aizstājiet mantojumu ar deleģēšanu, aizstājiet deleģēšanu ar Mantojumu, nospiediet uz leju lauku. Šie ir citi piemēri.

Būtībā šajā tehnikā mēs veidojam abstrakcijas slāni tām sistēmas daļām, kuras ir jāpārveido, un līdziniekam, kas galu galā to aizstās. Tālāk ir sniegti divi izplatīti piemēri…

javascript paraugs
  • Iekapsulēts lauks: Mēs piespiežam kodu piekļūt laukam ar getter un setter metodēm.
  • Vispārināt veidu: Mēs veidojam vispārīgākus veidus, lai atļautu koplietot kodu, aizstājam tipa pārbaudes kodu ar stāvokli, aizstājam nosacījumus ar polimorfismu utt.

3. Komponēšanas metode

Lietojumprogrammas izstrādes fāzē daudzas reizes mēs savā programmā ierakstām garas metodes. Šīs garās metodes padara jūsu kodu ārkārtīgi grūti saprotamu un grūti maināmu. Šajos gadījumos pārsvarā tiek izmantota komponēšanas metode.

Šajā pieejā mēs izmantojam racionalizācijas metodes, lai samazinātu koda dublēšanos. Daži piemēri: izvilkšanas metode, mainīgā izvilkšana, iekļauta temp, Temp aizstāšana ar vaicājumu, iekļautā metode, pagaidu mainīgā sadalīšana, parametru piešķiršanas noņemšana utt.

Ekstrakcija: Mēs sadalām kodu mazākos gabalos, lai atrastu un izvilktu sadrumstalotību. Pēc tam mēs izveidojam atsevišķas metodes šiem gabaliem, un pēc tam tas tiek aizstāts ar šīs jaunās metodes izsaukumu. Ekstrakcija ietver klasi, saskarni un vietējos mainīgos.

Rindā: Šī pieeja noņem mūsu programmā nevajadzīgo metožu skaitu. Mēs atrodam visus metožu izsaukumus un pēc tam tos visus aizstājam ar metodes saturu. Pēc tam mēs izdzēšam metodi no mūsu programmas.

masīvs, pievienojot elementus java

4. Vienkāršošanas metodes

Šajā pieejā ir iesaistītas divas metodes… apspriedīsim abas.

  • Nosacīto izteiksmju pārstrukturēšanas vienkāršošana: Nosacījuma paziņojums programmēšanā laika gaitā kļūst loģiskāks un sarežģītāks. Lai saprastu visu programmu, kodā ir jāvienkāršo loģika.
    Ir tik daudz veidu, kā pārveidot kodu un vienkāršot loģiku. Daži no tiem ir: nosacītās izteiksmes konsolidācija un nosacījumu fragmentu dublēšana, nosacījuma sadalīšana, nosacījuma aizstāšana ar polimorfismu, kontroles karoga noņemšana, ligzdoto nosacījumu aizstāšana ar aizsargklauzulām utt.
  • Refaktoringa vienkāršošanas metodes izsaukumi: Izmantojot šo pieeju, mēs metožu izsaukumus padarām vienkāršākus un vieglāk saprotamus. Mēs strādājam pie mijiedarbības starp klasēm un vienkāršojam to saskarnes.
    Piemēri: jaunu parametru pievienošana, noņemšana un ieviešana, parametra aizstāšana ar precīzo metodi un metodes izsaukumu, parametrizēšanas metode, atsevišķa vaicājuma veikšana no modifikatora, visa objekta saglabāšana, iestatīšanas metodes noņemšana utt.

5. Objektu pārvietošana starp objektiem

Izmantojot šo paņēmienu, mēs veidojam jaunas klases un droši pārvietojam funkcionalitāti starp vecajām un jaunajām klasēm. Mēs slēpjam ieviešanas informāciju no publiskas piekļuves.

Tagad jautājums ir… kad pārvietot funkcionalitāti starp klasēm vai kā noteikt, ka ir pienācis laiks pārvietot līdzekļus starp klasēm?

Ja konstatējat, ka klasei ir tik daudz pienākumu un notiek pārāk daudz lietu, vai ja konstatējat, ka klase ir nevajadzīga un lietojumprogrammā neko nedara, varat pārvietot kodu no šīs klases uz citu klasi un to pilnībā izdzēst.

Piemēri: lauka pārvietošana, klases izvilkšana, pārvietošanas metode, iekļautā klase, delegāta paslēpšana, svešas metodes ieviešana, starpnieka noņemšana, vietējā paplašinājuma ieviešana utt.

6. Sagatavošanas pārstrukturēšana

Šo pieeju vislabāk izmantot, ja pamanāt vajadzību pēc pārveidošanas, vienlaikus pievienojot lietojumprogrammai dažas jaunas funkcijas. Tātad būtībā tā ir daļa no programmatūras atjauninājuma ar atsevišķu pārveidošanas procesu. Ja pamanāt, ka kods ir jāatjaunina funkciju izstrādes iepriekšējos posmos, jūs ietaupīsit sevi no turpmākiem tehniskajiem parādiem.

Galalietotājs nevar redzēt šādus inženieru komandas centienus aci pret aci, taču izstrādātāji, kas strādā pie lietojumprogrammas, lietojumprogrammas izveides laikā atradīs koda pārstrukturēšanas vērtību. Viņi var ietaupīt savu laiku, naudu un citus resursus, ja viņi vienkārši pavada kādu laiku, atjauninot kodu agrāk.

Tas ir tā, it kā es gribētu iet 100 jūdzes uz austrumiem, bet tā vietā, lai vienkārši staigātu pa mežu, es braukšu 20 jūdzes uz ziemeļiem līdz lielceļam un tad es došos 100 jūdzes uz austrumiem ar trīsreiz lielāku ātrumu, kāds man būtu, ja Es devos tieši tur. Kad cilvēki mudina jūs doties tieši tur, dažreiz jums ir jāsaka: 'Pagaidiet, man ir jāpārbauda karte un jāatrod ātrākais maršruts.' Manā vietā to dara sagatavošanās pārstrukturēšana.

Džesika Kera (Programmatūras izstrādātājs)

Sagatavošana-Refaktorings

7. Lietotāja interfeisa pārveidošana

Varat veikt vienkāršas izmaiņas lietotāja saskarnē un pārveidot kodu. Piemēram: izlīdziniet ievades lauku, lietojiet fontu, pārfrāzējiet aktīvā balsī, norādiet formātu, izmantojiet parasto pogas izmēru un palieliniet krāsu kontrastu utt.

Nobeiguma vārdi

Koda pārveides process ir jāuzskata par sakārtotas mājas sakopšanu. Nevajadzīga nekārtība mājās var radīt haotisku un stresa pilnu vidi. Tas pats attiecas uz rakstīto kodu. Tīrs un labi sakārtots kods vienmēr ir viegli maināms, viegli saprotams un viegli uzturējams. Ja iepriekš pievērsīsit uzmanību koda pārveides procesam, vēlāk jums nebūs grūtības.

Divi no ietekmīgākajiem programmatūras izstrādātājiem Mārtiņš Faulers un Kents Beks ir veltījuši savu laiku, lai izskaidrotu koda pārveides procesu un tā metodes. Viņi ir arī uzrakstījuši pilnīgu grāmatu par šo tēmu Refaktorings: esošā koda dizaina uzlabošana . Šajā grāmatā ir aprakstītas dažādas pārstrukturēšanas metodes ar skaidru skaidrojumu, kā strādāt pie šiem refaktorēšanas procesiem. Mēs iesakām izlasīt šo grāmatu, ja vēlaties padziļināti izmantot koda pārveides procesu.