{"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-rask-innforing-i-refaktorering-for-nybegynnere","status":"publish","type":"post","link":"https:\/\/thecodest.co\/nb\/blog\/a-quick-primer-on-refactoring-for-beginners\/","title":{"rendered":"En rask innf\u00f8ring i refaktorering for nybegynnere"},"content":{"rendered":"<p>Derfor er det uforst\u00e5elig for noen at <strong>refaktorisering<\/strong> er faktisk et omr\u00e5de innen programmering, og det er ogs\u00e5 en sv\u00e6rt viktig del av programmererens arbeid. Koden er i stadig utvikling, og den vil bli endret s\u00e5 lenge det er mulig \u00e5 legge til ny funksjonalitet. Det kan imidlertid hende at den tar en form som ikke lenger gj\u00f8r det mulig \u00e5 legge til ny funksjonalitet p\u00e5 en effektiv m\u00e5te, og da er det enklere \u00e5 skrive om hele programmet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hva er refaktorisering?<\/h2>\n\n\n\n<p>Vanligvis f\u00e5r du til svar at det dreier seg om \u00e5 endre strukturen i koden ved \u00e5 bruke en rekke refaktoriseringstransformasjoner uten \u00e5 p\u00e5virke kodens observerbare atferd. Dette er sant. Nylig kom jeg ogs\u00e5 over en definisjon av <b>Martin Fowler<\/b> i sin bok <b>\"Forbedring av utformingen av eksisterende kodeverk\"<\/b> hvor han beskriver <strong>refaktorisering<\/strong> som \"\u00e5 gj\u00f8re store endringer med sm\u00e5 skritt\". Han beskriver <strong>refaktorisering<\/strong> som en kodeendring som ikke p\u00e5virker driften, men han understreker at det m\u00e5 gj\u00f8res i sm\u00e5 skritt.<\/p>\n\n\n\n<p>Boken tar ogs\u00e5 til orde for at <strong>refaktorisering<\/strong> ikke p\u00e5virker driften av koden, og p\u00e5peker at det ikke har noen innvirkning p\u00e5 best\u00e5tt test p\u00e5 noe tidspunkt. Den beskriver trinn for trinn hvordan du trygt kan utf\u00f8re <strong>refaktorisering<\/strong>. Jeg likte boken fordi den beskriver enkle triks som kan brukes i det daglige arbeidet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hvorfor trenger vi refaktorisering?<\/h2>\n\n\n\n<p>&nbsp;Oftest trenger du det n\u00e5r du \u00f8nsker \u00e5 introdusere en ny funksjonalitet og koden i sin n\u00e5v\u00e6rende versjon ikke tillater det, eller det ville v\u00e6re vanskeligere uten endringer i koden. Det er ogs\u00e5 nyttig i tilfeller der det er ul\u00f8nnsomt \u00e5 legge til flere funksjoner, det vil si at det ville v\u00e6re raskere \u00e5 skrive om koden fra bunnen av. Jeg tror det noen ganger glemmes at <strong>refaktorisering<\/strong> kan gj\u00f8re koden renere og mer lesbar. Martin skriver i boken sin hvordan han utf\u00f8rer refaktorering n\u00e5r han kjenner ubehagelig lukt i koden, og, som han uttrykker det, <b>\"det gir alltid rom for det bedre\"<\/b>. Og han overrasket meg her ved \u00e5 se refaktorering som et element i det daglige kodearbeidet. For meg er kodene ofte uforst\u00e5elige, det er litt av en opplevelse \u00e5 lese den fordi koden ofte er uintuitiv.<\/p>\n\n\n\n<p>Det som kjennetegner et godt utformet program, er dets <b>modularitet<\/b>Det er derfor nok \u00e5 kunne bare en liten del av koden for \u00e5 kunne gj\u00f8re de fleste endringer. Modularitet gj\u00f8r det ogs\u00e5 lettere for nye personer \u00e5 komme inn og begynne \u00e5 jobbe mer effektivt. For \u00e5 oppn\u00e5 denne modulariteten m\u00e5 beslektede programelementer grupperes sammen, og forbindelsene m\u00e5 v\u00e6re forst\u00e5elige og lette \u00e5 finne. Det finnes ingen tommelfingerregel for hvordan dette kan gj\u00f8res. Etter hvert som du vet og forst\u00e5r mer og mer av hvordan koden er ment \u00e5 fungere, kan du gruppere elementene bedre, men noen ganger m\u00e5 du ogs\u00e5 teste og sjekke.<\/p>\n\n\n\n<p>En av reglene 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>hovedsakelig brukt i <strong><a href=\"https:\/\/thecodest.co\/nb\/blog\/how-to-implement-agile-methodology\/\">Smidig<\/a> <a href=\"https:\/\/thecodest.co\/nb\/blog\/8-key-questions-to-ask-your-software-development-outsourcing-partner\/\">programvareutvikling<\/a> lag<\/strong>. For \u00e5 gj\u00f8re en lang historie kort, <b>YAGNI<\/b> sier at bare oppdaterte ting skal gj\u00f8res. Det betyr at selv om noe kan bli n\u00f8dvendig i fremtiden, b\u00f8r det ikke gj\u00f8res akkurat n\u00e5.  Men vi kan heller ikke knuse ytterligere utvidelser, og det er her modularitet blir viktig.<\/p>\n\n\n\n<p>N\u00e5r man snakker om <strong>refaktorisering<\/strong>m\u00e5 et av de viktigste elementene, nemlig testene, nevnes. I <strong>refaktorisering<\/strong>m\u00e5 vi vite at koden fortsatt fungerer, fordi <strong>refaktorisering<\/strong> endrer ikke hvordan den fungerer, men strukturen, s\u00e5 alle tester m\u00e5 best\u00e5s. Det beste er \u00e5 kj\u00f8re tester for den delen av koden vi jobber med, etter hver lille transformasjon. Det gir <a href=\"https:\/\/thecodest.co\/nb\/blog\/why-us-companies-are-opting-for-polish-developers\/\">oss<\/a> en bekreftelse p\u00e5 at alt fungerer som det skal, og det forkorter tiden for hele operasjonen. Det er dette Martin snakker om i boken sin - kj\u00f8r tester s\u00e5 ofte som mulig for ikke \u00e5 ta et skritt tilbake og kaste bort tid p\u00e5 \u00e5 lete etter en transformasjon som \u00f8dela noe.<\/p>\n\n\n\n<p><strong><a href=\"https:\/\/thecodest.co\/nb\/dictionary\/what-is-code-refactoring\/\">Refaktorisering av kode<\/a><\/strong> Uten testing er det vanskelig, og det er stor sjanse for at noe g\u00e5r galt. Hvis det er mulig, er det best \u00e5 legge til i det minste noen grunnleggende tester som gir oss en liten forsikring om at koden fungerer.<\/p>\n\n\n\n<p>Transformasjonene nedenfor er bare eksempler, men de er sv\u00e6rt nyttige i den daglige programmeringen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Funksjonsekstraksjon og variabelekstraksjon - hvis funksjonen er for lang, b\u00f8r du sjekke om det finnes mindre funksjoner som kan trekkes ut. Det samme gjelder for lange linjer. Disse transformasjonene kan hjelpe deg med \u00e5 finne dupliseringer i koden. Takket v\u00e6re Small Functions blir koden tydeligere og mer forst\u00e5elig,<\/li>\n\n\n\n<li>Omd\u00f8ping av funksjoner og variabler - riktig navngivning er avgj\u00f8rende for god programmering. Velvalgte variabelnavn kan fortelle mye om koden,<\/li>\n\n\n\n<li>Gruppering av funksjonene i en klasse - denne endringen er nyttig n\u00e5r to klasser utf\u00f8rer lignende operasjoner, ettersom den kan forkorte lengden p\u00e5 klassen,<\/li>\n\n\n\n<li>Overstyring av den nestede setningen - hvis betingelsen sjekker ut for et spesialtilfelle, utsteder du en retursetning n\u00e5r betingelsen inntreffer. Denne typen tester kalles ofte for guard clause. Hvis du erstatter en nestet betinget setning med en exit-setning, endrer du vektleggingen i koden. If-else-konstruksjonen tildeler begge variantene like stor vekt. For den som leser koden, er det et budskap om at hver av dem er like sannsynlige og viktige,<\/li>\n\n\n\n<li>Innf\u00f8ring av et spesialtilfelle - hvis du bruker noen betingelser i koden din mange ganger, kan det l\u00f8nne seg \u00e5 lage en egen struktur for dem. Dermed kan de fleste spesialtilfeller erstattes med enkle funksjonsanrop. Ofte er null den vanligste verdien som krever spesialbehandling. Derfor kalles dette m\u00f8nsteret ofte for nullobjektet. Denne tiln\u00e6rmingen kan imidlertid brukes i alle spesialtilfeller,<\/li>\n\n\n\n<li>Erstatning av den betingede instruksjonspolymorfismen.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Eksempel<\/h2>\n\n\n\n<p>Dette er en artikkel om <strong>refaktorisering<\/strong> og det er behov for et eksempel. Jeg vil vise et enkelt refaktoriseringseksempel nedenfor med bruk av <b>Overstyring av den nestede setningen<\/b> og <b>Erstatning av den betingede instruksjonspolymorfismen<\/b>. La oss si at vi har en programfunksjon som returnerer en <a href=\"https:\/\/thecodest.co\/nb\/blog\/hash-to-use-or-not-to-use\/\">hasj<\/a> med informasjon om hvordan man vanner planter i virkeligheten. Slik informasjon ville sannsynligvis ligget i modellen, men i dette eksempelet har vi den i funksjonen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">def vanning_info(anlegg)\n     resultat = {}\n     if plant.is_a? Suculent || plant.is_a? Kaktus\n         resultat = { vann_mengde: \"Litt \" , how_to: \"Fra bunnen\", vanning_varighet: \"2 uker\" }\n     elsif plant.is_a? Alocasia || plant.is_a? Maranta\n         resultat = { vann_mengde: \"Stor mengde\", how_to: \"Som du foretrekker\", vanning_varighet: \"5 dager\" }\n     elsif plant.is_a? Peperomia\n         result = { water_amount: \"Dicent mengde\",\n             how_to: \"Fra bunnen! de liker ikke vann p\u00e5 bladene\",\n             vanning_varighet: \"1 uke\" }\n     ellers\n         resultat = { vann_mengde: \"Dicent mengde\",\n             how_to: \"Som du foretrekker\",\n             vanning_varighet: \"1 uke\"\n             }\n     end\n     returner resultat\n end\n<\/code><\/pre>\n\n\n\n<p>Tanken er \u00e5 endre om \u00e5 vende tilbake:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">if plant.isa? Suculent || plant.isa? Kaktus\n\n     resultat = { vannmengde: \"Litt \" , howto: \"Fra bunnen\",\n<\/code><\/pre>\n\n\n\n<p>Til<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>return { vann_mengde: \"Litt \" , how_to: \"Fra bunnen\",vanning_varighet: \"2 uker\" } if plant.is_a? Suculent || plant.is_a? Cactus<\/code><\/code> &lt;\/code<\/pre>\n\n\n\n<p>returnere { vann<em>mengde: \"Litt\" , hvordan<\/em>til: \"Fra bunnen\", vanning<em>varighet: \"2 uker\" } if plant.is<\/em>a? Suculent || plant.is_a? Kaktus<\/p>\n\n\n\n<p>Og s\u00e5 videre med alt, helt til vi kommer til en funksjon som ser slik ut:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">def vanning_info(anlegg)\n\nreturn result = { vannmengde: \"Litt \" , howto: \"Fra bunnen\", vanningvarighet: \"2 uker\" } if plant.isa? Suculent || plant.is_a? Cactus\n\nreturn result = { vannmengde: \"Stor mengde\", howto: \"Som du foretrekker\", vanningvarighet: \"5 dager\" } if plant.isa? Alocasia || plant.is_a? Maranta\n\nreturn result = { water_amount: \"Dicent mengde\",\n\n          howto: \"Fra bunnen! de liker ikke vann p\u00e5 bladene\",\n          vanningvarighet: \"1 uke\" } if plant.is_a? Peperomia\n\nreturn result = { water_amount: \"Dicent amount\",\n\n          how_to: \"Som du foretrekker\",\n\n          vanning_varighet: \"1 uke\"\n\n          }\n\nslutt<\/code><\/pre>\n\n\n\n<p>\u00a0Helt til slutt hadde vi allerede et returresultat. Og en god vane er \u00e5 gj\u00f8re dette steg for steg og teste hver endring. Du kan erstatte denne if-blokken med en switch case, og det vil se bedre ut umiddelbart, og du trenger ikke \u00e5 sjekke alle ifs hver gang. Det ville se slik ut:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">def vanning_info(anlegg)\n\nswich plant.class.to_string\n\ncase Suculent, Kaktus\n\n     { vannmengde: \"Litt \" , howto: \"Fra bunnen\", vanning_varighet: \"2 uker\" }\n\ncase Alocasia, Maranta\n\n     { vannmengde: \"Stor mengde\", howto: \"Som du foretrekker\", vanning_varighet: \"5 dager\" }\n\ncase Peperomia\n\n     { water_amount: \"Dicent amount\",\n\n          how_to: \"Fra bunnen! De liker ikke vann p\u00e5 bladene\",\n\n          vanning_varighet: \"1 uke\" }\n\nellers\n\n     { water_amount: \"Dicent amount\",\n\n            how_to: \"Som du foretrekker\",\n\n       vanning_varighet: \"1 uke\" }\n\nslutt\n\nend<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>Og s\u00e5 kan du bruke <b>Erstatter den betingede instruksjonspolymorfismen<\/b>. Dette er for \u00e5 lage en klasse med en funksjon som returnerer riktig verdi og bytter dem p\u00e5 riktig plass.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">klasse Suculent\n\n...\n\ndef vanning_info()\n\n     return { wateramount: \"Litt \" , howto: \"Fra bunnen\", vanning_varighet: \"2 uker\" }\n\nend\n\nend\n\nklasse Kaktus\n\n...\n\ndef vanning_info()\n\n     return { wateramount: \"Litt \" , howto: \"Fra bunnen\", vanning_varighet: \"2 uker\" }\n\nend\n\nend\n\nklasse Alocasia\n\n...\n\ndef vanning_info\n\n     return { wateramount: \"Stor mengde\", howto: \"Som du foretrekker\", vanning_varighet: \"5 dager\" }\n\nend\n\nend\n\nklasse Maranta\n\n...\n\ndef vanning_info\n\n     return { wateramount: \"Stor mengde\", howto: \"Som du foretrekker\", vanning_varighet: \"5 dager\" }\n\nend\n\nend\n\nklasse Peperomia\n\n...\n\ndef vanning_info\n\n     return { water_amount: \"Dicent amount\",\n\n      how_to: \"Fra bunnen! De liker ikke vann p\u00e5 bladene\",\n\n      vanning_varighet: \"1 uke\" }\n\nslutt\n\nend\n\nklassen Plant\n\n...\n\ndef vanning_info\n\n     return { water_amount: \"Dicent amount\",\n\n              how_to: \"Som du foretrekker\",\n\n              vanning_varighet: \"1 uke\" }\n\nslutt\n\nend<\/code><\/pre>\n\n\n\n<p>Og i hovedfunksjonen watering_infofunction vil koden se slik ut:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">def vanning_info(anlegg)\n\n    plant.map(&amp;:vanning_info)\n\nend<\/code><\/pre>\n\n\n\n<p>Denne funksjonen kan selvf\u00f8lgelig fjernes og erstattes med innholdet. Med dette eksemplet \u00f8nsket jeg \u00e5 presentere den generelle <strong>refaktoriseringsm\u00f8nster<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sammendrag<\/h2>\n\n\n\n<p><strong>Refaktorisering<\/strong> er et stort tema. Jeg h\u00e5per denne artikkelen var et insentiv til \u00e5 lese mer. Disse <strong>ferdigheter i refaktorisering<\/strong> hjelpe deg med \u00e5 fange opp feil og forbedre din \"clean code workshop\". Jeg anbefaler \u00e5 lese Martins bok (Improving the Design of Existing Code), som er et ganske grunnleggende og nyttig sett med regler for <strong>refaktorisering<\/strong>. Forfatteren viser ulike transformasjoner trinn for trinn med en full forklaring og motivasjon og tips om hvordan du kan unng\u00e5 feil i <strong>refaktorisering<\/strong>. P\u00e5 grunn av sin allsidighet er det en herlig bok for frontend- og <strong>backend-utviklere<\/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=\"Bli junior Ruby-utvikler\"\/><\/a><\/figure>\n\n\n\n<p><strong>Les mer<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/graphql-ruby-what-about-performance\">GraphQL Ruby. Hva med ytelse?<\/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-utvikling med TMUX, Vim, Fzf + Ripgrep<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Kanskje skriver jeg om noe som er \u00e5penbart for mange, men kanskje ikke for alle. Refaktorering er et komplisert tema, synes jeg, fordi det handler om \u00e5 endre koden uten \u00e5 p\u00e5virke hvordan den fungerer.<\/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\/nb\/blogg\/en-rask-innforing-i-refaktorering-for-nybegynnere\/\" \/>\n<meta property=\"og:locale\" content=\"nb_NO\" \/>\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\/nb\/blogg\/en-rask-innforing-i-refaktorering-for-nybegynnere\/\" \/>\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\":\"nb-NO\",\"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\":\"nb-NO\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/a-quick-primer-on-refactoring-for-beginners\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nb-NO\",\"@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\":\"nb-NO\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nb-NO\",\"@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\":\"nb-NO\",\"@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\\\/nb\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"En rask innf\u00f8ring i refaktorering for nybegynnere - 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\/nb\/blogg\/en-rask-innforing-i-refaktorering-for-nybegynnere\/","og_locale":"nb_NO","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\/nb\/blogg\/en-rask-innforing-i-refaktorering-for-nybegynnere\/","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":"nb-NO","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 rask innf\u00f8ring i refaktorering for nybegynnere - 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":"nb-NO","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/a-quick-primer-on-refactoring-for-beginners\/"]}]},{"@type":"ImageObject","inLanguage":"nb-NO","@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":"nb-NO"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"nb-NO","@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":"nb-NO","@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\/nb\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts\/3016","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/comments?post=3016"}],"version-history":[{"count":12,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts\/3016\/revisions"}],"predecessor-version":[{"id":7707,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/posts\/3016\/revisions\/7707"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/media\/3017"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/media?parent=3016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/categories?post=3016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/nb\/wp-json\/wp\/v2\/tags?post=3016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}