<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Refactoring on Madprof&#39;s workshop</title>
    <link>http://www.madprof.net/tags/refactoring/</link>
    <description>Recent content in Refactoring on Madprof&#39;s workshop</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Wed, 24 Dec 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="http://www.madprof.net/tags/refactoring/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Advent of refactoring</title>
      <link>http://www.madprof.net/posts/advent-of-refactoring/</link>
      <pubDate>Wed, 24 Dec 2025 00:00:00 +0000</pubDate>
       <guid isPermaLink="false">http://www.madprof.net/posts/advent-of-refactoring/</guid> 
      <description>&lt;p&gt;I made a video series!&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;https://www.youtube.com/playlist?list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&#34;&gt;&amp;ldquo;Advent of Refactoring&amp;rdquo;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;going through a whole bunch of code refactoring concepts, focussing on web
development in Django/Wordpress.&lt;/p&gt;
&lt;div class=&#34;youtube-container&#34;&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/wGxb55DRqGM?si=cUTmUU_69gJvScfw&#34;
  title=&#34;YouTube video player&#34;
  frameborder=&#34;0&#34;
  allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34;
  referrerpolicy=&#34;strict-origin-when-cross-origin&#34;
  allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=wGxb55DRqGM&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=1&amp;amp;pp=iAQBsAgC&#34;&gt;Renaming Things&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=IkPXabNOiwQ&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=2&amp;amp;pp=iAQBsAgC&#34;&gt;Extract Variable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=4JvmXbnRSVc&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=3&amp;amp;pp=iAQB0gcJCSgLAYcqIYzvsAgC&#34;&gt;Extracting Functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=0D03S0c8cFI&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=4&amp;amp;pp=iAQBsAgC&#34;&gt;Extract (class) methods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=21BM8EoYZlY&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=5&amp;amp;pp=iAQBsAgC&#34;&gt;Converting a function to a method class&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=jg0MhcT9fXI&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=6&amp;amp;pp=iAQBsAgC&#34;&gt;Moving things around&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=89HzGfJvobE&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=7&amp;amp;pp=iAQBsAgC&#34;&gt;Guard Clauses&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=hxckqyzrWgc&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=8&amp;amp;pp=iAQBsAgC&#34;&gt;Composition &amp;amp; Inheritance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=avXwK7bSVOc&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=9&amp;amp;pp=iAQB0gcJCSgLAYcqIYzvsAgC&#34;&gt;Data to JS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=3LgjIoRj3EE&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=10&amp;amp;pp=iAQBsAgC&#34;&gt;Generators &amp;amp; Separating concerns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=nDvxQG4t78c&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=11&amp;amp;pp=iAQBsAgC&#34;&gt;Positional to Named arguments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=xj97Ra7Wk-M&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=12&amp;amp;pp=iAQBsAgC&#34;&gt;Extracting blobs of text (SQL, HTML, etc)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=1h1v6gr4-Ds&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=13&amp;amp;pp=iAQBsAgC&#34;&gt;Functions that create functions (closures)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=4K8klnNYWZo&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=14&amp;amp;pp=iAQBsAgC&#34;&gt;callbacks into functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=X6btGNagKDc&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=15&amp;amp;pp=iAQB0gcJCSgLAYcqIYzvsAgC&#34;&gt;try catch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=1bDlsgD_emc&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=16&amp;amp;pp=iAQB0gcJCSgLAYcqIYzvsAgC&#34;&gt;wrapper functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=igIXaTDT1ww&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=17&amp;amp;pp=iAQBsAgC&#34;&gt;python decorators &amp;amp; context managers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=_rgszMzhjc4&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=18&amp;amp;pp=iAQB0gcJCSgLAYcqIYzvsAgC&#34;&gt;(django) QuerySets &amp;amp; Model property methods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=OgxLkacJoy4&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=19&amp;amp;pp=iAQBsAgC&#34;&gt;Building data attrs in the database&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=Cuk5H7PDbdk&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=20&amp;amp;pp=iAQBsAgC&#34;&gt;Building complex class heirarchies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=-HQ4Djy_dK4&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=21&amp;amp;pp=iAQBsAgC&#34;&gt;Lookup tables replacing if chains&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=aWhcRC8e36w&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=22&amp;amp;pp=iAQBsAgC&#34;&gt;Taking advantage of polymorphism&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=Q3AuVLSfSMI&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=23&amp;amp;pp=iAQBsAgC&#34;&gt;Using validation libraries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=NClddfZOQRs&amp;amp;list=PLXkLI8HXcMo2r9Q5t27aIh-S4guP_I7z1&amp;amp;index=24&amp;amp;pp=iAQBsAgC&#34;&gt;Using dataclasses for cleaner data access&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
  </channel>
</rss>
