{"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":"kiire-algkursus-refaktooringu-kohta-algajatele","status":"publish","type":"post","link":"https:\/\/thecodest.co\/et\/blog\/a-quick-primer-on-refactoring-for-beginners\/","title":{"rendered":"Refaktooringu kiire algkursus algajatele"},"content":{"rendered":"<p>Seet\u00f5ttu on m\u00f5nede jaoks arusaamatu, et <strong>refaktooring<\/strong> on tegelikult \u00fcks programmeerimise valdkond ja see on ka v\u00e4ga oluline osa programmeerija t\u00f6\u00f6st. Kood on pidevalt arenev, seda muudetakse niikaua, kuni on v\u00f5imalus lisada uusi funktsioone. Samas v\u00f5ib see v\u00f5tta sellise kuju, mis ei v\u00f5imalda enam t\u00f5husalt uusi funktsionaalsusi lisada ja lihtsam oleks kogu programm \u00fcmber kirjutada.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mis on refaktooring?<\/h2>\n\n\n\n<p>Tavaliselt on vastus, mida te kuulete, et tegemist on koodi struktuuri muutmisega, rakendades rea refaktooring-transformatsioone, ilma et see m\u00f5jutaks koodi j\u00e4lgitavat k\u00e4itumist. See on t\u00f5si. Hiljuti puutusin ma ka kokku m\u00e4\u00e4ratlusega, mille autor on <b>Martin Fowler<\/b> oma raamatus <b>\"Olemasoleva koodeksi kujunduse parandamine\"<\/b> kus ta kirjeldab <strong>refaktooring<\/strong> kui \"suurte muudatuste tegemine v\u00e4ikeste sammudega\". Ta kirjeldab <strong>refaktooring<\/strong> koodimuudatusena, mis ei m\u00f5juta selle toimimist, kuid ta r\u00f5hutab, et seda tuleb teha v\u00e4ikeste sammude kaupa.<\/p>\n\n\n\n<p>Raamat toetab ka seda, et <strong>refaktooring<\/strong> ei m\u00f5juta koodi toimimist ja juhib t\u00e4helepanu sellele, et see ei m\u00f5juta mingil juhul testide l\u00e4bimist. Selles kirjeldatakse samm-sammult, kuidas ohutult teostada <strong>refaktooring<\/strong>. Mulle meeldis tema raamat, sest selles kirjeldatakse lihtsaid nippe, mida saab kasutada igap\u00e4evat\u00f6\u00f6s.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Miks me vajame refaktooringut?<\/h2>\n\n\n\n<p>&nbsp;K\u00f5ige sagedamini v\u00f5ib seda vaja minna siis, kui soovite v\u00f5tta kasutusele uue funktsionaalsuse ja kood oma praeguses versioonis seda ei v\u00f5imalda v\u00f5i oleks see ilma koodi muutmata keerulisem. Samuti on see kasulik juhtudel, kui uute funktsioonide lisamine ei ole ajaliselt tasuv, st oleks kiirem kirjutada kood nullist \u00fcmber. Ma arvan, et m\u00f5nikord unustatakse, et <strong>refaktooring<\/strong> v\u00f5ib muuta koodi puhtamaks ja loetavamaks. Martin kirjutab oma raamatus, kuidas ta teeb refaktooringut, kui ta tunneb koodis ebameeldivaid l\u00f5hnu ja kuidas ta seda v\u00e4ljendab, <b>\"see j\u00e4tab alati ruumi paremale\"<\/b>. Ja ta \u00fcllatas mind siin, n\u00e4hes refaktoorimist kui igap\u00e4evase koodit\u00f6\u00f6 elementi. Minu jaoks on koodid sageli arusaamatud, selle lugemine on natuke kogemus, kuna kood on sageli ebat\u00e4pne.<\/p>\n\n\n\n<p>H\u00e4sti kavandatud programmi erip\u00e4raks on selle <b>modulaarsus<\/b>, t\u00e4nu millele piisab enamiku muudatuste tegemiseks vaid v\u00e4ikese osa koodi tundmisest. Modulaarsus lihtsustab ka uute inimeste sisseelamist ja t\u00f5husamat t\u00f6\u00f6le asumist. Modulaarsuse saavutamiseks peavad omavahel seotud programmi elemendid olema grupeeritud, kusjuures seosed peavad olema arusaadavad ja kergesti leitavad. Ei ole olemas \u00fchtset rusikareeglit, kuidas seda teha. Kui te teate ja m\u00f5istate \u00fcha paremini, kuidas kood peaks toimima, saate elemente r\u00fchmitada, kuid m\u00f5nikord tuleb ka testida ja kontrollida.<\/p>\n\n\n\n<p>\u00dcks refaktooringu reeglitest on <b>YAGNI<\/b>, see on akron\u00fc\u00fcm s\u00f5nast \"You Aren't Gonna't Need It\" ja tuleneb <b>eXtreme programmeerimine (XP) <\/b>kasutatakse peamiselt <strong><a href=\"https:\/\/thecodest.co\/et\/blog\/how-to-implement-agile-methodology\/\">Agiilne<\/a> <a href=\"https:\/\/thecodest.co\/et\/blog\/8-key-questions-to-ask-your-software-development-outsourcing-partner\/\">tarkvaraarendus<\/a> meeskonnad<\/strong>. Pikk lugu l\u00fchidalt, <b>YAGNI<\/b> \u00fctleb, et teha tuleks ainult ajakohaseid asju. See t\u00e4hendab p\u00f5him\u00f5tteliselt seda, et isegi kui midagi v\u00f5ib tulevikus vaja minna, ei tohiks seda praegu teha.  Kuid me ei saa ka edasisi laiendusi maha suruda ja siinkohal muutub modulaarsus oluliseks.<\/p>\n\n\n\n<p>R\u00e4\u00e4kides <strong>refaktooring<\/strong>tuleb mainida \u00fchte k\u00f5ige olulisemat elementi, st teste. Veebilehel <strong>refaktooring<\/strong>, peame teadma, et kood ikka veel t\u00f6\u00f6tab, sest <strong>refaktooring<\/strong> ei muuda selle t\u00f6\u00f6d, vaid selle struktuuri, nii et k\u00f5ik testid tuleb l\u00e4bida. K\u00f5ige parem on p\u00e4rast iga v\u00e4ikest \u00fcmberkujundamist k\u00e4ivitada testid selle koodi osa jaoks, millega me t\u00f6\u00f6tame. See annab <a href=\"https:\/\/thecodest.co\/et\/blog\/why-us-companies-are-opting-for-polish-developers\/\">us<\/a> kinnitus, et k\u00f5ik toimib nii, nagu peab, ja see l\u00fchendab kogu operatsiooni aega. Sellest r\u00e4\u00e4gib Martin oma raamatus - tehke teste nii tihti kui v\u00f5imalik, et mitte astuda sammu tagasi ja raisata aega, et otsida \u00fcmberkujundamist, mis midagi rikkis.<\/p>\n\n\n\n<p><strong><a href=\"https:\/\/thecodest.co\/et\/dictionary\/what-is-code-refactoring\/\">Koodide refaktooring<\/a><\/strong> ilma katsetamiseta on valus ja on suur v\u00f5imalus, et midagi l\u00e4heb valesti. Kui see on v\u00f5imalik, oleks parem lisada v\u00e4hemalt m\u00f5ned p\u00f5hilised testid, mis annavad meile v\u00e4ikese kindlustunde, et kood t\u00f6\u00f6tab.<\/p>\n\n\n\n<p>Allpool loetletud teisendused on ainult n\u00e4ited, kuid need on t\u00f5esti kasulikud igap\u00e4evases programmeerimises:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Funktsiooni v\u00e4ljav\u00f5tmine ja muutujate v\u00e4ljav\u00f5tmine - kui funktsioon on liiga pikk, kontrollige, kas on mingeid v\u00e4iksemaid funktsioone, mida saaks v\u00e4lja v\u00f5tta. Sama kehtib ka pikkade ridade kohta. Need teisendused v\u00f5ivad aidata leida koodist dubleerimisi. T\u00e4nu v\u00e4ikestele funktsioonidele muutub kood selgemaks ja arusaadavamaks,<\/li>\n\n\n\n<li>Funktsioonide ja muutujate \u00fcmbernimetamine - hea programmeerimise seisukohalt on oluline kasutada \u00f5iget nimetamiskonventsiooni. Muutujate nimed, kui need on h\u00e4sti valitud, v\u00f5ivad palju koodi kohta \u00f6elda,<\/li>\n\n\n\n<li>Funktsioonide r\u00fchmitamine klassi - see muudatus on kasulik, kui kaks klassi t\u00e4idavad sarnaseid operatsioone, sest see v\u00f5ib l\u00fchendada klassi pikkust,<\/li>\n\n\n\n<li>Sisestatud avalduse \u00fcletamine - kui tingimus kontrollib erijuhtumi puhul, v\u00e4ljastage tingimuse ilmnemisel tagastusavalduse. Seda t\u00fc\u00fcpi teste nimetatakse sageli kaitseklausliks. Nested Conditional Statement'i asendamine Exit Statement'iga muudab koodi r\u00f5huasetust. Konstruktsioon if-else omistab m\u00f5lemale variandile v\u00f5rdse kaalu. Koodi lugeva inimese jaoks on see s\u00f5num, et m\u00f5lemad on v\u00f5rdselt t\u00f5en\u00e4olised ja olulised,<\/li>\n\n\n\n<li>Erandjuhtumi tutvustamine - kui kasutate oma koodis m\u00f5nda tingimust palju kordi, v\u00f5ib tasuda nende jaoks luua eraldi struktuur. Selle tulemusena saab enamiku erijuhtumite kontrolle asendada lihtsate funktsioonik\u00f5nedega. Sageli on tavaline v\u00e4\u00e4rtus, mis n\u00f5uab erit\u00f6\u00f6tlust, null. Seet\u00f5ttu nimetatakse seda mustrit sageli nullobjektiks. Seda l\u00e4henemist v\u00f5ib aga kasutada igal erijuhtumil,<\/li>\n\n\n\n<li>Tingimuslike juhiste pol\u00fcmorfismi asendamine.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">N\u00e4ide<\/h2>\n\n\n\n<p>See on artikkel, mis k\u00e4sitleb <strong>refaktooring<\/strong> ja vaja on n\u00e4idet. Ma tahan n\u00e4idata allpool lihtsat refaktooringu n\u00e4idet, mille puhul on kasutatud <b>Sisestatud avalduse \u00fcletamine<\/b> ja <b>Tingimusjuhiste pol\u00fcmorfismi asendamine<\/b>. Oletame, et meil on programmifunktsioon, mis tagastab <a href=\"https:\/\/thecodest.co\/et\/blog\/hash-to-use-or-not-to-use\/\">hash<\/a> teabega selle kohta, kuidas taimi reaalselt kasta. Selline teave oleks t\u00f5en\u00e4oliselt mudelis, kuid selle n\u00e4ite puhul on see meil funktsioonis.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">def watering_info(plant)\n     result = {}\n     if plant.is_a? Suculent || plant.is_a? Kaktus\n         result = { water_amount: \", how_to: \"Altpoolt\", kastmise_kestus: \"2 n\u00e4dalat\" }\n     elsif plant.is_a? Alocasia || plant.is_a? Maranta\n         result = { water_amount: \"Big amount\", how_to: \"Nagu soovite\", kastmise_kestus: \"5 p\u00e4eva\" }\n     elsif plant.is_a? Peperomia\n         result = { water_amount: \"Dicent amount\",\n             how_to: \"Altpoolt! neile ei meeldi vesi lehtedel\",\n             watering_duration: \"1 week\" }\n     else\n         result = { water_amount: \"Dicent amount\",\n             how_to: \"Nagu soovite\",\n             watering_duration: \"1 n\u00e4dal\"\n             }\n     end\n     return result\n end\n<\/code><\/pre>\n\n\n\n<p>M\u00f5te on muuta, kui naasta:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"ruby\" class=\"language-ruby\">if plant.isa? Suculent || plant.isa? Cactus\n\n     result = { wateramount: \", howto: \",\n<\/code><\/pre>\n\n\n\n<p>aadressile<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>return { water_amount: \", how_to: \"Altpoolt\",watering_duration: \"2 n\u00e4dalat\" } if plant.is_a? Suculent || plant.is_a? Kaktus<\/code><\/code><\/pre>\n\n\n\n<p>return { vesi<em>summa: \"Natuke \" , kuidas<\/em>to: \"altpoolt\", kastmine<em>kestus: \"2 n\u00e4dalat\" } if plant.is<\/em>a? Suculent || plant.is_a? Kaktus<\/p>\n\n\n\n<p>Ja nii edasi, kuni j\u00f5uame funktsioonini, mis n\u00e4eb v\u00e4lja selline:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">def watering_info(plant)\n\nreturn result = { wateramount: \", howto: \"Altpoolt\", wateringduration: \"2 weeks\" } if plant.isa? Suculent || plant.is_a? Cactus\n\nreturn result = { wateramount: \"Big amount\", howto: \"As you prefer\", wateringduration: \"5 p\u00e4eva\" } if plant.isa? Alocasia || plant.is_a? Maranta\n\nreturn result = { water_amount: \"Dicent amount\",\n\n          howto: \"Altpoolt! nad ei armasta vett lehtedel\",\n          wateringduration: \"1 n\u00e4dal\" } if plant.is_a? Peperomia\n\nreturn result = { water_amount: \"Dicent amount\",\n\n          how_to: \"Nagu soovite\",\n\n          kastmise_kestus: \"1 n\u00e4dal\"\n\n          }\n\nend<\/code><\/pre>\n\n\n\n<p>\u00a0K\u00f5ige l\u00f5pus oli meil juba tagastustulemus. Ja hea harjumus on teha seda samm-sammult ja testida iga muudatust. Selle if ploki v\u00f5iks asendada switch case'iga ja see n\u00e4eks kohe paremini v\u00e4lja ning ei peaks iga kord k\u00f5iki if'e kontrollima. See n\u00e4eks v\u00e4lja nii:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">def watering_info(plant)\n\nswich plant.class.to_string\n\ncase Suculent, Cactus\n\n     { wateramount: \"Natuke \" , howto: \"Altpoolt\", watering_duration: \"2 n\u00e4dalat\" }\n\ncase Alocasia, Maranta\n\n     { wateramount: \"Big amount\", howto: \"Nagu soovite\", watering_duration: \"5 p\u00e4eva\" }\n\ncase Peperomia\n\n     { water_amount: \"Dicent amount\",\n\n          how_to: \"Altpoolt! neile ei meeldi vesi lehtedel\",\n\n          kastmise_kestus: \"1 n\u00e4dal\" }\n\nelse\n\n     { water_amount: \"Dicent amount\",\n\n            how_to: \"Nagu soovite\",\n\n       kastmise_kestus: \"1 n\u00e4dal\" }\n\nend\n\nend<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>Ja siis saate rakendada <b>Tingimuslike juhiste pol\u00fcmorfismi asendamine<\/b>. See on luua klass koos funktsiooniga, mis tagastab \u00f5ige v\u00e4\u00e4rtuse ja l\u00fclitab need \u00f5igetele kohtadele.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">klass Suculent\n\n...\n\ndef watering_info()\n\n     return { wateramount: \", howto: \"Alalt\", watering_duration: \"2 weeks\" }\n\nend\n\nend\n\nklass Cactus\n\n...\n\ndef watering_info()\n\n     return { wateramount: \", howto: \"Alalt\", watering_duration: \"2 weeks\" }\n\nend\n\nend\n\nklass Alocasia\n\n...\n\ndef watering_info\n\n     return { wateramount: \"Big amount\", howto: \"Nagu soovite\", watering_duration: \"5 days\" }\n\nend\n\nend\n\nklass Maranta\n\n...\n\ndef watering_info\n\n     return { wateramount: \"Big amount\", howto: \"Nagu soovite\", watering_duration: \"5 days\" }\n\nend\n\nend\n\nklass Peperomia\n\n...\n\ndef watering_info\n\n     return { water_amount: \"Dicent amount\",\n\n      how_to: \"Altpoolt! neile ei meeldi vesi lehtedel\",\n\n      kastmise_kestus: \"1 n\u00e4dal\" }\n\nend\n\nend\n\nklass Plant\n\n...\n\ndef watering_info\n\n     return { water_amount: \"Dicent amount\",\n\n              how_to: \"Nagu soovite\",\n\n              kastmise_kestus: \"1 n\u00e4dal\" }\n\nend\n\nend<\/code><\/pre>\n\n\n\n<p>Ja p\u00f5hilises watering_infofunction'is n\u00e4eb kood v\u00e4lja selline:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">def watering_info(plant)\n\n    plant.map(&amp;:watering_info)\n\nend<\/code><\/pre>\n\n\n\n<p>Loomulikult v\u00f5ib selle funktsiooni eemaldada ja asendada selle sisuga. Selle n\u00e4itega tahtsin esitada \u00fcldise <strong>refaktooringu muster<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kokkuv\u00f5te<\/h2>\n\n\n\n<p><strong>Refaktooring<\/strong> on suur teema. Ma loodan, et see artikkel oli ajendiks rohkem lugeda. Need <strong>refaktooringu oskused<\/strong> aitab teil leida oma vigu ja parandada oma puhta koodi t\u00f6\u00f6koda. Soovitan lugeda Martini raamatut (Improving the Design of Existing Code), mis on \u00fcsna p\u00f5hiline ja kasulik reeglistik <strong>refaktooring<\/strong>. Autor n\u00e4itab erinevaid \u00fcmberkujundusi samm-sammult koos t\u00e4ieliku selgituse ja motivatsiooniga ning n\u00f5uandeid, kuidas v\u00e4ltida vigu <strong>refaktooring<\/strong>. T\u00e4nu oma mitmek\u00fclgsusele on see meeldiv raamat frontendile ja <strong>backend arendajad<\/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=\"Hakka Junior Ruby arendajaks\"\/><\/a><\/figure>\n\n\n\n<p><strong>Loe edasi<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/graphql-ruby-what-about-performance\">GraphQL Ruby. Kuidas on tulemuslikkus?<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/rails-and-other-means-of-transport\">R\u00f6\u00f6pad ja muud transpordivahendid<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\">Railsi arendamine TMUX, Vim, Fzf + Ripgrep abil<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>V\u00f5ib-olla kirjutan millestki, mis on paljudele ilmselge, kuid v\u00f5ib-olla mitte k\u00f5igile. Refaktooring on minu arvates keeruline teema, sest see h\u00f5lmab koodi muutmist, ilma et see m\u00f5jutaks selle toimimist.<\/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\/et\/blogi\/kiire-algkursus-refaktooringu-kohta-algajatele\/\" \/>\n<meta property=\"og:locale\" content=\"et_EE\" \/>\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\/et\/blogi\/kiire-algkursus-refaktooringu-kohta-algajatele\/\" \/>\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 minutit\" \/>\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\":\"et\",\"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\":\"et\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/a-quick-primer-on-refactoring-for-beginners\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"et\",\"@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\":\"et\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"et\",\"@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\":\"et\",\"@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\\\/et\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Refaktooringu kiire algkursus algajatele - 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\/et\/blogi\/kiire-algkursus-refaktooringu-kohta-algajatele\/","og_locale":"et_EE","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\/et\/blogi\/kiire-algkursus-refaktooringu-kohta-algajatele\/","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 minutit"},"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":"et","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":"Refaktooringu kiire algkursus algajatele - 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":"et","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/a-quick-primer-on-refactoring-for-beginners\/"]}]},{"@type":"ImageObject","inLanguage":"et","@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":"et"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"et","@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":"et","@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\/et\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/posts\/3016","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/comments?post=3016"}],"version-history":[{"count":12,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/posts\/3016\/revisions"}],"predecessor-version":[{"id":7707,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/posts\/3016\/revisions\/7707"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/media\/3017"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/media?parent=3016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/categories?post=3016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/et\/wp-json\/wp\/v2\/tags?post=3016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}