{"id":3016,"date":"2020-06-24T08:53:38","date_gmt":"2020-06-24T08:53:38","guid":{"rendered":"http:\/\/the-codest.localhost\/blog\/a-quick-primer-on-refactoring-for-beginners\/"},"modified":"2026-04-24T11:30:09","modified_gmt":"2026-04-24T11:30:09","slug":"en-hurtig-indforing-i-refaktorering-for-begyndere","status":"publish","type":"post","link":"https:\/\/thecodest.co\/da\/blog\/a-quick-primer-on-refactoring-for-beginners\/","title":{"rendered":"En hurtig introduktion til refaktorering for begyndere"},"content":{"rendered":"<p>Derfor er det uforst\u00e5eligt for nogle, at <strong>refaktorering<\/strong> er faktisk et omr\u00e5de inden for programmering, og det er ogs\u00e5 en meget vigtig del af programm\u00f8rens arbejde. Koden er i konstant udvikling, den vil blive \u00e6ndret, s\u00e5 l\u00e6nge der er mulighed for at tilf\u00f8je nye funktioner. Men den kan antage en form, der ikke l\u00e6ngere giver mulighed for effektivt at tilf\u00f8je nye funktioner, og det ville v\u00e6re lettere at omskrive hele programmet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hvad er refaktorering?<\/h2>\n\n\n\n<p>Normalt er svaret, at det er at \u00e6ndre kodens struktur ved at anvende en r\u00e6kke refaktoriseringstransformationer uden at p\u00e5virke kodens observerbare adf\u00e6rd. Det er ogs\u00e5 rigtigt. For nylig st\u00f8dte jeg ogs\u00e5 p\u00e5 en definition af <b>Martin Fowler<\/b> i sin bog <b>\"Forbedring af designet af eksisterende regler\"<\/b> hvor han beskriver <strong>refaktorering<\/strong> som \"at lave store forandringer med sm\u00e5 skridt\". Han beskriver <strong>refaktorering<\/strong> som en kode\u00e6ndring, der ikke p\u00e5virker driften, men han understreger, at det skal ske i sm\u00e5 skridt.<\/p>\n\n\n\n<p>Bogen sl\u00e5r ogs\u00e5 til lyd for, at <strong>refaktorering<\/strong> ikke p\u00e5virker kodens funktion og p\u00e5peger, at det ikke har nogen effekt p\u00e5 at best\u00e5 testene p\u00e5 noget tidspunkt. Den beskriver trin for trin, hvordan man sikkert udf\u00f8rer <strong>refaktorering<\/strong>. Jeg kunne godt lide hans bog, fordi den beskriver enkle tricks, der kan bruges i det daglige arbejde.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hvorfor har vi brug for refaktorering?<\/h2>\n\n\n\n<p>&nbsp;Oftest har du brug for det, n\u00e5r du vil indf\u00f8re en ny funktion, og koden i sin nuv\u00e6rende version ikke tillader det, eller det ville v\u00e6re sv\u00e6rere uden \u00e6ndringer i koden. Det er ogs\u00e5 nyttigt i tilf\u00e6lde, hvor det ikke er rentabelt tidsm\u00e6ssigt at tilf\u00f8je flere funktioner, dvs. at det ville v\u00e6re hurtigere at omskrive koden fra bunden. Jeg tror, at man nogle gange glemmer, at <strong>refaktorering<\/strong> kan g\u00f8re koden renere og mere l\u00e6sbar. Martin skriver i sin bog, hvordan han udf\u00f8rer refaktorering, n\u00e5r han f\u00f8ler ubehagelige lugte i koden, og, som han udtrykker det, <b>\"Det giver altid plads til det bedre\"<\/b>. Og her overraskede han mig ved at se refaktorering som et element i det daglige kodearbejde. For mig er koderne ofte uforst\u00e5elige, og det er lidt af en oplevelse at l\u00e6se den, da koden ofte er uintuitiv.<\/p>\n\n\n\n<p>Det, der kendetegner et veldesignet program, er dets <b>Modularitet<\/b>Takket v\u00e6re det er det nok kun at kende en lille del af koden for at indf\u00f8re de fleste \u00e6ndringer. Modularitet g\u00f8r det ogs\u00e5 lettere for nye folk at komme ind og begynde at arbejde mere effektivt. For at opn\u00e5 denne modularitet skal relaterede programelementer grupperes sammen, og forbindelserne skal v\u00e6re forst\u00e5elige og lette at finde. Der findes ikke en enkelt tommelfingerregel for, hvordan det kan g\u00f8res. Efterh\u00e5nden som du ved og forst\u00e5r mere og mere af, hvordan koden skal fungere, kan du gruppere elementerne, men nogle gange er du ogs\u00e5 n\u00f8dt til at teste og kontrollere.<\/p>\n\n\n\n<p>En af reglerne for refaktorering i <b>YAGNI<\/b>Det er et akronym for 'You Aren't Gonna Need It' og stammer fra <b>eXtreme programmering (XP) <\/b>bruges hovedsageligt i <strong><a href=\"https:\/\/thecodest.co\/da\/blog\/how-to-implement-agile-methodology\/\">Agil<\/a> <a href=\"https:\/\/thecodest.co\/da\/blog\/8-key-questions-to-ask-your-software-development-outsourcing-partner\/\">softwareudvikling<\/a> hold<\/strong>. Lang historie kort, <b>YAGNI<\/b> siger, at kun aktuelle ting skal g\u00f8res. Det betyder dybest set, at selv om der kan blive brug for noget i fremtiden, skal det ikke g\u00f8res lige nu.  Men vi kan heller ikke forhindre yderligere udvidelser, og det er her, modularitet bliver vigtig.<\/p>\n\n\n\n<p>N\u00e5r man taler om <strong>refaktorering<\/strong>skal et af de vigtigste elementer, nemlig test, n\u00e6vnes. I <strong>refaktorering<\/strong>er vi n\u00f8dt til at vide, at koden stadig virker, fordi <strong>refaktorering<\/strong> \u00e6ndrer ikke, hvordan den fungerer, men dens struktur, s\u00e5 alle tests skal best\u00e5s. Det er bedst at k\u00f8re tests for den del af koden, vi arbejder p\u00e5, efter hver lille transformation. Det giver <a href=\"https:\/\/thecodest.co\/da\/blog\/why-us-companies-are-opting-for-polish-developers\/\">os<\/a> en bekr\u00e6ftelse p\u00e5, at alt fungerer, som det skal, og det forkorter tiden for hele operationen. Det er det, Martin taler om i sin bog - k\u00f8r tests s\u00e5 ofte som muligt, s\u00e5 du ikke skal tr\u00e6de et skridt tilbage og spilde tid p\u00e5 at lede efter en transformation, der \u00f8delagde noget.<\/p>\n\n\n\n<p><strong><a href=\"https:\/\/thecodest.co\/da\/dictionary\/what-is-code-refactoring\/\">Refaktorering af kode<\/a><\/strong> Uden test er det besv\u00e6rligt, og der er stor risiko for, at noget g\u00e5r galt. Hvis det er muligt, ville det v\u00e6re bedst at tilf\u00f8je i det mindste nogle grundl\u00e6ggende tests, der giver os lidt sikkerhed for, at koden fungerer.<\/p>\n\n\n\n<p>De transformationer, der er anf\u00f8rt nedenfor, er kun eksempler, men de er virkelig nyttige i den daglige programmering:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Funktionsudtr\u00e6k og variabeludtr\u00e6k - hvis funktionen er for lang, skal du tjekke, om der er mindre funktioner, der kan tr\u00e6kkes ud. Det samme g\u00e6lder for lange linjer. Disse transformationer kan hj\u00e6lpe med at finde dobbeltarbejde i koden. Takket v\u00e6re Small Functions bliver koden klarere og mere forst\u00e5elig,<\/li>\n\n\n\n<li>Omd\u00f8bning af funktioner og variabler - at bruge den korrekte navngivningskonvention er afg\u00f8rende for god programmering. Variabelnavne kan, n\u00e5r de er velvalgte, fort\u00e6lle meget om koden,<\/li>\n\n\n\n<li>Gruppering af funktionerne i en klasse - denne \u00e6ndring er nyttig, n\u00e5r to klasser udf\u00f8rer lignende operationer, da det kan forkorte klassens l\u00e6ngde,<\/li>\n\n\n\n<li>Overstyring af den indlejrede erkl\u00e6ring - hvis betingelsen er opfyldt i et s\u00e6rligt tilf\u00e6lde, skal du udstede en returs\u00e6tning, n\u00e5r betingelsen indtr\u00e6ffer. Denne type test kaldes ofte for guard clause. Hvis man erstatter en indlejret betinget erkl\u00e6ring med en exit-erkl\u00e6ring, \u00e6ndres v\u00e6gten i koden. If-else-konstruktionen tildeler begge varianter samme v\u00e6gt. For den person, der l\u00e6ser koden, er det en besked om, at hver af dem er lige sandsynlige og vigtige,<\/li>\n\n\n\n<li>Introduktion af et specialtilf\u00e6lde - hvis du bruger nogle betingelser i din kode mange gange, kan det v\u00e6re v\u00e6rd at oprette en separat struktur til dem. P\u00e5 den m\u00e5de kan de fleste specialtilf\u00e6lde erstattes med simple funktionskald. Ofte er den almindelige v\u00e6rdi, der kr\u00e6ver s\u00e6rlig behandling, null. Derfor kaldes dette m\u00f8nster ofte for nul-objektet. Men denne tilgang kan bruges i alle specialtilf\u00e6lde,<\/li>\n\n\n\n<li>Udskiftning af den betingede instruktionspolymorfisme.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Eksempel<\/h2>\n\n\n\n<p>Dette er en artikel om <strong>refaktorering<\/strong> og der er brug for et eksempel. Jeg vil gerne vise et simpelt refaktoreringseksempel nedenfor med brug af <b>Overstyring af den indlejrede erkl\u00e6ring<\/b> og <b>Udskiftning af den betingede instruktionspolymorfi<\/b>. Lad os sige, at vi har en programfunktion, der returnerer en <a href=\"https:\/\/thecodest.co\/da\/blog\/hash-to-use-or-not-to-use\/\">hash<\/a> med oplysninger om, hvordan man vander planter i det virkelige liv. S\u00e5danne oplysninger ville sandsynligvis v\u00e6re i modellen, men i dette eksempel har vi dem i funktionen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">def vanding_info(plante)\n     resultat = {}\n     hvis plant.is_a? Suculent || plant.is_a? Kaktus\n         result = { water_amount: \"En lille smule\" , how_to: \"Fra bunden\", watering_duration: \"2 uger\" }\n     elsif plant.is_a? Alocasia || plant.is_a? Maranta\n         result = { water_amount: \"Stor m\u00e6ngde\", how_to: \"Som du foretr\u00e6kker\", watering_duration: \"5 dage\" }\n     elsif plant.is_a? Peperomia\n         result = { water_amount: \"Bestemt m\u00e6ngde\",\n             how_to: \"Fra bunden! De kan ikke lide vand p\u00e5 bladene\",\n             watering_duration: \"1 uge\" }\n     ellers\n         result = { water_amount: \"Dicent m\u00e6ngde\",\n             how_to: \"Som du foretr\u00e6kker\",\n             watering_duration: \"1 uge\"\n             }\n     slut\n     returner resultat\n slut\n<\/code><\/pre>\n\n\n\n<p>Ideen er at \u00e6ndre, hvis man skal vende tilbage:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">hvis plant.isa? Suculent || plant.isa? Kaktus\n\n     resultat = { vandm\u00e6ngde: \"En lille smule\" , howto: \"Fra bunden\",\n<\/code><\/pre>\n\n\n\n<p>Til<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>return { water_amount: \"En lille smule\" , how_to: \"Fra bunden\",watering_duration: \"2 uger\" } if plant.is_a? Suculent || plant.is_a? Kaktus<\/code><\/code>.<\/pre>\n\n\n\n<p>return { vand<em>m\u00e6ngde: \"En lille smule\" , hvordan<\/em>til: \"Fra bunden\", vanding<em>varighed: \"2 uger\" } if plant.is<\/em>a? Sukkulent || plant.is_a? Kaktus<\/p>\n\n\n\n<p>Og s\u00e5 videre med alt, indtil vi kommer til en funktion, der ser s\u00e5dan ud:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">def vanding_info(plante)\n\nreturn result = { wateramount: \"En lille smule\" , howto: \"Fra bunden\", vandingsvarighed: \"2 uger\" } if plant.isa? Suculent || plant.is_a? Kaktus\n\nreturn result = { wateramount: \"Stor m\u00e6ngde\", howto: \"Som du foretr\u00e6kker\", vandingsvarighed: \"5 dage\" } if plant.isa? Alocasia || plant.is_a? Maranta\n\nreturn result = { water_amount: \"Dicent m\u00e6ngde\",\n\n          howto: \"Fra bunden! De kan ikke lide vand p\u00e5 bladene\",\n          wateringduration: \"1 week\" } if plant.is_a? Peperomia\n\nreturn result = { water_amount: \"Dicent m\u00e6ngde\",\n\n          how_to: \"Som du foretr\u00e6kker\",\n\n          vanding_varighed: \"1 uge\"\n\n          }\n\nslutning<\/code><\/pre>\n\n\n\n<p>\u00a0Til allersidst havde vi allerede et returresultat. Og det er en god vane at g\u00f8re det trin for trin og teste hver \u00e6ndring. Du kunne erstatte denne if-blok med en switch case, og det ville straks se bedre ud, og du ville ikke beh\u00f8ve at tjekke alle if'er hver gang. Det ville se s\u00e5dan ud:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">def vanding_info(plante)\n\nswich plant.class.to_string\n\ncase Sukkulente, Kaktus\n\n     { vandm\u00e6ngde: \"En lille smule\" , howto: \"Fra bunden\", vanding_varighed: \"2 uger\" }\n\ntilf\u00e6lde Alocasia, Maranta\n\n     { vandm\u00e6ngde: \"Stor m\u00e6ngde\", howto: \"Som du foretr\u00e6kker\", watering_duration: \"5 dage\" }\n\ntilf\u00e6lde Peperomia\n\n     { water_amount: \"Dicent m\u00e6ngde\",\n\n          how_to: \"Fra bunden! De kan ikke lide vand p\u00e5 bladene\",\n\n          vanding_varighed: \"1 uge\" }\n\nellers\n\n     { water_amount: \"Dicent m\u00e6ngde\",\n\n            how_to: \"Som du foretr\u00e6kker\",\n\n       vandingsvarighed: \"1 uge\" }\n\nslutning\n\nslut<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>Og s\u00e5 kan du anvende <b>Udskiftning af den betingede instruktionspolymorfisme<\/b>. Det er for at skabe en klasse med en funktion, der returnerer den korrekte v\u00e6rdi og skifter dem p\u00e5 deres rette plads.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">klasse Sukkulente\n\n...\n\ndef vanding_info()\n\n     return { vandm\u00e6ngde: \"En lille smule\" , howto: \"Fra bunden\", watering_duration: \"2 uger\" }\n\nslut\n\nslut\n\nklasse Kaktus\n\n...\n\ndef vanding_info()\n\n     return { vandm\u00e6ngde: \"En lille smule\" , howto: \"Fra bunden\", watering_duration: \"2 uger\" }\n\nslut\n\nslut\n\nklasse Alocasia\n\n...\n\ndef vanding_info\n\n     return { vandm\u00e6ngde: \"Stor m\u00e6ngde\", howto: \"Som du foretr\u00e6kker\", watering_duration: \"5 dage\" }\n\nslut\n\nslut\n\nklasse Maranta\n\n...\n\ndef vanding_info\n\n     return { vandm\u00e6ngde: \"Stor m\u00e6ngde\", howto: \"Som du foretr\u00e6kker\", watering_duration: \"5 dage\" }\n\nslut\n\nslut\n\nklasse Peperomia\n\n...\n\ndef vanding_info\n\n     return { water_amount: \"Dicent bel\u00f8b\",\n\n      how_to: \"Fra bunden! De kan ikke lide vand p\u00e5 bladene\",\n\n      vanding_varighed: \"1 uge\" }\n\nslutning\n\nslut\n\nklasse Plante\n\n...\n\ndef vanding_info\n\n     return { water_amount: \"Dicent bel\u00f8b\",\n\n              how_to: \"Som du foretr\u00e6kker\",\n\n              vandingsvarighed: \"1 uge\" }\n\nslutning\n\nslut<\/code><\/pre>\n\n\n\n<p>Og i hovedfunktionen watering_infofunction vil koden se s\u00e5dan ud:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">def vanding_info(plante)\n\n    plante.map(&amp;:vanding_info)\n\nslut<\/code><\/pre>\n\n\n\n<p>Denne funktion kan selvf\u00f8lgelig fjernes og erstattes med dens indhold. Med dette eksempel ville jeg pr\u00e6sentere den generelle <strong>m\u00f8nster for refaktorering<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sammenfatning<\/h2>\n\n\n\n<p><strong>Refaktorisering<\/strong> er et stort emne. Jeg h\u00e5ber, at denne artikel var et incitament til at l\u00e6se mere. Disse <strong>f\u00e6rdigheder i refaktorering<\/strong> hj\u00e6lpe dig med at fange dine fejl og forbedre din workshop med ren kode. Jeg anbefaler at l\u00e6se Martins bog (Improving the Design of Existing Code), som er et ret grundl\u00e6ggende og nyttigt s\u00e6t regler for <strong>refaktorering<\/strong>. Forfatteren viser forskellige transformationer trin for trin med en fuld forklaring og motivation og tip til, hvordan man undg\u00e5r fejl i <strong>refaktorering<\/strong>. P\u00e5 grund af sin alsidighed er det en dejlig bog til frontend og <strong>backend-udviklere<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/thecodest.co\/careers\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/ruby_developer_hiring.jpeg\" alt=\"Bliv junior Ruby-udvikler\"\/><\/a><\/figure>\n\n\n\n<p><strong>L\u00e6s mere<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/graphql-ruby-what-about-performance\">GraphQL Ruby. Hvad med performance?<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\">Skinner og andre transportmidler<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\">Rails-udvikling med TMUX, Vim, Fzf + Ripgrep<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>M\u00e5ske skriver jeg om noget, der er indlysende for mange, men m\u00e5ske ikke for alle. Refactoring er, synes jeg, et kompliceret emne, fordi det handler om at \u00e6ndre koden uden at p\u00e5virke dens funktion.<\/p>","protected":false},"author":2,"featured_media":3017,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[8],"tags":[],"class_list":["post-3016","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>A Quick Primer on Refactoring for Beginners - The Codest<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thecodest.co\/da\/blog\/en-hurtig-indforing-i-refaktorering-for-begyndere\/\" \/>\n<meta property=\"og:locale\" content=\"da_DK\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A Quick Primer on Refactoring for Beginners\" \/>\n<meta property=\"og:description\" content=\"Perhaps I am writing about something obvious to many, but maybe not to everyone. Refactoring is, I think, a complicated topic because it involves changing the code without affecting its operation.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thecodest.co\/da\/blog\/en-hurtig-indforing-i-refaktorering-for-begyndere\/\" \/>\n<meta property=\"og:site_name\" content=\"The Codest\" \/>\n<meta property=\"article:published_time\" content=\"2020-06-24T08:53:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-24T11:30:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/regactor.png\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"540\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"thecodest\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"thecodest\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/a-quick-primer-on-refactoring-for-beginners\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/a-quick-primer-on-refactoring-for-beginners\\\/\"},\"author\":{\"name\":\"thecodest\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\"},\"headline\":\"A Quick Primer on Refactoring for Beginners\",\"datePublished\":\"2020-06-24T08:53:38+00:00\",\"dateModified\":\"2026-04-24T11:30:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/a-quick-primer-on-refactoring-for-beginners\\\/\"},\"wordCount\":1338,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/a-quick-primer-on-refactoring-for-beginners\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/regactor.png\",\"articleSection\":[\"Software Development\"],\"inLanguage\":\"da-DK\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/a-quick-primer-on-refactoring-for-beginners\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/a-quick-primer-on-refactoring-for-beginners\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/a-quick-primer-on-refactoring-for-beginners\\\/\",\"name\":\"A Quick Primer on Refactoring for Beginners - The Codest\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/a-quick-primer-on-refactoring-for-beginners\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/a-quick-primer-on-refactoring-for-beginners\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/regactor.png\",\"datePublished\":\"2020-06-24T08:53:38+00:00\",\"dateModified\":\"2026-04-24T11:30:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/a-quick-primer-on-refactoring-for-beginners\\\/#breadcrumb\"},\"inLanguage\":\"da-DK\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/a-quick-primer-on-refactoring-for-beginners\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/a-quick-primer-on-refactoring-for-beginners\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/regactor.png\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/regactor.png\",\"width\":960,\"height\":540},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/a-quick-primer-on-refactoring-for-beginners\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thecodest.co\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A Quick Primer on Refactoring for Beginners\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"name\":\"The Codest\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thecodest.co\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"da-DK\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"width\":144,\"height\":36,\"caption\":\"The Codest\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/pl.linkedin.com\\\/company\\\/codest\",\"https:\\\/\\\/clutch.co\\\/profile\\\/codest\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\",\"name\":\"thecodest\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"caption\":\"thecodest\"},\"url\":\"https:\\\/\\\/thecodest.co\\\/da\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"En hurtig introduktion til refaktorering for begyndere - The Codest","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thecodest.co\/da\/blog\/en-hurtig-indforing-i-refaktorering-for-begyndere\/","og_locale":"da_DK","og_type":"article","og_title":"A Quick Primer on Refactoring for Beginners","og_description":"Perhaps I am writing about something obvious to many, but maybe not to everyone. Refactoring is, I think, a complicated topic because it involves changing the code without affecting its operation.","og_url":"https:\/\/thecodest.co\/da\/blog\/en-hurtig-indforing-i-refaktorering-for-begyndere\/","og_site_name":"The Codest","article_published_time":"2020-06-24T08:53:38+00:00","article_modified_time":"2026-04-24T11:30:09+00:00","og_image":[{"width":960,"height":540,"url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/regactor.png","type":"image\/png"}],"author":"thecodest","twitter_card":"summary_large_image","twitter_misc":{"Written by":"thecodest","Est. reading time":"7 minutter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thecodest.co\/blog\/a-quick-primer-on-refactoring-for-beginners\/#article","isPartOf":{"@id":"https:\/\/thecodest.co\/blog\/a-quick-primer-on-refactoring-for-beginners\/"},"author":{"name":"thecodest","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76"},"headline":"A Quick Primer on Refactoring for Beginners","datePublished":"2020-06-24T08:53:38+00:00","dateModified":"2026-04-24T11:30:09+00:00","mainEntityOfPage":{"@id":"https:\/\/thecodest.co\/blog\/a-quick-primer-on-refactoring-for-beginners\/"},"wordCount":1338,"commentCount":0,"publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"image":{"@id":"https:\/\/thecodest.co\/blog\/a-quick-primer-on-refactoring-for-beginners\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/regactor.png","articleSection":["Software Development"],"inLanguage":"da-DK","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thecodest.co\/blog\/a-quick-primer-on-refactoring-for-beginners\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thecodest.co\/blog\/a-quick-primer-on-refactoring-for-beginners\/","url":"https:\/\/thecodest.co\/blog\/a-quick-primer-on-refactoring-for-beginners\/","name":"En hurtig introduktion til refaktorering for begyndere - The Codest","isPartOf":{"@id":"https:\/\/thecodest.co\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thecodest.co\/blog\/a-quick-primer-on-refactoring-for-beginners\/#primaryimage"},"image":{"@id":"https:\/\/thecodest.co\/blog\/a-quick-primer-on-refactoring-for-beginners\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/regactor.png","datePublished":"2020-06-24T08:53:38+00:00","dateModified":"2026-04-24T11:30:09+00:00","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/a-quick-primer-on-refactoring-for-beginners\/#breadcrumb"},"inLanguage":"da-DK","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/a-quick-primer-on-refactoring-for-beginners\/"]}]},{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/thecodest.co\/blog\/a-quick-primer-on-refactoring-for-beginners\/#primaryimage","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/regactor.png","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/regactor.png","width":960,"height":540},{"@type":"BreadcrumbList","@id":"https:\/\/thecodest.co\/blog\/a-quick-primer-on-refactoring-for-beginners\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thecodest.co\/"},{"@type":"ListItem","position":2,"name":"A Quick Primer on Refactoring for Beginners"}]},{"@type":"WebSite","@id":"https:\/\/thecodest.co\/#website","url":"https:\/\/thecodest.co\/","name":"Codest","description":"","publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thecodest.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"da-DK"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","width":144,"height":36,"caption":"The Codest"},"image":{"@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/pl.linkedin.com\/company\/codest","https:\/\/clutch.co\/profile\/codest"]},{"@type":"Person","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76","name":"thecodest","image":{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","caption":"thecodest"},"url":"https:\/\/thecodest.co\/da\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts\/3016","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/comments?post=3016"}],"version-history":[{"count":12,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts\/3016\/revisions"}],"predecessor-version":[{"id":7707,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts\/3016\/revisions\/7707"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/media\/3017"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/media?parent=3016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/categories?post=3016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/tags?post=3016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}