Refactoring: kód, načasovanie, aplikácia

Refactoring je akýmsi reorganizáciou. Z technického hľadiska vychádza z matematiky, keď je vyjadrená ekvivalencia výrazu - faktory sú čistejšie spôsoby, ako vyjadriť to isté vyhlásenie. Refactoring kód znamená ekvivalenciu, počiatočné a konečné produkty musia byť funkčne identické. V praxi urobí kód jasnejším a čistším, jednoduchším a elegantným. Príkladom je rozsah od premenovania premennej na vstup metódy do triedy tretej strany, pre ktorú vývojár nemá žiadne práva.

Analýza a refaktorovanie na vytvorenie čistého kódu

Jednoducho to znamená zlepšenie konštrukcie existujúceho kódu bez zmeny jeho pozorovateľného správania. Pôvodne koncipovaný v komunite Smalltalk, stal sa hlavnou technológiou vývoja. Hoci refaktorové nástroje umožňujú veľmi jednoduché použitie. Je dôležité, aby vývojár pochopil, čo robí, a prečo mu pomôže napríklad v situácii, keď je potrebné umožniť opätovné použitie opakujúceho sa bloku kódu.


Každé refaktorovanie je jednoduchý proces, ktorý robí jednu logickú zmenu v štruktúre kódu. Ak zmeníte veľké množstvo kódov naraz, je možné, že boli zadané chyby. Ale kedy a kde sa robili chyby, je ťažké povedať. Ak sa zmeny vykonajú v malých krokoch s kontrolami vykonanými po každom kroku, pravdepodobne nastane chyba v testovacom procese hneď po zadaní kódu do systému. predvádzanierefactoring kódu by mohli byť testované tento krok, a po zrušení stupňa, mohlo by to byť rozdelené do ešte menších krokoch pre detekciu porúch. Táto výhoda komplexné testy jednotky v systéme, bezpečný spôsob extrémneho programovania. Dávajú vývojárom a riadenie presvedčenie, že refactoring neporušil systém, kód bude správať rovnako ako predtým.


Prevádzka zlepšiť kód sa vyskytuje približne v nasledujúcich etapách:

Akčné



Problémy, ktoré je potrebné nastaviť, akcie



Identifikácia problémov



To je problém? Aký je problém?



Špecifické problémy



Prečo by sa niečo zmeniť? Aké sú výhody? Sú nejaké riziká?



rozhodovanie



Aká by mala byť "cieľový stav" kód? Aký druh konverzie kódu transformuje kód do požadovaného stavu?



Zmena kódu



Kroky vystúpi refactoring kódu.

Obvykle sa vykonáva v malých krokoch. Po každom takomto kroku developer je zvyčajne pracovný systém, ktorý je funkčne bez zmeny. Praktici alternujú opravy chýb a dopĺňajú kód medzi týmito krokmi. Tak, refactoring nevylučuje možnosť zmeny funkčnosti, to jednoducho hovorí, že táto iná činnosť súvisiacu s pereuporyadochyvanyem kód.

kontinuálny proces riadenia kvality

V ideálnom prípade sa refaktoring je súčasťou neustále zlepšovanie kvality. Inými slovami, bude ľahké prelínať sa s ostatnýmikaždodenné akcie každého vývojára softvéru.
Vytvorenie čistého kódu s analýzou a refaktorom je užitočné v prípade výskytu chyby a problém musí byť opravený alebo musí byť kód rozšírený. Proces súčasnej obsluhy alebo pridávania nových funkcií tiež umožňuje vedúcim pracovníkom a vývojárom väčšiu pravdepodobnosť vyriešenia problému, pretože to nebude vyžadovať ďalšiu fázu testovania.
Ak pre vývojára, ktorý je zodpovedný, je ťažké pochopiť kód, položí otázky a začne dokumentovať nejasnú časť, ktorá bude dobrým východiskovým bodom pre uplatňovanie nových metód. Často načasovanie zúčtovacej operácie neumožňuje okamžite urobiť dobré rozhodnutie. Je možné, že funkcia bola pridaná v spěchu, a nie bug fixovaný. V takýchto prípadoch by mal byť príslušný kód označený poznámkou FIXME, aby ho bolo možné prepracovať, ak je povolený čas. Takéto okolnosti si vyžadujú refaktorovanie s cieľom zlepšiť existujúci kód nie pre jednotlivé prvky, ale pre celý projekt. Keď príde čas na vyriešenie nahromadených problémov, skenujte FIXME a TODO. Na základe kódexu budú všetky problémy na preskúmanie. Potom ich možno reorganizovať do zodpovedajúcej priority. Refactoring je dobrá vec, pretože zložité výrazy sú zvyčajne vytvorené z jednoduchších a ťažkopádnych komponentov. Poskytuje jednoduchšie komponenty alebo ich znižuje na efektívnejšie komplexné výrazy v závislosti od toho, ako programátor bude konať. Napríklad efektívnosť refaktorovania existujúceho kódupočet členov a operátorov: (x - 1) * (x + 1) = x 2 - 1. Štyri termíny verzus tri. Traja operátori proti dvom. Výraz na ľavej strane je však ľahšie pochopiteľný, pretože používa jednoduchšie operácie. Okrem toho poskytuje viac informácií o štruktúre funkcie f (x) = x 2 - 1, pretože korene +/- 1, ktoré by bolo ťažké určiť, jednoducho "hľadá" na pravej strane.

Oblasti činnosti

Softvér na refaktorovanie na zlepšenie existujúceho kódu je v sieti malý, ale väčšina z nich je dobre navrhnutá. Časom sa zvyšuje veľkosť vlastného softvéru a jeho zložitosť, pričom sa zvyšujú chyby a následne sa znižuje spoľahlivosť kódu. Vývojári softvéru, najmä ak nie sú pôvodnými autormi, sú čoraz ťažšie udržiavať a rozširovať kód. Základňa kódov, ktorá by mala byť v každej softvérovej spoločnosti cenným majetkom, môže byť v určitom momente preťažená. Tieto negatívne procesy môžu spôsobiť predčasné starnutie softvéru, ako je vysvetlené v práci Martina Fowlera "Refactoring: Zlepšenie existujúceho kódu".
Strategicky dôležitá je pozornosť manažérov softvéru a vývojárov. Z praktického hľadiska bude aplikácia vývojových metód spomaľovať toto starnutie. Refactoring môže odstrániť toto starnutie správnou aplikáciou, najlepšie pomocou dobrých softvérových nástrojov, ktoré pomáhajú identifikovať, analyzovať a opisovať problémy a napokon im umožniť, aby boli opravené.

Často kopírujte komponentpoužíva vývojár ako prijateľnejšia metóda, pretože je preň menej mätúce. Prinajmenšom Fowler verí v refaktorovanie, aby zlepšil existujúci kód. Aktuálny zdrojový kód sa môže časom meniť z pôvodného dizajnu a vývojár nemusí byť okamžite zrozumiteľný. Avšak ignoruje skutočnosť, že zdrojový kód má veľa skrytých významov. Oprava chýb nájdených vo zdrojovom kóde nemôže byť zdokumentovaná, ale sú veľmi cenné. Refactoring zachováva túto skrytú hodnotu, čím sa zabezpečí, že sa správanie systému nezmení.

Proces premenovania metódy

Tento príklad sa týka premennej, triedy alebo iného elementu java, ktorý má zavádzajúce meno a potrebuje vedieť, ako refakčiť tento kód. To vyžaduje všetky odkazy a prípadne aktualizácie súborov. Proces môže zahŕňať premenovanie metódy v podtriedach. Na druhej strane, premenovanie balíka bude zahŕňať aj presúvanie súborov a adresárov a aktualizáciu systému správy verzií.
Korekčné metódy:
  • Presun triedy. Trieda je v nesprávnom balíku, preto by mala byť presunutá do iného balíka, kde je najvhodnejší.
  • Výňatok. Dlhá metóda sa musí rozdeliť na jednotlivé etapy, aby sa zlepšila čitateľnosť a pohodlie služby. Časť kódu s jednou logickou úlohou sa nahradí volaním na novú metódu.
  • Extrakcia nadtriedy. Existujúca trieda poskytuje funkcie, ktoré je potrebné nejakým spôsobom upraviť. Abstraktná trieda je predstavená ako rodič súčasnej triedypotom sa všeobecné správanie "sprísni" tomuto novému otcovi.
  • Nahradenie podmienenej hodnoty polymorfizmu. Metódy triedy môžu skontrolovať určitú hodnotu (ak je operátorom prepínač), aby ste určili správnu akciu na vykonanie.
  • Výhody metódy

    Vykonanie viacerých refaktorských operácií pred alebo počas ladenia kódu má určité výhody. Umiestnenie chyby je často jednoduchšie určiť. Preto je zachovaný čas strávený prácou na kódovaní a zlepšením jeho kvality. Dobre štruktúrovaný kód je tiež menej náchylný na chyby, pokiaľ ide o jeho rozšírenie. Odborníci tvrdia, že aplikácia metódy pridáva k výhodám akéhokoľvek programu, ktorý má aspoň jedno z nasledujúcich nevýhod:
  • Programy, ktoré sú ťažko čitateľné a ťažko sa menia.
  • Dvojité logické aplikácie.
  • Programy vyžadujúce dodatočné správanie vyžadujúce zmenu kódu.
  • Programy so zložitou podmienenou logikou, ktoré sa ťažko upravujú.
  • V súhrne možno tvrdiť, že skutočné prínosy zvyčajne pochádzajú z dlhodobého hľadiska, napríklad pri refoktoroch vylepšení existujúceho pdf kódu. Skladajú sa z podstatne obmedzeného časového obdobia, ktoré vývojári vynakladajú na ladenie a údržbu na zlepšenie spoľahlivosti kódu. Okrem toho sa znižuje duplicita kódu a stimuluje sa opätovné použitie kódu. Celkové náklady na údržbu a vývoj by sa mali znížiť a rýchlosť tímu reagovať na meniace sa potreby - zvýšiť.

    Nedostatok korekcie FOR

    Ak je tam je tak veľa výhod dobre štruktúrovaný, jasný kód, a ak refactoring kódu softvér je chaotická a zle štruktúrované, náchylné k chybám kód k premyslené, potom vyvstáva otázka, prečo nie všetci vývojári softvéru ? V praxi sa vývojári viac zdráhajú vykonávať zlepšenia, pretože niektoré refaktoringy sú práve unavené. Najmä vtedy, keď to nie je zjavný vonkajší prínos. Môže to byť aj obvinenie z riadenia projektu. Keď príručka podporuje len zvonka viditeľné vlastnosti kódu, napríklad funkčnosť a výkon, ale nevenuje pozornosť internej kvalite kódu. Okrem toho existuje vážne riziko prerušenia kódov prostredníctvom refaktorov. A ak sa napríklad menia názvy súborov, môže byť problémom sledovateľnosť zmien. Aj keď sa vývojár softvéru pokúsi reorganizovať niektorý zle štruktúrovaný kód. Manažér môže mať úplne iný pohľad na výkon CA a môže sa postaviť proti každému pokusu o zmenu pracovného kódu. Tieto problémy nemožno jednoducho ignorovať, musia ich správne zohľadniť vývojári aj manažment.

    Automatizácia procesu

    Pri vykonávaní refaktorovania by sa malo zaručiť, že vonkajšie správanie sa nezmení. Ak sa spúšťa ručne, často je potrebné znovu vytvoriť systém a spustiť testy. Ručná metóda je preto skutočne praktická len s ohľadom na tonasledujúce podmienky:
  • Systém, z ktorého je reorganizovaný kód súčasťou, sa môže rýchlo obnoviť.
  • Existujú automatické testy "regresie", ktoré sa dajú bežať často.
  • Táto situácia nie je veľmi častá a znamená, že refaktorské programy sú obmedzené. Stáva sa to viac rozšírené, najmä keď stále viac ľudí používa metódy XP (Extreme Programming). Ďalšou prekážkou tejto metódy je, že mnohé z týchto refaktorov sú nudné. Ešte dôležitejšie je presvedčenie, že boli vykonané správne zmeny. Preto pri vykonávaní zlepšenia odporúčame používať automatizované nástroje. Rýchlosť ich práce má ešte jednu výhodu, ktorá sa prejavuje v prostredí vývoja tímu. Vývojár vykonáva refaktorské operácie oveľa menej často, ak použitý zdrojový kód vlastní aj ďalší vývojári. Integrácia s vývojármi, ktorí si zvolili IDE, prináša aj mnohé výhody. Po prvé, prítomnosť nástrojov v ruke znamená, že vývojári môžu ľahko reorganizovať. Nepotrebujú prepínať medzi režimami vývoja a refaktoringu a namiesto toho ho vidia ako súčasť svojho normálneho vývojového cyklu. Po druhé, funkcie IDE, ako napríklad integrácia riadenia verzií, môžu znížiť úsilie metódy, napríklad presunutie triedy alebo premenovanie balíka.

    Analýza kódu Visual Studio 2017

    Predčasná optimalizácia môže byť koreňom všetkého zla, ale aplikačné nástroje poskytujú prehľadnosť, čistotu a bezpečnosť kódu. Testovanie programu pred odoslaním je dôležitou súčasťou vývojového procesu. Práve tu nadobudla platnosťNástroje a techniky analýza kódu a profilovanie - môžu vyhodnotiť kód chyby, úzkych a efektívneho využívania zdrojov spracovania a pamäte. Súčasné nástroje kódové profilovanie môže ukazovať priamo na presné riadku kódu vyžaduje refaktorování alebo knižníc a iných závislostí, sú slabé miesta v architektúre aplikácie.
    Pred Visual Studio 2012, väčšina z týchto typov analýzy a testovanie kódu nástrojov nutná tretích strán a manuálnych úloh montáž, skúšanie, analýzy prehrávanie developera. V súčasnosti má Visual Studio pomerne silné nástroje na analýzu. Okrem toho sú tu výborné nástroje, ktoré pomáhajú developer ponoriť sa do testovania aplikácií výkonnosti a optimalizáciu, šablón projektov, ktoré sú účinné závislosť a vložené testovacieho prostredia a robustné nástroje pre automatizované testovanie integrácie a analýzy workflow zhromažďovania a prepustenie.

    Nástroje pre ladenie produktivitu

    komplexnú sadu integrovaných nástrojov pre refaktorování projekt na zlepšenie existujúcej kód bol pôvodne zoskupené výkon koncentrátora a diagnostiku vo Visual Studiu 2013, ktorá sa ďalej zdokonalila a rozšírená box Siete Výkon a diagnostika "a" Naskenované nástroje "v "visual štúdio" 2015 s Visual studio 2017 nástrojov, ako sú integrované vývojové prostredie, ktoré nie sú o nič viac bizarné mená, a napriek tomu aj naďalej vyvíjať. Program je vybavený skvelou dokumentáciou a vedením odDokumenty Microsoft, počnúc "Začíname s nástrojmi produktivity" a "Sprievodca pre začiatočníkov výkon profilovanie v Visual Studio.
    Tu nájdete informácie o zhromažďovaní a profilovanie dát pri spôsobe vykonania nielen pre tradičné aplikácie .NET Framework a ASP.NET javascript pre produkty a webové stránky, High Performance Computing (HPC) a záťažové testovanie. Ďalším nástrojom, ktorý využívajú vývojári, je kód RefV pre program PerfView pre analýzu výkonnosti. Morrison je vedúci architekt spoločnosti Microsoft a napísal PerfView pre interné analýzy výkonu a konfiguračných príkazov, ktoré vytvárajú rozhranie .NET Framework a Visual Studio. Teraz je to open source nástroj, ktorý je stále v aktívnom vývoji.

    Ďalšie mechanizmy pre profilovanie a ladenie

    Okrem dostupných nástrojov od spoločnosti Microsoft, používať nástroje tretích strán, ktorých cieľom je uspokojiť potreby jemného doladenia:
  • Jains dotTrace Profiler pomáha udržať prehľad o zbere runtime upratovanie, distribúcia výkonu záťaže O. Na skúšobné kroky je k dispozícii 10-dňová skúška.
  • Redgate Mravce Performance Profiler - ďalší obľúbený nástroj pre projekty založené na rozhraní .NET Framework poskytuje rovnakú analýzu synchronizačný kód, ako aj ďalšie nástroje, ale aj prehlbuje výkon databázových dotazov s podporou pre pokročilú prístup profilovanie dát podpora pre Oracle, MySQL, PostgreSQL.
  • DevExpress CodeRush je ďalšíAnalytický a refactoringový nástroj pre databázy C #, Visual Basic a XAML. Analytické nástroje CodeRush pracujú nielen so základnými riešeniami, ale majú zabudovanú integrovanú integráciu testov podporujúcu rámec NUnit, xUnit, MSpec a MSTest, rovnako ako testovacie prípady CoreCLR v prostredí DNX.
  • Microsoft Code Analysis 2017 poskytuje vstavaný prístup k viac ako 100 najpopulárnejším pravidlám FxCop ako živé analyzátory. Analyzátor pri zadávaní textu pozerá na kód C # alebo Visual Basic a poskytuje tipy na výkon, bezpečnosť a osvedčené postupy, ako aj prístup k rýchlemu kódu opravy kódu.
  • Microsoft DevSkim je zložitejšia a flexibilnejšia štruktúra kódových modulov a analyzátorov, ktoré sa pri zadávaní zameriavajú na analýzu bezpečnostných kódov. Potenciálne problémy so zabezpečením sú zvýraznené v kóde odkazu pre ďalšie informácie jedným kliknutím na bezpečný alternatívny kód.
  • Načasovanie

    Použitie automatizovaných refaktorových nástrojov spôsobuje, že vývojár bude častejšie dokončiť potrebné kroky a zníži pravdepodobnosť chýb. Ale nie menej dôležité je výber podmienok na jej vykonanie. Plánované refaktorovanie zlepšuje výkonnosť kódu tým, že eliminuje duplicitu. Kľúčovým bodom je čo najskôr opraviť, ako sa stane problémom. V tomto prípade sa používa kontinuálne refaktorovanie, čo je veľmi dôležité pre nepretržité dodávanie kódu.
    V najlepšom prípade vývojári často prechádza medzi všetkými typmi refaktoringu, ktoré sú uvedené vyššie. V tomto prípade nezáleží na názve typu, aleJe dôležité, aby bol spustený. Ak napríklad čítate kód, vývojár chápe, že triedy alebo metódy sa dajú robiť lepšie, musíte to okamžite bez meškania použiť pomocou bežných metód na extrakciu hlavných zlyhaní alebo premenovanie metód na lepšie čítanie. Táto platforma Martin Fowler v pracovných postupoch pomáha používateľom lepšie poznať, plánovať a vykonávať zlepšenia. To je dôvod, prečo každý programátor potrebuje nielen vedieť, čo je refaktorovanie kódu, ale aj to, kedy ho správne vykonať.

    Súvisiace publikácie