Refactoring: kód, časování, aplikace

Refactoring je druh reorganizace. Z technického hlediska vychází z matematiky, když je vyjádřena rovnocennost výrazu - faktory jsou čistšími způsoby, jak vyjádřit toto tvrzení. Refactoring kód znamená ekvivalenci, počáteční a konečné produkty musí být funkčně totožné. V praxi dělá kód jasnější a čistější, jednoduchý a elegantní. Příkladem je rozsah od přejmenování proměnné na položku metody do třídy třetí strany, pro kterou vývojář nemá žádná práva.

Analýza a refaktorování pro vytvoření čistého kódu.

Jednoduše znamená zlepšit návrh existujícího kódu bez změny jeho pozorovatelného chování. Původně koncipován v komunitě Smalltalk, stal se hlavní technologií vývoje. Přestože refaktorové nástroje umožňují velmi snadné použití. Je důležité, aby si developer porozuměl, co dělá, a proč pomůže, například, v situaci, kdy je třeba povolit opětovné použití opakujícího se bloku kódu.


Každé refaktorování je jednoduchý proces, který dělá jednu logickou změnu ve struktuře kódu. Pokud změníte velký počet kódů najednou, je možné, že byly zadány chyby. Ale kdy a kde byly chyby učiněny, je těžké říci. Pokud jsou změny prováděny v malých krocích s kontrolami provedenými po každém kroku, pravděpodobně nastane chyba v testovacím běhu, jakmile je kód zadán do systému. DělatRefactoring kód, bylo by možné tento krok zkontrolovat a poté, co byl krok zrušen, mohl by být rozdělen do ještě malých kroků k identifikaci poruch. Jedná se o výhodu komplexních modulárních testů v systému chráněných extrémním programováním. Dávají vývojářům a manažerům jistotu, že refaktorování systém neporušil, kód se bude chovat stejným způsobem jako předtím.

Akce



Otázky k žádostem



Identifikace problému



Existuje nějaký problém? Jaký je problém?



Charakteristika problémů



Proč potřebuji něco změnit? Jaké jsou výhody? Existují nějaká rizika?



Rozvojová řešení



Jaký by měl být "cílový stav" kódu? Jaký typ konverze kódu přemění kód na požadovaný stav?



Změnit kód



Kroky, které budou refactor kód.

Obvykle se provádí v malých krocích. Po každém takovém kroku zůstává vývojář obvykle v pracovním systému, který programově nefunguje. Praktici střídají opravy chyb a doplňují kód mezi těmito kroky. Takže refaktorování nevylučuje možnost změny funkce, ale jednoduše říká, že jde o další aktivitu spojenou s opětovným uspořádáním kódu.

Průběžný proces řízení kvality

V ideálním případě bude refaktorování součástí neustálého procesu zlepšování kvality. Jinými slovy, bude snadné se prolínat s ostatnímikaždodenní akce každého vývojáře softwaru.
Vytvoření čistého kódu s analýzou a refaktorováním je užitečné v případě, že dojde k chybě a problém musí být opraven, nebo musí být kód rozšířen. Proces současného servisu nebo přidávání nových funkcí také umožňuje vedoucím pracovníkům a vývojářům vyřešit problém, protože to nebude vyžadovat další fázi testování.
Pokud pro vývojáře, který je zodpovědný, je obtížné pochopit kód, bude klást otázky a začne dokumentovat nejasnou část, která bude dobrým výchozím bodem pro uplatnění nových metod. Často načasování zúčtovací operace vám neumožňuje okamžitě přijmout dobré rozhodnutí. Je možné, že funkce byla přidána ve spěchu a nefixovaná chyba. V takových případech by měl být příslušný kód označen poznámkou FIXME, aby mohla být přepracována, pokud je čas povolen. Takové okolnosti vyžadují, aby refaktorování zlepšilo stávající kód, nikoliv pro jednotlivé prvky, ale pro celý projekt. Když nastane čas na vyřešení nahromaděných problémů, skenujte FIXME a TODO. Nad základem kódu budou všechny problémy pro kontrolu. Pak mohou být reorganizovány do odpovídající priority. Refactoring je dobrá věc, protože složité výrazy jsou obvykle stavěny z jednodušších a těžších komponent. Poskytuje jednodušší komponenty nebo je snižuje na efektivnější složité výrazy, v závislosti na tom, jak programátor jedná. Například efektivita refaktorování existujícího kódupočet členů a operátory: (x - 1) * (x + 1) = x 2 - 1. Čtyři termíny versus tři. Tři operátoři proti dvěma. Nicméně výraz na levé straně je jednodušší, protože používá jednodušší operace. Kromě toho poskytuje více informací o struktuře funkce f (x) = x 2 - 1, protože kořeny +/- 1, které by bylo obtížné určit, jednoduše "hledí" na pravé straně.

Oblasti působení

Refactoringový software pro zlepšení stávajícího kódu je v síti malý, ale hodně z něj je dobře navržen. Časem se rozšiřuje velikost vlastního softwaru a jeho složitost, přičemž se zvyšují chyby a v důsledku toho se spolehlivost kódu snižuje. Vývojáři softwaru, zvláště když nejsou původními autory, jsou stále obtížnější udržovat a rozšiřovat kód. Kódová základna, která by měla být v jakékoli softwarové společnosti cenným přínosem, může být v určitém okamžiku přetížena. Tyto negativní procesy mohou způsobit předčasné stárnutí softwaru, jak je vysvětlil v práci Martina Fowlera "Refactoring: Zlepšení stávajícího kódu".
Strategicky důležitá je pozornost softwarových manažerů a vývojářů. Z praktického hlediska bude zpomalení tohoto stárnutí aplikací vývojových metod. Refactoring může eliminovat toto stárnutí správnou aplikací, nejlépe pomocí dobrých softwarových nástrojů, které pomáhají identifikovat, analyzovat a popisovat problémy a nakonec umožňují jejich fixaci.

Zkopírujte součást častoje používán vývojářem jako přijatelnější metoda, protože je pro něj méně matoucí. Přinejmenším Fowler věří v refaktorování ke zlepšení stávajícího kódu. Současný zdrojový kód se může časem měnit od původního návrhu a vývojář nemusí být okamžitě srozuměn. Nicméně ignoruje skutečnost, že zdrojový kód má mnoho skrytých významů. Opravy chyb nalezených ve zdrojovém kódu nelze zdokumentovat, ale jsou velmi cenné. Refactoring zachovává tuto skrytou hodnotu a zajišťuje, že se chování systému nezmění.

Proces přejmenování metodu

Tento příklad se vztahuje na proměnné členskou třídu Javy, která má název, který je zavádějící, a měl by vědět, jak to udělat refactoring kódu. To vyžaduje všechny odkazy a možná aktualizace souborů. Proces může zahrnovat přejmenování metody do podtříd. Na druhé straně přejmenování balíčku bude také zahrnovat přesouvání souborů a adresářů a aktualizaci systému správy verzí.
Nápravné metody:
  • Přesun tříd. Třída je ve špatném balíčku, takže by měla být přesunuta do jiného balíčku, kde je nejvhodnější.
  • Výňatek. Dlouhá metoda musí být rozdělena do fází, aby se zlepšila čitelnost a pohodlí služby. Část kódu s jednou logickou úlohou je nahrazena voláním nové metody.
  • Extrakce nadtříd. Existující třída poskytuje funkce, které je třeba nějakým způsobem upravit. Abstraktní třída je představena také jako rodič současné třídypak se toto nové otec "zpřísní" obecné chování.
  • Nahrazení podmíněné hodnoty polymorfismu. Metody třídy mohou zkontrolovat určitou hodnotu (je-li operátorem přepínač) a určit správnou akci, kterou je třeba provést.
  • Výhody metody

    Provádění několika operací refaktorování před nebo během ladění kódu má určité výhody. Často je snadnější určit místo chyby. Tím je zachován čas strávený prací na kódování a zlepšení jeho kvality. Dobře strukturovaný kód je také méně náchylný k chybám, pokud jde o jeho rozšíření. Odborníci se domnívají, že použití metody přispívá k výhodám jakéhokoli programu, který má alespoň jedno z následujících nevýhod:
  • Programy, které jsou obtížné číst a obtížně se měnit.
  • Duální logické aplikace.
  • Programy vyžadující další chování vyžadující změny kódu.
  • Programy se složitou podmíněnou logikou, které jsou obtížně upravitelné.
  • V souhrnu lze tvrdit, že skutečné výhody obvykle přicházejí z dlouhodobého hlediska, například při refaktorování zlepšení existujícího pdf kódu. Spočívají v podstatně omezeném množství času, který vývojáři vynakládají na ladění a údržbu, aby zlepšili spolehlivost kódu. Kromě toho se duplicita kódu snižuje a znovu se stimuluje kód. Celkové náklady na údržbu a vývoj by se měly snížit a rychlost týmu reagovat na měnící se potřeby - zvýšit.

    Nedostatek korekce FOR

    Je-li tam je tak mnoho výhod dobře strukturovaný, jasný kód, a pokud refactoring kódu software je chaotická a špatně strukturované, náchylné k chybám kód k promyšlené, pak vyvstává otázka, proč ne všichni vývojáři softwaru ? V praxi vývojáři se často zdráhají provádět zlepšení, protože některá refaktorování pneumatiku. Zvláště tam, kde neexistuje žádný zřejmý vnější přínos pro to. Může být také obviňováno z řízení projektů. Když vedení podporuje pouze externě viditelné vlastnosti kódu, jako jsou funkčnost a výkon, ale nevěnuje pozornost na vnitřní kvalitu kódu. Kromě toho existuje vážné riziko přerušení kódu pomocí refaktorových operací. A jestli se například změní názvy souborů, může být problémem sledovatelnost změn. I když se vývojář softwaru pokusí reorganizovat nějaký špatně strukturovaný kód. Správce může mít zcela odlišnou perspektivu a může provádět FOR proti jakémukoli pokusu o úpravu pracovní kód. Tyto problémy nelze jednoduše ignorovat, budete muset zvážit, jak vývojářům a management.

    Automatizace procesu

    Při provádění vnější refactoring pozorované chování je zaručeno, že se nemění. Pokud je spuštěn ručně, je často nutné znovu sestavit systém a spustit testy. Proto je ruční metoda skutečně praktická pouze s respektemnásledující podmínky:
  • Systém, ze kterého je reorganizovaný kód součástí, lze rychle obnovit.
  • Existují automatické testy "regrese", které lze často spouštět.
  • Tato situace není příliš častá a znamená, že programy refaktoringu jsou omezené. Je stále rozšířenější, zejména když stále více lidí používá metody XP (Extreme Programming). Další překážkou metody je to, že mnohé z těchto refaktorů jsou nudné. Ještě důležitější je přesvědčení, že byly provedeny správné změny. Při provádění zlepšení se proto doporučuje používat automatizované nástroje. Rychlost jejich práce má ještě jednu výhodu, která se projevuje v prostředí vývojového týmu. Vývojář provede refaktorské operace mnohem méně často, jestliže použitý zdrojový kód vlastní i jiní vývojáři. Integrace s vývojáři, kteří si zvolili IDE, přináší mnoho výhod. Za prvé, přítomnost nástrojů v ruce znamená, že vývojáři mohou snadno reorganizovat. Nepotřebují přepínat mezi vývojovými a refactorizačními režimy a místo toho je považovat za součást svého normálního vývojového cyklu. Za druhé, funkce IDE, jako je integrace řízení verzí, mohou snížit úsilí metody, například přesunutí třídy nebo přejmenování balíčku.

    Analýza kódu Visual Studio 2017

    Předčasná optimalizace může být kořenem veškerého zla, ale aplikační nástroje poskytují jasnost, čistotu a bezpečnost kódu. Testování programu před odesláním je důležitou součástí procesu vývoje. Právě zde vstoupila v platnostnástroje a metody pro analýzu kódu a profilování - umožňují vyhodnotit kód chyb, úzká místa a efektivní využití zdrojů zpracování a paměti. Moderní nástroje pro kódování kódu mohou směřovat přímo na přesné řádky kódu, které vyžadují refaktorování, nebo na knihovny a jiné závislosti, které jsou slabými místy v aplikační architektuře.
    Před Visual Studio 2012, většina z těchto typů analýzy a testování kódu vyžadovala nástroje třetích stran a manuální sestavení, testování, analýzu a opakování úkolů pro vývojáře. Visual Studio má dnes poměrně silné nástroje pro analýzu. Kromě toho jsou zde výborné nástroje, které pomáhají developer ponořit se do testování aplikací výkonnosti a optimalizaci, šablon projektů, které jsou účinné závislost a vložené testovacího prostředí a robustní nástroje pro automatizované testování integrace a analýzy workflow shromažďování a propuštění.

    Nástroje pro ladění produktivitu

    komplexní sadu integrovaných nástrojů pro refaktorování projekt na zlepšení stávající kód byl původně seskupeny výkon koncentrátoru a diagnostiku ve Visual Studiu 2013, která byla dále zlepšena a rozšířena box Sítě Výkon a diagnostika „a“ Naskenované nástroje „v „visual studio“ 2015 s Visual Studio 2017 nástrojů, jako jsou integrované vývojové prostředí, které nejsou o nic víc bizarní jména, a přesto i nadále vyvíjet. Program je vybaven skvělou dokumentací a návodem odDokumenty Microsoft, počínaje „Začínáme s nástroji produktivity“ a „Průvodce pro začátečníky výkon profilování v aplikaci Visual Studio.
    Zde naleznete informace o shromažďování a profilování dat při způsobu provedení nejen pro tradiční aplikace .NET Framework a ASP.NET javascript pro produkty a webové stránky, High Performance Computing (HPC) a zátěžové testování. Dalším nástrojem, který vývojáři jsou rádi používají, obhajuje refactoring kódu c PerfView pro analýzu výkonnosti. Morrison je vedoucí architekt společnosti Microsoft a napsal PerfView pro interní analýzu výkonu a konfiguračních příkazů, které vytvářejí rozhraní .NET Framework a Visual Studio. Nyní je to nástroj s otevřeným zdrojovým kódem, který je stále aktivní.

    Další mechanismy pro profilování a ladění

    Kromě dostupných nástrojů od společnosti Microsoft, používat nástroje třetích stran, jejichž cílem je uspokojit potřeby jemného doladění:
  • Jains dotTrace Profiler pomáhá udržet přehled o sběru runtime úklid, distribuce výkonu zátěže vstup-výstup Pro zkušební kroky je k dispozici 10denní zkušební verze.
  • Redgate Mravenci Performance Profiler - další oblíbený nástroj pro projekty založené na rozhraní .NET Framework poskytuje stejnou analýzu synchronizační kód, jakož i další nástroje, ale také prohlubuje výkon databázových dotazů s podporou pro pokročilou přístup profilování dat podpora pro Oracle, MySQL, PostgreSQL.
  • DevExpres CodeRush - jednaAnalytický a refactoringový nástroj pro databáze C #, Visual Basic a XAML. Analytické nástroje CodeRush pracují nejen se základními řešeními, ale mají integrovanou integrovanou testovací integraci podporující rámec NUnit, xUnit, MSpec a MSTest, stejně jako testovací případy CoreCLR v prostředí DNX.
  • Microsoft Code Analysis 2017 poskytuje zabudovaný přístup k více než 100 nejpopulárnějším pravidlům FxCop jako živé analyzátory. Analyzátory viz kód C # nebo Visual Basic, jak vstoupit a poskytovat poradenství v oblasti výkonu, zabezpečení a osvědčených postupů, a přístup do slovníku rychle opravuje kód.
  • Microsoft DevSkim je složitější a flexibilnější struktura kódových modulů a analyzátorů, které se při zadávání zaměřují na analýzu zabezpečení vloženého kódu. Potenciální bezpečnostní problémy jsou zvýrazněny v kódu odkazu pro další informace jedním klepnutím na zabezpečený alternativní kód.
  • Časování

    Použití automatických refaktorových nástrojů snižuje pravděpodobnost, že vývojář provede včas nezbytné kroky, čímž se sníží pravděpodobnost chyb. Ale neméně důležitá je volba podmínek pro jeho provedení. Plánované refaktorování zlepšuje výkon kódu tím, že eliminuje duplicitu. Klíčovým bodem je co nejdříve opravit, než se stane problémem. V tomto případě se používá kontinuální refaktorování, což je velmi důležité pro nepřetržité dodávání kódu.
    Vývojáři v nejlepším případě často přecházejí mezi všechny výše zmíněné refactoringy. V tomto případě nezáleží na typu jména, aleJe důležité, aby to běželo. Například pokud čtete kód, vývojář chápe, že třídy nebo metody mohou být lepší, musíte to udělat okamžitě bez prodlení s použitím obvyklých metod pro extrakci závažných poruch nebo přejmenování metod pro lepší čtení. Tato platforma Martin Fowler na pracovních tocích pomáhá uživatelům lépe znát, plánovat a provádět vylepšení. Proto každý programátor potřebuje nejen vědět, jaký kód je refaktorování, ale také kdy je správně provádět.

    Související publikace