{"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-snabb-introduktion-till-refaktorisering-for-nyborjare","status":"publish","type":"post","link":"https:\/\/thecodest.co\/sv\/blog\/a-quick-primer-on-refactoring-for-beginners\/","title":{"rendered":"En snabb introduktion till refaktorisering f\u00f6r nyb\u00f6rjare"},"content":{"rendered":"<p>D\u00e4rf\u00f6r \u00e4r det obegripligt f\u00f6r vissa att <strong>Refaktorisering<\/strong> \u00e4r faktiskt ett omr\u00e5de inom programmering, och det \u00e4r ocks\u00e5 en mycket viktig del av programmerarens arbete. Koden \u00e4r i st\u00e4ndig utveckling, den kommer att modifieras s\u00e5 l\u00e4nge det finns m\u00f6jlighet att l\u00e4gga till nya funktioner. Den kan dock anta en form som inte l\u00e4ngre g\u00f6r det m\u00f6jligt att effektivt l\u00e4gga till nya funktioner och det skulle d\u00e5 vara enklare att skriva om hela programmet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vad \u00e4r refaktorisering?<\/h2>\n\n\n\n<p>Vanligtvis f\u00e5r man svaret att det handlar om att \u00e4ndra kodens struktur genom att till\u00e4mpa en serie refaktoriseringstransformationer utan att p\u00e5verka kodens observerbara beteende. Detta \u00e4r sant. Nyligen kom jag ocks\u00e5 \u00f6ver en definition av <b>Martin Fowler<\/b> i sin bok <b>\"F\u00f6rb\u00e4ttra utformningen av befintlig kod\"<\/b> d\u00e4r han beskriver <strong>Refaktorisering<\/strong> som \"att g\u00f6ra stora f\u00f6r\u00e4ndringar i sm\u00e5 steg\". Han beskriver <strong>Refaktorisering<\/strong> som en kod\u00e4ndring som inte p\u00e5verkar dess funktion, men han betonar att det m\u00e5ste g\u00f6ras i sm\u00e5 steg.<\/p>\n\n\n\n<p>Boken f\u00f6respr\u00e5kar ocks\u00e5 att <strong>Refaktorisering<\/strong> inte p\u00e5verkar kodens funktion och p\u00e5pekar att det inte har n\u00e5gon effekt p\u00e5 att klara testerna vid n\u00e5gon tidpunkt. Den beskriver steg f\u00f6r steg hur man p\u00e5 ett s\u00e4kert s\u00e4tt utf\u00f6r <strong>Refaktorisering<\/strong>. Jag gillade hans bok eftersom den beskriver enkla knep som kan anv\u00e4ndas i det dagliga arbetet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Varf\u00f6r beh\u00f6ver vi refaktorisering?<\/h2>\n\n\n\n<p>&nbsp;Oftast kan du beh\u00f6va det n\u00e4r du vill inf\u00f6ra en ny funktionalitet och koden i sin nuvarande version inte till\u00e5ter det eller det skulle vara sv\u00e5rare utan \u00e4ndringar i koden. Det \u00e4r ocks\u00e5 anv\u00e4ndbart i fall d\u00e4r det \u00e4r ol\u00f6nsamt tidsm\u00e4ssigt att l\u00e4gga till fler funktioner, det vill s\u00e4ga att det skulle vara snabbare att skriva om koden fr\u00e5n grunden. Jag tror att det ibland gl\u00f6ms bort att <strong>Refaktorisering<\/strong> kan g\u00f6ra koden renare och mer l\u00e4sbar. Martin skriver i sin bok hur han utf\u00f6r refaktorisering n\u00e4r han k\u00e4nner obehagliga lukter i koden och, som han uttrycker det, <b>\"det l\u00e4mnar alltid utrymme f\u00f6r det b\u00e4ttre\"<\/b>. Och han \u00f6verraskade mig h\u00e4r genom att se refaktorisering som en del av det dagliga kodarbetet. F\u00f6r mig \u00e4r koderna ofta obegripliga, att l\u00e4sa den \u00e4r lite av en upplevelse eftersom koden ofta \u00e4r ointuitiv.<\/p>\n\n\n\n<p>Det som utm\u00e4rker ett v\u00e4l utformat program \u00e4r dess <b>Modularitet<\/b>Tack vare detta r\u00e4cker det med att k\u00e4nna till en liten del av koden f\u00f6r att g\u00f6ra de flesta \u00e4ndringar. Modularitet g\u00f6r det ocks\u00e5 l\u00e4ttare f\u00f6r nya personer att komma in och b\u00f6rja arbeta mer effektivt. F\u00f6r att uppn\u00e5 denna modularitet m\u00e5ste relaterade programelement grupperas tillsammans, och kopplingarna m\u00e5ste vara begripliga och l\u00e4tta att hitta. Det finns ingen enskild tumregel f\u00f6r hur detta kan g\u00f6ras. Allt eftersom du vet och f\u00f6rst\u00e5r mer och mer av hur koden \u00e4r t\u00e4nkt att fungera b\u00e4ttre kan du gruppera elementen, men ibland m\u00e5ste du ocks\u00e5 testa och kontrollera.<\/p>\n\n\n\n<p>En av reglerna f\u00f6r refaktorisering i <b>YAGNI<\/b>\u00e4r en akronym f\u00f6r \"You Aren't Gonna Need It\" och h\u00e4rstammar fr\u00e5n <b>eXtreme-programmering (XP) <\/b>anv\u00e4nds fr\u00e4mst i <strong><a href=\"https:\/\/thecodest.co\/sv\/blog\/how-to-implement-agile-methodology\/\">Agil<\/a> <a href=\"https:\/\/thecodest.co\/sv\/blog\/8-key-questions-to-ask-your-software-development-outsourcing-partner\/\">Utveckling av programvara<\/a> lag<\/strong>. F\u00f6r att g\u00f6ra en l\u00e5ng historia kort, <b>YAGNI<\/b> s\u00e4ger att endast aktuella saker ska g\u00f6ras. Det betyder i princip att \u00e4ven om n\u00e5got kan beh\u00f6vas i framtiden, s\u00e5 ska det inte g\u00f6ras just nu.  Men vi kan inte heller krossa ytterligare till\u00e4gg och det \u00e4r h\u00e4r modularitet blir viktigt.<\/p>\n\n\n\n<p>N\u00e4r man talar om <strong>Refaktorisering<\/strong>m\u00e5ste ett av de viktigaste inslagen n\u00e4mnas, n\u00e4mligen testerna. I <strong>Refaktorisering<\/strong>m\u00e5ste vi veta att koden fortfarande fungerar, eftersom <strong>Refaktorisering<\/strong> \u00e4ndrar inte hur den fungerar, utan dess struktur, s\u00e5 alla tester m\u00e5ste godk\u00e4nnas. Det \u00e4r b\u00e4st att k\u00f6ra tester f\u00f6r den del av koden som vi arbetar med efter varje liten f\u00f6r\u00e4ndring. Det ger <a href=\"https:\/\/thecodest.co\/sv\/blog\/why-us-companies-are-opting-for-polish-developers\/\">oss<\/a> en bekr\u00e4ftelse p\u00e5 att allt fungerar som det ska och det f\u00f6rkortar tiden f\u00f6r hela operationen. Det \u00e4r detta som Martin pratar om i sin bok - k\u00f6r tester s\u00e5 ofta som m\u00f6jligt f\u00f6r att inte beh\u00f6va ta ett steg tillbaka och sl\u00f6sa tid p\u00e5 att leta efter en transformation som f\u00f6rst\u00f6rde n\u00e5got.<\/p>\n\n\n\n<p><strong><a href=\"https:\/\/thecodest.co\/sv\/dictionary\/what-is-code-refactoring\/\">Refaktorisering av kod<\/a><\/strong> utan testning \u00e4r jobbigt och det finns en stor risk att n\u00e5got g\u00e5r fel. Om det \u00e4r m\u00f6jligt \u00e4r det b\u00e4st att l\u00e4gga till \u00e5tminstone n\u00e5gra grundl\u00e4ggande tester som ger oss en liten f\u00f6rs\u00e4kran om att koden fungerar.<\/p>\n\n\n\n<p>De omvandlingar som anges nedan \u00e4r endast exempel men de \u00e4r till stor hj\u00e4lp vid daglig programmering:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Funktionsextraktion och variabelextraktion - om funktionen \u00e4r f\u00f6r l\u00e5ng, kontrollera om det finns n\u00e5gra mindre funktioner som kan extraheras. Detsamma g\u00e4ller f\u00f6r l\u00e5nga rader. Dessa omvandlingar kan hj\u00e4lpa till att hitta dubbletter i koden. Tack vare Small Functions blir koden tydligare och mer begriplig,<\/li>\n\n\n\n<li>Byte av namn p\u00e5 funktioner och variabler - att anv\u00e4nda r\u00e4tt namngivningskonvention \u00e4r viktigt f\u00f6r god programmering. V\u00e4l valda variabelnamn kan ber\u00e4tta mycket om koden,<\/li>\n\n\n\n<li>Gruppering av funktionerna i en klass - denna \u00e4ndring \u00e4r till hj\u00e4lp n\u00e4r tv\u00e5 klasser utf\u00f6r liknande operationer eftersom det kan f\u00f6rkorta klassens l\u00e4ngd,<\/li>\n\n\n\n<li>\u00c5sidos\u00e4tta den n\u00e4stlade satsen - om villkoret st\u00e4mmer f\u00f6r ett specialfall, utf\u00e4rda en retursats n\u00e4r villkoret intr\u00e4ffar. Dessa typer av tester kallas ofta f\u00f6r guard clause. Om du ers\u00e4tter en kapslad villkorlig sats med en exit-sats \u00e4ndras betoningen i koden. If-else-konstruktionen tilldelar b\u00e5da varianterna samma vikt. F\u00f6r den som l\u00e4ser koden \u00e4r det ett budskap om att var och en av dem \u00e4r lika sannolik och viktig,<\/li>\n\n\n\n<li>Inf\u00f6ra ett specialfall - om du anv\u00e4nder vissa villkor i din kod m\u00e5nga g\u00e5nger kan det vara v\u00e4rt att skapa en separat struktur f\u00f6r dem. Som ett resultat kan de flesta specialfallskontroller ers\u00e4ttas med enkla funktionsanrop. Ofta \u00e4r det vanliga v\u00e4rdet som kr\u00e4ver s\u00e4rskild bearbetning null. D\u00e4rf\u00f6r kallas detta m\u00f6nster ofta f\u00f6r nollobjektet. Detta tillv\u00e4gag\u00e5ngss\u00e4tt kan dock anv\u00e4ndas i alla specialfall,<\/li>\n\n\n\n<li>Ers\u00e4ttning av den villkorliga instruktionspolymorfismen.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Exempel<\/h2>\n\n\n\n<p>Detta \u00e4r en artikel om <strong>Refaktorisering<\/strong> och ett exempel beh\u00f6vs. Jag vill visa ett enkelt refaktoriseringsexempel nedan med anv\u00e4ndning av <b>\u00c5sidos\u00e4tta det n\u00e4stlade uttalandet<\/b> och <b>Ers\u00e4ttning av den villkorliga instruktionspolymorfismen<\/b>. L\u00e5t oss s\u00e4ga att vi har en programfunktion som returnerar en <a href=\"https:\/\/thecodest.co\/sv\/blog\/hash-to-use-or-not-to-use\/\">hash<\/a> med information om hur man vattnar v\u00e4xter i verkliga livet. S\u00e5dan information skulle f\u00f6rmodligen finnas i modellen, men i det h\u00e4r exemplet har vi den i funktionen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">def vattning_info(anl\u00e4ggning)\n     resultat = {}\n     om anl\u00e4ggningen.\u00e4r_en? Sukulent || v\u00e4xt.\u00e4r_en? Kaktus\n         resultat = { vatten_m\u00e4ngd: \"Lite grann\" , how_to: \"Fr\u00e5n botten\", vattning_duration: \"2 veckor\" }\n     elsif plant.is_a? Alocasia || plant.is_a? Maranta\n         resultat = { vattenm\u00e4ngd: \"Stor m\u00e4ngd\", hur_to: \"Som du vill\", vattning_duration: \"5 dagar\" }\n     elsif plant.is_a? Peperomia\n         result = { water_amount: \"Dicent m\u00e4ngd\",\n             hur_till: \"Fr\u00e5n botten! de gillar inte vatten p\u00e5 bladen\",\n             vattning_duration: \"1 vecka\" }\n     annat\n         resultat = { vattenm\u00e4ngd: \"Dicent m\u00e4ngd\",\n             how_to: \"Som du vill\",\n             vattning_duration: \"1 vecka\"\n             }\n     slut\n     returnera resultat\n slut\n<\/code><\/pre>\n\n\n\n<p>Tanken \u00e4r att f\u00f6r\u00e4ndra om man ska \u00e5terv\u00e4nda:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">om plant.isa? Suculent || plant.isa? Kaktus\n\n     resultat = { vattenm\u00e4ngd: \"Lite grann\" , howto: \"Fr\u00e5n botten\",\n<\/code><\/pre>\n\n\n\n<p>Till<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>return { vatten_m\u00e4ngd: \"Lite grann\" , how_to: \"Fr\u00e5n botten\",vattning_duration: \"2 veckor\" } if plant.is_a? Sukulent || plant.is_a? Kaktus<\/code><\/code> &lt;\/code<\/pre>\n\n\n\n<p>returnera { vatten<em>m\u00e4ngd: \"Lite grann\" , hur<\/em>till: \"Fr\u00e5n botten\",vattning<em>varaktighet: \"2 veckor\" } if plant.is<\/em>a? Sukulent || plant.is_a? Kaktus<\/p>\n\n\n\n<p>Och s\u00e5 vidare med allt, tills vi kommer till en funktion som ser ut s\u00e5 h\u00e4r:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">def vattning_info(anl\u00e4ggning)\n\nreturnera resultat = { vattenm\u00e4ngd: \"Lite grann\" , howto: \"Fr\u00e5n botten\", vattningduration: \"2 veckor\" } if plant.isa? Sukulent || plant.is_a? Kaktus\n\nreturn resultat = { vattenm\u00e4ngd: \"Stor m\u00e4ngd\", howto: \"Som du vill\", vattningens varaktighet: \"5 dagar\" } if plant.isa? Alocasia || plant.is_a? Maranta\n\nreturn resultat = { vattenm\u00e4ngd: \"Dicent m\u00e4ngd\",\n\n          hur man g\u00f6r: \"Fr\u00e5n botten! de gillar inte vatten p\u00e5 bladen\",\n          vattnets varaktighet: \"1 vecka\" } if plant.is_a? Peperomia\n\nreturn resultat = { vattenm\u00e4ngd: \"Dicent m\u00e4ngd\",\n\n          hur_to: \"Som du f\u00f6redrar\",\n\n          vattning_duration: \"1 vecka\"\n\n          }\n\nslut<\/code><\/pre>\n\n\n\n<p>\u00a0I slutet hade vi redan ett returresultat. Och en god vana \u00e4r att g\u00f6ra detta steg f\u00f6r steg och testa varje f\u00f6r\u00e4ndring. Du kan ers\u00e4tta det h\u00e4r if-blocket med ett switch-fall och det skulle se b\u00e4ttre ut direkt, och du skulle inte beh\u00f6va kontrollera alla if:ar varje g\u00e5ng. Det skulle se ut s\u00e5 h\u00e4r:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">def vattning_info(anl\u00e4ggning)\n\nswich v\u00e4xt.klass.till_str\u00e4ng\n\nfall Suckulent, Kaktus\n\n     { vattenm\u00e4ngd: \"Lite grann\" , howto: \"Fr\u00e5n botten\", vattning_duration: \"2 veckor\" }\n\nfall Alocasia, Maranta\n\n     { vattenm\u00e4ngd: \"Stor m\u00e4ngd\", howto: \"Som du vill\", vattning_duration: \"5 dagar\" }\n\nfall Peperomia\n\n     { vattenm\u00e4ngd: \"Dicent m\u00e4ngd\",\n\n          hur_till: \"Fr\u00e5n botten! de gillar inte vatten p\u00e5 bladen\",\n\n          vattning_duration: \"1 vecka\" }\n\nannat\n\n     { vatten_belopp: \"Dicent m\u00e4ngd\",\n\n            hur_to: \"Som du f\u00f6redrar\",\n\n       vattning_duration: \"1 vecka\" }\n\nSlut\n\nslut<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>Och sedan kan du anv\u00e4nda <b>Ers\u00e4tta den villkorliga instruktionen Polymorfism<\/b>. Detta f\u00f6r att skapa en klass med en funktion som returnerar r\u00e4tt v\u00e4rde och byter ut dem p\u00e5 r\u00e4tt plats.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">klass Suckulenta\n\n...\n\ndef vattning_info()\n\n     return { vattenm\u00e4ngd: \"Lite grann\" , howto: \"Fr\u00e5n botten\" , watering_duration: \"2 veckor\" }\n\nslut\n\nslut\n\nklass Cactus\n\n...\n\ndef vattning_info()\n\n     return { vattenm\u00e4ngd: \"Lite grann\" , howto: \"Fr\u00e5n botten\" , watering_duration: \"2 veckor\" }\n\nslut\n\nslut\n\nklass Alocasia\n\n...\n\ndef vattning_info\n\n     return { vattenm\u00e4ngd: \"Stor m\u00e4ngd\", howto: \"Som du f\u00f6redrar\", vattning_duration: \"5 dagar\" }\n\nslut\n\nslut\n\nklass Maranta\n\n...\n\ndef vattning_info\n\n     return { vattenm\u00e4ngd: \"Stor m\u00e4ngd\", howto: \"Som du f\u00f6redrar\", vattning_duration: \"5 dagar\" }\n\nslut\n\nslut\n\nklass Peperomia\n\n...\n\ndef vattning_info\n\n     return { vatten_belopp: \"Dicent belopp\",\n\n      hur_till: \"Fr\u00e5n botten! De gillar inte vatten p\u00e5 bladen\",\n\n      vattning_duration: \"1 vecka\" }\n\nslut\n\nslut\n\nklass V\u00e4xt\n\n...\n\ndef vattning_info\n\n     return { vatten_belopp: \"Dicent belopp\",\n\n              hur_till: \"Som du f\u00f6redrar\",\n\n              vattning_duration: \"1 vecka\" }\n\nSlut\n\nslut<\/code><\/pre>\n\n\n\n<p>Och i huvudfunktionen watering_infofunction kommer koden att se ut s\u00e5 h\u00e4r:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">def vattning_info(anl\u00e4ggning)\n\n    v\u00e4xt.karta(&amp;:vattning_info)\n\nslut<\/code><\/pre>\n\n\n\n<p>Naturligtvis kan denna funktion tas bort och ers\u00e4ttas med dess inneh\u00e5ll. Med det h\u00e4r exemplet ville jag presentera den allm\u00e4nna <strong>m\u00f6nster f\u00f6r refaktorisering<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sammanfattning<\/h2>\n\n\n\n<p><strong>Refaktorisering<\/strong> \u00e4r ett stort \u00e4mne. Jag hoppas att den h\u00e4r artikeln var ett incitament att l\u00e4sa mer. Dessa <strong>refaktoriseringskompetens<\/strong> hj\u00e4lpa dig att f\u00e5nga dina buggar och f\u00f6rb\u00e4ttra din rena kodverkstad. Jag rekommenderar att du l\u00e4ser Martins bok (Improving the Design of Existing Code), som \u00e4r en ganska grundl\u00e4ggande och anv\u00e4ndbar upps\u00e4ttning regler f\u00f6r <strong>Refaktorisering<\/strong>. F\u00f6rfattaren visar olika omvandlingar steg f\u00f6r steg med en fullst\u00e4ndig f\u00f6rklaring och motivation och tips om hur man undviker misstag i <strong>Refaktorisering<\/strong>. P\u00e5 grund av sin m\u00e5ngsidighet \u00e4r det en f\u00f6rtjusande bok f\u00f6r frontend- och <strong>backend-utvecklare<\/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-utvecklare\"\/><\/a><\/figure>\n\n\n\n<p><strong>L\u00e4s mer om<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/graphql-ruby-what-about-performance\">GraphQL Ruby. Hur \u00e4r det med prestanda?<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\">R\u00e4ls och andra transportmedel<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\">Rails-utveckling med TMUX, Vim, Fzf + Ripgrep<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Kanske skriver jag om n\u00e5got som \u00e4r sj\u00e4lvklart f\u00f6r m\u00e5nga, men kanske inte f\u00f6r alla. Refaktorisering \u00e4r, tycker jag, ett komplicerat \u00e4mne eftersom det handlar om att f\u00f6r\u00e4ndra koden utan att p\u00e5verka dess 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\/sv\/blogg\/en-snabb-introduktion-till-refaktorisering-for-nyborjare\/\" \/>\n<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/blogg\/en-snabb-introduktion-till-refaktorisering-for-nyborjare\/\" \/>\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 minuter\" \/>\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\":\"sv-SE\",\"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\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/a-quick-primer-on-refactoring-for-beginners\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@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\":\"sv-SE\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@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\":\"sv-SE\",\"@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\\\/sv\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"En snabb introduktion till refaktorisering f\u00f6r nyb\u00f6rjare - 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\/sv\/blogg\/en-snabb-introduktion-till-refaktorisering-for-nyborjare\/","og_locale":"sv_SE","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\/sv\/blogg\/en-snabb-introduktion-till-refaktorisering-for-nyborjare\/","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 minuter"},"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":"sv-SE","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 snabb introduktion till refaktorisering f\u00f6r nyb\u00f6rjare - 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":"sv-SE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/a-quick-primer-on-refactoring-for-beginners\/"]}]},{"@type":"ImageObject","inLanguage":"sv-SE","@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":"sv-SE"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"sv-SE","@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":"sv-SE","@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\/sv\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/posts\/3016","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/comments?post=3016"}],"version-history":[{"count":12,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/posts\/3016\/revisions"}],"predecessor-version":[{"id":7707,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/posts\/3016\/revisions\/7707"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/media\/3017"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/media?parent=3016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/categories?post=3016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/tags?post=3016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}