<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>CleanCode Mastery</title>
    <link>https://cleancode.dosibridge.com/</link>
    <description>Master clean code the easy way — design patterns, code smells, and refactorings explained with real-life stories, diagrams, and lots of code.</description>
    <language>en</language>
    <atom:link href="https://cleancode.dosibridge.com/feed.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Chain of Responsibility Pattern: Pass the Request Until Someone Handles It</title>
      <link>https://cleancode.dosibridge.com/articles/behavioral-patterns/chain-of-responsibility/</link>
      <guid>https://cleancode.dosibridge.com/articles/behavioral-patterns/chain-of-responsibility/</guid>
      <description>Learn the Chain of Responsibility pattern with a simple school leave application story, easy TypeScript and C# code, diagrams, tables, and practice tasks.</description>
      <category>behavioral-patterns</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Long Method: When One Function Tries to Do Everything</title>
      <link>https://cleancode.dosibridge.com/articles/code-smells/long-method/</link>
      <guid>https://cleancode.dosibridge.com/articles/code-smells/long-method/</guid>
      <description>Learn the Long Method code smell with simple stories, TypeScript and C# examples, and step-by-step refactoring using Extract Method. Beginner friendly guide.</description>
      <category>code-smells</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Factory Method Pattern: Let the Branch Decide the Vehicle</title>
      <link>https://cleancode.dosibridge.com/articles/creational-patterns/factory-method/</link>
      <guid>https://cleancode.dosibridge.com/articles/creational-patterns/factory-method/</guid>
      <description>Learn the Factory Method design pattern with a simple Indian tiffin service story, easy TypeScript and C# code, diagrams, real examples, and practice.</description>
      <category>creational-patterns</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Extract Method: Turn One Giant Function into Small Named Helpers</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/extract-method/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/extract-method/</guid>
      <description>Learn Extract Method step by step. Pull a messy block out of a long function, give it a clear name, and make your code read like a clean to-do list.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Adapter Pattern: The Travel Plug Trick That Makes Old Code Fit New Code</title>
      <link>https://cleancode.dosibridge.com/articles/structural-patterns/adapter/</link>
      <guid>https://cleancode.dosibridge.com/articles/structural-patterns/adapter/</guid>
      <description>Learn the Adapter pattern with a simple 3-pin plug and 2-pin socket story. Make old code work with new code without changing either side. Easy examples.</description>
      <category>structural-patterns</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Command Pattern: Turn Every Action into an Order Slip</title>
      <link>https://cleancode.dosibridge.com/articles/behavioral-patterns/command/</link>
      <guid>https://cleancode.dosibridge.com/articles/behavioral-patterns/command/</guid>
      <description>Learn the Command pattern through a restaurant order slip story. Simple TypeScript and C# code with undo and redo, diagrams, tables, and practice tasks.</description>
      <category>behavioral-patterns</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Large Class: The School Bag That Carries Everything</title>
      <link>https://cleancode.dosibridge.com/articles/code-smells/large-class/</link>
      <guid>https://cleancode.dosibridge.com/articles/code-smells/large-class/</guid>
      <description>Understand the Large Class code smell — why god classes grow, how to spot low cohesion, and how Extract Class splits them into small, focused classes.</description>
      <category>code-smells</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Abstract Factory Pattern: One Order, One Matching Thali</title>
      <link>https://cleancode.dosibridge.com/articles/creational-patterns/abstract-factory/</link>
      <guid>https://cleancode.dosibridge.com/articles/creational-patterns/abstract-factory/</guid>
      <description>Understand the Abstract Factory design pattern through an Indian wedding catering story, with simple TypeScript and Python code, diagrams, and practice.</description>
      <category>creational-patterns</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Inline Method: Remove the Shortcut That Was Never a Shortcut</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/inline-method/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/inline-method/</guid>
      <description>Learn Inline Method step by step. When a tiny method&apos;s body is clearer than its name, fold it back into the caller and remove one useless hop from your code.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Bridge Pattern: One Remote, Many Devices — Stop the Subclass Explosion</title>
      <link>https://cleancode.dosibridge.com/articles/structural-patterns/bridge/</link>
      <guid>https://cleancode.dosibridge.com/articles/structural-patterns/bridge/</guid>
      <description>Understand the Bridge pattern with a TV and remote story. Split one big class into two parts that grow separately, so you avoid too many extra subclasses.</description>
      <category>structural-patterns</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Iterator Pattern: Visit Every Element, One Seat at a Time</title>
      <link>https://cleancode.dosibridge.com/articles/behavioral-patterns/iterator/</link>
      <guid>https://cleancode.dosibridge.com/articles/behavioral-patterns/iterator/</guid>
      <description>Learn the Iterator pattern with a railway ticket checker story. Build a custom iterator in TypeScript, use for...of and generators, plus C# IEnumerable.</description>
      <category>behavioral-patterns</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Primitive Obsession: When Everything Is Just a String or a Number</title>
      <link>https://cleancode.dosibridge.com/articles/code-smells/primitive-obsession/</link>
      <guid>https://cleancode.dosibridge.com/articles/code-smells/primitive-obsession/</guid>
      <description>Primitive Obsession explained simply — why plain strings and numbers hide bugs, and how value objects like Money and Address make code safe and clear.</description>
      <category>code-smells</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Builder Pattern: Stitch It Step by Step, Like a Master Tailor</title>
      <link>https://cleancode.dosibridge.com/articles/creational-patterns/builder/</link>
      <guid>https://cleancode.dosibridge.com/articles/creational-patterns/builder/</guid>
      <description>Learn the Builder design pattern with an Indian tailor shop story, fluent TypeScript and C# code, the telescoping constructor problem, and practice tasks.</description>
      <category>creational-patterns</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Extract Variable: Solve the Big Sum with Small Named Steps</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/extract-variable/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/extract-variable/</guid>
      <description>Learn Extract Variable step by step. Break one giant, confusing expression into small named parts, just like showing your working in a maths copy.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Composite Pattern: Boxes Inside Boxes — Treat One Thing and Many Things Alike</title>
      <link>https://cleancode.dosibridge.com/articles/structural-patterns/composite/</link>
      <guid>https://cleancode.dosibridge.com/articles/structural-patterns/composite/</guid>
      <description>Learn the Composite pattern with boxes inside a courier parcel. Treat one item and a full group the same way, and add totals easily with simple recursion.</description>
      <category>structural-patterns</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Mediator Pattern: The Control Tower That Stops the Chaos</title>
      <link>https://cleancode.dosibridge.com/articles/behavioral-patterns/mediator/</link>
      <guid>https://cleancode.dosibridge.com/articles/behavioral-patterns/mediator/</guid>
      <description>Learn the Mediator pattern with an airport control tower story, simple TypeScript and C# code, MediatR examples, diagrams, tables and easy practice tasks.</description>
      <category>behavioral-patterns</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Long Parameter List: The Chai Order That Took Ten Instructions</title>
      <link>https://cleancode.dosibridge.com/articles/code-smells/long-parameter-list/</link>
      <guid>https://cleancode.dosibridge.com/articles/code-smells/long-parameter-list/</guid>
      <description>Long Parameter List code smell made simple — why methods with too many arguments cause bugs, and how parameter objects make calls short, clear, and safe.</description>
      <category>code-smells</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Prototype Pattern: Make Copies Like a Xerox Machine, Not From Scratch</title>
      <link>https://cleancode.dosibridge.com/articles/creational-patterns/prototype/</link>
      <guid>https://cleancode.dosibridge.com/articles/creational-patterns/prototype/</guid>
      <description>Learn the Prototype design pattern with a simple wedding card story, easy TypeScript and Python examples, and a clear shallow vs deep copy demo.</description>
      <category>creational-patterns</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Inline Temp: Throw Away the Rough Note You Used Only Once</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/inline-temp/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/inline-temp/</guid>
      <description>Learn the Inline Temp refactoring with a simple rough-paper story, TypeScript and C# examples, safe steps, IDE shortcuts, and when not to inline a variable.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Decorator Pattern: Add Toppings to Your Objects, One Layer at a Time</title>
      <link>https://cleancode.dosibridge.com/articles/structural-patterns/decorator/</link>
      <guid>https://cleancode.dosibridge.com/articles/structural-patterns/decorator/</guid>
      <description>Learn the Decorator pattern with a simple dosa-toppings story. Wrap objects in layers to add new behaviour at runtime, without making new subclasses.</description>
      <category>structural-patterns</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Memento Pattern: Save Your Game Before the Boss Fight</title>
      <link>https://cleancode.dosibridge.com/articles/behavioral-patterns/memento/</link>
      <guid>https://cleancode.dosibridge.com/articles/behavioral-patterns/memento/</guid>
      <description>Understand the Memento pattern through a video game save point story, with TypeScript and Python undo examples, diagrams, tables and easy practice tasks.</description>
      <category>behavioral-patterns</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Data Clumps: The Friends Who Always Travel Together</title>
      <link>https://cleancode.dosibridge.com/articles/code-smells/data-clumps/</link>
      <guid>https://cleancode.dosibridge.com/articles/code-smells/data-clumps/</guid>
      <description>Data Clumps code smell for beginners — learn to spot groups of values that always travel together and bundle them into one class, like a student ID card.</description>
      <category>code-smells</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Singleton Pattern: One Principal for the Whole School</title>
      <link>https://cleancode.dosibridge.com/articles/creational-patterns/singleton/</link>
      <guid>https://cleancode.dosibridge.com/articles/creational-patterns/singleton/</guid>
      <description>Understand the Singleton design pattern with a school principal story, simple TypeScript and C# code, thread safety, and why many seniors call it an anti-pattern.</description>
      <category>creational-patterns</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Replace Temp with Query: Ask Fresh, Don&apos;t Trust Yesterday&apos;s Chit</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/replace-temp-with-query/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/replace-temp-with-query/</guid>
      <description>Learn Replace Temp with Query with a canteen story, TypeScript and C# examples, and safe steps. Turn local variables into reusable methods, one source of truth.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Facade Pattern: One Travel Agent for Your Whole Messy Trip</title>
      <link>https://cleancode.dosibridge.com/articles/structural-patterns/facade/</link>
      <guid>https://cleancode.dosibridge.com/articles/structural-patterns/facade/</guid>
      <description>Learn the Facade pattern with a travel agent story. Hide many complicated subsystems behind one simple method so client code stays short and clean.</description>
      <category>structural-patterns</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Observer Pattern: Press Subscribe and Ring the Bell</title>
      <link>https://cleancode.dosibridge.com/articles/behavioral-patterns/observer/</link>
      <guid>https://cleancode.dosibridge.com/articles/behavioral-patterns/observer/</guid>
      <description>Master the Observer pattern with a YouTube subscribe and bell icon story, TypeScript and C# event code, real software uses, diagrams and practice tasks.</description>
      <category>behavioral-patterns</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Switch Statements: The Receptionist With the Giant Rulebook</title>
      <link>https://cleancode.dosibridge.com/articles/code-smells/switch-statements/</link>
      <guid>https://cleancode.dosibridge.com/articles/code-smells/switch-statements/</guid>
      <description>Learn the Switch Statements code smell with a school receptionist story, duplicated switch examples in TypeScript and C#, and the polymorphism cure.</description>
      <category>code-smells</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Split Temporary Variable: One Bucket Cannot Do Two Jobs</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/split-temporary-variable/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/split-temporary-variable/</guid>
      <description>Learn Split Temporary Variable with a two-buckets story, TypeScript and C# examples, and safe steps. Give every variable one job and one clear, honest name.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Flyweight Pattern: One Jersey Design, a Whole Team of Players</title>
      <link>https://cleancode.dosibridge.com/articles/structural-patterns/flyweight/</link>
      <guid>https://cleancode.dosibridge.com/articles/structural-patterns/flyweight/</guid>
      <description>Learn the Flyweight pattern with a cricket jersey story. Share the heavy common data between thousands of objects and save huge amounts of memory.</description>
      <category>structural-patterns</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>State Pattern: The Fan That Changes Its Mood</title>
      <link>https://cleancode.dosibridge.com/articles/behavioral-patterns/state/</link>
      <guid>https://cleancode.dosibridge.com/articles/behavioral-patterns/state/</guid>
      <description>Learn the State design pattern with a ceiling fan regulator story, simple TypeScript and C# code, state diagrams, real software examples, and practice.</description>
      <category>behavioral-patterns</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Temporary Field: The Cricket Kit That Lives in the School Bag</title>
      <link>https://cleancode.dosibridge.com/articles/code-smells/temporary-field/</link>
      <guid>https://cleancode.dosibridge.com/articles/code-smells/temporary-field/</guid>
      <description>Learn the Temporary Field code smell with a school bag story, see null-filled fields in TypeScript and C#, and fix them with Extract Class step by step.</description>
      <category>code-smells</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Remove Assignments to Parameters: Never Scribble Over a Borrowed Notebook</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/remove-assignments-to-parameters/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/remove-assignments-to-parameters/</guid>
      <description>Learn the Remove Assignments to Parameters refactoring with a borrowed notebook story, TypeScript and C# examples, and safe steps for beginners to follow.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Proxy Pattern: The Watchman Who Checks Before You Meet the Owner</title>
      <link>https://cleancode.dosibridge.com/articles/structural-patterns/proxy/</link>
      <guid>https://cleancode.dosibridge.com/articles/structural-patterns/proxy/</guid>
      <description>Learn the Proxy pattern with a society watchman story. Put a stand-in with the same interface in front of a real object to control access to it.</description>
      <category>structural-patterns</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Strategy Pattern: Cycle, Bus, or Auto — You Choose</title>
      <link>https://cleancode.dosibridge.com/articles/behavioral-patterns/strategy/</link>
      <guid>https://cleancode.dosibridge.com/articles/behavioral-patterns/strategy/</guid>
      <description>Learn the Strategy design pattern with a simple school travel story, easy TypeScript and C# code, runtime swapping, real examples, and practice tasks.</description>
      <category>behavioral-patterns</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Refused Bequest: The Child Who Refused the Sweet Shop Recipes</title>
      <link>https://cleancode.dosibridge.com/articles/code-smells/refused-bequest/</link>
      <guid>https://cleancode.dosibridge.com/articles/code-smells/refused-bequest/</guid>
      <description>Learn the Refused Bequest code smell with a family sweet shop story, Liskov violations in TypeScript and C#, and the delegation cure explained step by step.</description>
      <category>code-smells</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Replace Method with Method Object: Give the Big Dish Its Own Kitchen Station</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/replace-method-with-method-object/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/replace-method-with-method-object/</guid>
      <description>Learn Replace Method with Method Object through a wedding kitchen story, TypeScript and C# examples, and safe steps to untangle long methods for beginners.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Template Method Pattern: Chai and Coffee, Same Steps</title>
      <link>https://cleancode.dosibridge.com/articles/behavioral-patterns/template-method/</link>
      <guid>https://cleancode.dosibridge.com/articles/behavioral-patterns/template-method/</guid>
      <description>Learn the Template Method design pattern with a chai and coffee story, easy TypeScript and C# code, hooks, diagrams, real examples, and practice tasks.</description>
      <category>behavioral-patterns</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Alternative Classes with Different Interfaces: Two Tiffin Services, Two Languages</title>
      <link>https://cleancode.dosibridge.com/articles/code-smells/alternative-classes-with-different-interfaces/</link>
      <guid>https://cleancode.dosibridge.com/articles/code-smells/alternative-classes-with-different-interfaces/</guid>
      <description>Learn this code smell with a tiffin delivery story: two classes do the same job with different method names, so you cannot swap them. Fix it step by step.</description>
      <category>code-smells</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Substitute Algorithm: Take the New Straight Road to School</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/substitute-algorithm/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/substitute-algorithm/</guid>
      <description>Learn the Substitute Algorithm refactoring with a cycle-route story, TypeScript and Python examples, and the test-first safety rules every beginner needs.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Visitor Pattern: The Doctor Who Visits Every Class</title>
      <link>https://cleancode.dosibridge.com/articles/behavioral-patterns/visitor/</link>
      <guid>https://cleancode.dosibridge.com/articles/behavioral-patterns/visitor/</guid>
      <description>Learn the Visitor design pattern with a school health check-up story, double dispatch made simple, TypeScript and C# code, real examples, and practice.</description>
      <category>behavioral-patterns</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Divergent Change: One Poor Clerk, Too Many Bosses</title>
      <link>https://cleancode.dosibridge.com/articles/code-smells/divergent-change/</link>
      <guid>https://cleancode.dosibridge.com/articles/code-smells/divergent-change/</guid>
      <description>Learn the Divergent Change code smell with a school clerk story, simple definitions, TypeScript and C# examples, a clear comparison with Shotgun Surgery, and practice.</description>
      <category>code-smells</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Move Method: Shift Work to the Class Where It Truly Belongs</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/move-method/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/move-method/</guid>
      <description>Learn the Move Method refactoring through a simple school story. Shift a method into the class whose data it uses most so behaviour and data stay together.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Shotgun Surgery: One Small Change, Ten Offices to Visit</title>
      <link>https://cleancode.dosibridge.com/articles/code-smells/shotgun-surgery/</link>
      <guid>https://cleancode.dosibridge.com/articles/code-smells/shotgun-surgery/</guid>
      <description>Learn the Shotgun Surgery code smell with an address-change story, simple definitions, TypeScript and C# examples, a clear comparison with Divergent Change, and practice.</description>
      <category>code-smells</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Move Field: Keep Data in the Room Where It Is Used</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/move-field/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/move-field/</guid>
      <description>Learn the Move Field refactoring with an easy school story. Move a piece of data to the class that really uses it, so state and behaviour live side by side.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Parallel Inheritance Hierarchies: Every Sweet Needs Its Shadow Box</title>
      <link>https://cleancode.dosibridge.com/articles/code-smells/parallel-inheritance-hierarchies/</link>
      <guid>https://cleancode.dosibridge.com/articles/code-smells/parallel-inheritance-hierarchies/</guid>
      <description>Learn the Parallel Inheritance Hierarchies code smell with a sweet-shop story, mirrored class trees explained simply, TypeScript and C# examples, fixes, and practice.</description>
      <category>code-smells</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Extract Class: Give an Overworked Class a Helping Partner</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/extract-class/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/extract-class/</guid>
      <description>Learn the Extract Class refactoring with a fun school office story. Split one overloaded class into two focused classes, each with a single clear job to do.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Comments Smell: When Sticky Notes Hide a Messy Cupboard</title>
      <link>https://cleancode.dosibridge.com/articles/code-smells/comments/</link>
      <guid>https://cleancode.dosibridge.com/articles/code-smells/comments/</guid>
      <description>Learn why too many comments can be a code smell. Understand good WHY comments vs bad WHAT comments with a sticky-note cupboard story and easy examples.</description>
      <category>code-smells</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Inline Class: Merge a Class That Does Too Little</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/inline-class/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/inline-class/</guid>
      <description>Learn the Inline Class refactoring through a school committee story. Merge a class that does too little back into its user and remove useless indirection.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Duplicate Code: Writing the Same Address on 50 Wedding Cards</title>
      <link>https://cleancode.dosibridge.com/articles/code-smells/duplicate-code/</link>
      <guid>https://cleancode.dosibridge.com/articles/code-smells/duplicate-code/</guid>
      <description>Learn the Duplicate Code smell with a wedding card story. Understand DRY, the Rule of Three, and how Extract Method removes dangerous copy-paste code.</description>
      <category>code-smells</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Hide Delegate: Ask the Monitor, Let the Monitor Do the Running</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/hide-delegate/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/hide-delegate/</guid>
      <description>Learn the Hide Delegate refactoring with a story about a class monitor who finds your homework for you. Stop writing chains like employee.department.manager — give the first object a simple method and hide the journey inside it. Step-by-step TypeScript and C# examples included.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Lazy Class: The Watchman Whose Only Job Is Pressing One Lift Button</title>
      <link>https://cleancode.dosibridge.com/articles/code-smells/lazy-class/</link>
      <guid>https://cleancode.dosibridge.com/articles/code-smells/lazy-class/</guid>
      <description>Learn the Lazy Class code smell with a society watchman story. Find classes that do too little to deserve existing, and cure them with Inline Class.</description>
      <category>code-smells</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Remove Middle Man: When the Peon Only Forwards, Meet the Principal Directly</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/remove-middle-man/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/remove-middle-man/</guid>
      <description>Learn the Remove Middle Man refactoring with a story about a school peon who forwards every question to the principal without adding anything. When a class only forwards calls to its delegate, delete the forwarding and let clients talk to the delegate directly. Step-by-step TypeScript and C# walkthrough.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Data Class: The Register With No Rules — Anyone Can Scribble Anything</title>
      <link>https://cleancode.dosibridge.com/articles/code-smells/data-class/</link>
      <guid>https://cleancode.dosibridge.com/articles/code-smells/data-class/</guid>
      <description>Learn the Data Class smell with a society register story. See why data without behavior breaks encapsulation, and when DTOs and records are perfectly fine.</description>
      <category>code-smells</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Introduce Foreign Method: The Stapler You Keep in Your Own Bag</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/introduce-foreign-method/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/introduce-foreign-method/</guid>
      <description>Learn the Introduce Foreign Method refactoring with a story about a school photocopy machine that has no stapler. When a class you cannot modify is missing a method, write that method in your own class with the foreign object as a parameter. TypeScript and modern C# extension-method examples included.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Dead Code: Old Furniture Blocking the Storeroom &apos;Just in Case&apos;</title>
      <link>https://cleancode.dosibridge.com/articles/code-smells/dead-code/</link>
      <guid>https://cleancode.dosibridge.com/articles/code-smells/dead-code/</guid>
      <description>Learn the Dead Code smell with a storeroom full of unused furniture. See why unreachable code costs real money, with the Knight Capital story and easy fixes.</description>
      <category>code-smells</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Introduce Local Extension: Build a Cabin Next to the Rented Shop</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/introduce-local-extension/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/introduce-local-extension/</guid>
      <description>Learn the Introduce Local Extension refactoring with a story about building an attached cabin beside a rented shop you cannot modify. When a locked class is missing many methods, gather them into one extension type — a subclass, a wrapper, or a modern C#/Kotlin extension class. Full TypeScript and C# walkthrough.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Speculative Generality: Plumbing for a Swimming Pool You May Never Build</title>
      <link>https://cleancode.dosibridge.com/articles/code-smells/speculative-generality/</link>
      <guid>https://cleancode.dosibridge.com/articles/code-smells/speculative-generality/</guid>
      <description>Learn the Speculative Generality smell with a house-building story. Understand YAGNI, why guessing future needs backfires, and how to collapse unused abstractions.</description>
      <category>code-smells</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Self Encapsulate Field: Let One Gatekeeper Guard Your Data</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/self-encapsulate-field/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/self-encapsulate-field/</guid>
      <description>Self Encapsulate Field explained simply — why a class should read and write its own fields through getters and setters, with safe steps, TypeScript and C# examples.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Feature Envy: The Method That Sits in Someone Else&apos;s Class All Day</title>
      <link>https://cleancode.dosibridge.com/articles/code-smells/feature-envy/</link>
      <guid>https://cleancode.dosibridge.com/articles/code-smells/feature-envy/</guid>
      <description>Learn the Feature Envy code smell with a simple school story. When a method keeps using another class&apos;s data more than its own, it probably belongs in that other class. Cure it with Move Method.</description>
      <category>code-smells</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Replace Data Value with Object: Give Your Data a Proper Home</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/replace-data-value-with-object/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/replace-data-value-with-object/</guid>
      <description>Replace Data Value with Object explained simply — how to grow a plain string or number into a small class with validation and behaviour, with TypeScript and C# record examples.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Inappropriate Intimacy: Two Classes That Walk Into Each Other&apos;s Kitchens</title>
      <link>https://cleancode.dosibridge.com/articles/code-smells/inappropriate-intimacy/</link>
      <guid>https://cleancode.dosibridge.com/articles/code-smells/inappropriate-intimacy/</guid>
      <description>Learn the Inappropriate Intimacy code smell with a story of two neighbours who rearrange each other&apos;s kitchens. When two classes poke each other&apos;s private parts, neither can change alone. Learn the Law of Demeter and the refactorings that restore privacy.</description>
      <category>code-smells</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Change Value to Reference: One Office File, Not Twenty Photocopies</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/change-value-to-reference/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/change-value-to-reference/</guid>
      <description>Change Value to Reference explained simply — why duplicate copies of the same entity go stale, and how a shared single instance via a registry or repository keeps data consistent.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Message Chains: Asking a Friend, Who Asks a Cousin, Who Asks an Uncle</title>
      <link>https://cleancode.dosibridge.com/articles/code-smells/message-chains/</link>
      <guid>https://cleancode.dosibridge.com/articles/code-smells/message-chains/</guid>
      <description>Learn the Message Chains code smell with a story about finding out if bread is available — through four people. When code reads a.getB().getC().getD(), the caller is coupled to a whole path. Learn the Law of Demeter and cure chains with Hide Delegate.</description>
      <category>code-smells</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Change Reference to Value: Any ₹10 Note Is As Good As Another</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/change-reference-to-value/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/change-reference-to-value/</guid>
      <description>Change Reference to Value explained simply — how to turn a shared, mutable reference object into a small immutable value object with content-based equality, with TypeScript and C# record examples.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Middle Man: The Helper Who Only Forwards Your Message to the Principal</title>
      <link>https://cleancode.dosibridge.com/articles/code-smells/middle-man/</link>
      <guid>https://cleancode.dosibridge.com/articles/code-smells/middle-man/</guid>
      <description>Learn the Middle Man code smell with a story of a school helper who only carries messages without adding anything. When a class merely forwards every call, remove it — but learn why Proxy, Facade, and Adapter are middle men ON PURPOSE.</description>
      <category>code-smells</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Replace Array with Object: Give Every Slot a Name</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/replace-array-with-object/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/replace-array-with-object/</guid>
      <description>Replace Array with Object explained simply — why an array with secret positions like row[0], row[1], row[2] causes bugs, and how a class with named fields makes the code honest and safe.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Encapsulate Field: Let the Object Guard Its Own Data</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/encapsulate-field/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/encapsulate-field/</guid>
      <description>Encapsulate Field explained simply — why public fields let any code corrupt an object&apos;s data, and how private fields with getters and setters put the object back in charge.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Encapsulate Collection: Stop Handing Out the Live List</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/encapsulate-collection/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/encapsulate-collection/</guid>
      <description>Encapsulate Collection explained simply — why returning a live array or list lets any caller corrupt your object, and how read-only views plus add/remove methods restore control.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Replace Type Code with Class: Give Every Magic Number a Proper Badge</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/replace-type-code-with-class/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/replace-type-code-with-class/</guid>
      <description>Learn the Replace Type Code with Class refactoring with a school house story, before/after TypeScript, C# smart enums, and a clear guide on when to pick Class, Subclasses, or State/Strategy.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Replace Type Code with Subclasses: When Each Kind Truly Behaves Differently</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/replace-type-code-with-subclasses/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/replace-type-code-with-subclasses/</guid>
      <description>Learn the Replace Type Code with Subclasses refactoring with a day-scholar/boarder/hosteller story, switch-removal in TypeScript and C#, and the decision guide for Class vs Subclasses vs State/Strategy.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Replace Type Code with State/Strategy: When the Type Itself Can Change</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/replace-type-code-with-state-strategy/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/replace-type-code-with-state-strategy/</guid>
      <description>Learn the Replace Type Code with State/Strategy refactoring with a prepaid-to-postpaid SIM story, swappable plan objects in TypeScript and C#, and the decision guide for Class vs Subclasses vs State/Strategy.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Decompose Conditional: Turn a Confusing Rule into a Simple Name</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/decompose-conditional/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/decompose-conditional/</guid>
      <description>Learn the Decompose Conditional refactoring with a school circular story, simple TypeScript and C# examples, safe steps, and handy IDE shortcuts for beginners.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Consolidate Conditional Expression: Many Small Checks, One Clear Question</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/consolidate-conditional-expression/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/consolidate-conditional-expression/</guid>
      <description>Learn the Consolidate Conditional Expression refactoring with a school-gate story, TypeScript and C# examples, safe steps, and the side-effect rule beginners must know.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Consolidate Duplicate Conditional Fragments: Move the Dessert Counter Outside</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/consolidate-duplicate-conditional-fragments/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/consolidate-duplicate-conditional-fragments/</guid>
      <description>Learn the Consolidate Duplicate Conditional Fragments refactoring with a canteen story, TypeScript and C# examples, safety rules, and easy step-by-step practice.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Remove Control Flag: Stop Searching Once You Have Found It</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/remove-control-flag/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/remove-control-flag/</guid>
      <description>Learn the Remove Control Flag refactoring with a watchman story, TypeScript and C# examples, break and return steps, plus the single-exit debate explained simply.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Replace Nested Conditional with Guard Clauses: Flatten the Arrow</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/replace-nested-conditional-with-guard-clauses/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/replace-nested-conditional-with-guard-clauses/</guid>
      <description>Learn the Replace Nested Conditional with Guard Clauses refactoring with a temple queue story, early returns that flatten arrow-shaped code, and safe step-by-step mechanics in TypeScript and C#.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Replace Conditional with Polymorphism: Give Every Kind Its Own Desk</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/replace-conditional-with-polymorphism/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/replace-conditional-with-polymorphism/</guid>
      <description>Learn the Replace Conditional with Polymorphism refactoring with a school reception story, repeated type switches dissolving into subclasses, a factory in TypeScript and C#, and honest advice on when a plain switch is fine.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Introduce Null Object: Give &apos;Nothing&apos; a Polite Stand-In</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/introduce-null-object/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/introduce-null-object/</guid>
      <description>Learn the Introduce Null Object refactoring with a school guardian-card story, Tony Hoare&apos;s billion-dollar mistake, scattered null checks replaced by one well-behaved default object, and honest advice on when null objects hide bugs.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Introduce Assertion: Taste the Dal Before You Serve It</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/introduce-assertion/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/introduce-assertion/</guid>
      <description>Learn the Introduce Assertion refactoring with a careful cook&apos;s story, hidden assumptions turned into executable checks, Debug.Assert in C# and asserts functions in TypeScript, and the crucial difference between assertions and input validation.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Rename Method: Fix the Shop Board So It Tells the Truth</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/rename-method/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/rename-method/</guid>
      <description>Rename Method explained simply — why a method&apos;s name must say what the method really does, how to rename safely with a delegating old method, and how IDEs like VS Code (F2) and JetBrains (Shift+F6) make it a one-key job.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Add Parameter: One More Detail on the Tiffin Order Slip</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/add-parameter/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/add-parameter/</guid>
      <description>Add Parameter explained simply — how to give a method a new piece of information it now needs, why an explicit parameter beats hidden global state, how to do it safely with overloads, and when to stop before the parameter list grows too long.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Remove Parameter: Delete the &apos;Telegram Address&apos; Field from the School Form</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/remove-parameter/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/remove-parameter/</guid>
      <description>Remove Parameter explained simply — how to safely delete a parameter the method no longer uses, why dead parameters mislead readers and burden every caller, and the checks (interfaces, overrides, reflection) you must do before deleting.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Separate Query from Modifier: Asking Your Bill Must Not Add Chai to It</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/separate-query-from-modifier/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/separate-query-from-modifier/</guid>
      <description>Separate Query from Modifier explained simply — split a method that both answers a question and changes state into a pure query and a separate command, following Bertrand Meyer&apos;s Command-Query Separation principle: asking a question should not change the answer.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Parameterize Method: One Juice Recipe with a Size Input</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/parameterize-method/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/parameterize-method/</guid>
      <description>Learn the Parameterize Method refactoring with a juice stall story, TypeScript and C# examples, safe step-by-step mechanics, and the seesaw rule that pairs it with Replace Parameter with Explicit Methods.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Replace Parameter with Explicit Methods: Name Boards Instead of Secret Codes</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/replace-parameter-with-explicit-methods/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/replace-parameter-with-explicit-methods/</guid>
      <description>Learn the Replace Parameter with Explicit Methods refactoring with a bank counter story, TypeScript and Python examples, safe mechanics, and the seesaw rule that pairs it with Parameterize Method.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Preserve Whole Object: Show the Whole ID Card</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/preserve-whole-object/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/preserve-whole-object/</guid>
      <description>Learn the Preserve Whole Object refactoring with a school ID card story, TypeScript and C# examples, safe step-by-step mechanics, and an honest look at the coupling cost of passing whole objects.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Replace Parameter with Method Call: Don&apos;t Tell the Shopkeeper His Own Prices</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/replace-parameter-with-method-call/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/replace-parameter-with-method-call/</guid>
      <description>Learn the Replace Parameter with Method Call refactoring (Replace Parameter with Query in Fowler&apos;s 2nd edition) with a kirana shop story, TypeScript and C# examples, safe mechanics, and the testability fine print.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Introduce Parameter Object: Hand Over One Address Card, Not Five Answers</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/introduce-parameter-object/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/introduce-parameter-object/</guid>
      <description>Introduce Parameter Object explained simply — why the same group of parameters travelling together through many methods is a hidden concept, and how bundling them into one named object shortens signatures, stops order mistakes, and attracts behaviour.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Remove Setting Method: Some Things Are Written in Ink, Not Pencil</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/remove-setting-method/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/remove-setting-method/</guid>
      <description>Remove Setting Method explained simply — why a field that should never change after construction must not have a setter, and how read-only fields, init-only properties, and records turn &apos;please don&apos;t change this&apos; into a compiler guarantee.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Hide Method: The Secret Masala Stays Inside the Kitchen</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/hide-method/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/hide-method/</guid>
      <description>Hide Method explained simply — why a method that only the class itself uses should not sit on the public menu, and how lowering visibility to private or internal shrinks the API, protects internals, and frees you to change code without fear.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Replace Constructor with Factory Method: Order a Named Thali, Let the Kitchen Decide</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/replace-constructor-with-factory-method/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/replace-constructor-with-factory-method/</guid>
      <description>Learn the Replace Constructor with Factory Method refactoring with a thali restaurant story, before/after TypeScript and C#, safe step-by-step migration, and a clear comparison with the full Factory Method design pattern.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Replace Error Code with Exception: Stop Whispering Failures, Announce Them</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/replace-error-code-with-exception/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/replace-error-code-with-exception/</guid>
      <description>Learn the Replace Error Code with Exception refactoring with a government-office story, before/after TypeScript and C#, safe migration steps, and an honest comparison with Result types as the modern third way.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Replace Exception with Test: Read the Board Before You Walk In</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/replace-exception-with-test/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/replace-exception-with-test/</guid>
      <description>Learn the Replace Exception with Test refactoring (Replace Exception with Precheck) with a canteen story, before/after TypeScript and C#, TryParse-style patterns, the check-then-act race-condition trap, and Result types as the modern third way.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Pull Up Field: One Notice Board for Information Everyone Shares</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/pull-up-field/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/pull-up-field/</guid>
      <description>Learn the Pull Up Field refactoring with a school notice-board story — move a field that every subclass duplicates into the superclass, with safe steps in TypeScript and C#, IDE support, and the pull-up vs push-down direction guide.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Pull Up Method: One Instruction Sheet for the Whole School</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/pull-up-method/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/pull-up-method/</guid>
      <description>Learn the Pull Up Method refactoring with a school leave-application story — move methods duplicated across subclasses into the superclass, with safe steps in TypeScript and C#, IDE dialogs, and when to choose Form Template Method instead.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Pull Up Constructor Body: One Shared Morning Routine, Then Your Own First Period</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/pull-up-constructor-body/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/pull-up-constructor-body/</guid>
      <description>Learn the Pull Up Constructor Body refactoring with a school morning-assembly story — move duplicated initialization from subclass constructors into a superclass constructor called via super/base, with safe steps in TypeScript and C#.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Push Down Field: Swimming Pool Timings Belong on 7C&apos;s Board Only</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/push-down-field/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/push-down-field/</guid>
      <description>Learn the Push Down Field refactoring with a school notice-board story — move a superclass field that only some subclasses use down into exactly those subclasses, with safe steps in TypeScript and C#, IDE dialogs, and the pull-up vs push-down compass.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Push Down Method: Move a Method to the Subclass That Really Uses It</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/push-down-method/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/push-down-method/</guid>
      <description>Learn the Push Down Method refactoring with a school-office story, honest superclass contracts, safe step-by-step moves in TypeScript and C#, and how it cures the Refused Bequest smell.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Extract Subclass: Give the Special Case Its Own Class</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/extract-subclass/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/extract-subclass/</guid>
      <description>Learn the Extract Subclass refactoring with a tailor-shop story about urgent orders, flag-removal in TypeScript and C#, safe step-by-step moves, and when subclassing is the wrong tool.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Extract Superclass: One Common Rulebook for Twin Classes</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/extract-superclass/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/extract-superclass/</guid>
      <description>Learn the Extract Superclass refactoring with a science-lab/computer-lab story, pull-up moves in TypeScript and C#, the superclass-vs-interface decision table, and how it removes Duplicate Code.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Extract Interface: One Common Form, Many Different Workers</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/extract-interface/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/extract-interface/</guid>
      <description>Learn the Extract Interface refactoring with a visitor-register story about an electrician and a plumber, contract-extraction in TypeScript and C#, test doubles, and the interface-vs-superclass decision table.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Collapse Hierarchy: When Parent and Child Classes Become the Same</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/collapse-hierarchy/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/collapse-hierarchy/</guid>
      <description>Learn the Collapse Hierarchy refactoring with a housing-society committee story, step-by-step merging of a superclass and subclass in TypeScript and C#, and the checks that tell you when a hierarchy has stopped earning its keep.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Form Template Method: One Recipe Card, Many Biryanis</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/form-template-method/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/form-template-method/</guid>
      <description>Learn the Form Template Method refactoring with a two-aunties biryani story, step-by-step extraction of a shared algorithm skeleton in TypeScript and Python, and how this refactoring produces the Template Method design pattern.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Replace Inheritance with Delegation: Rent the Counter, Don&apos;t Inherit the Shop</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/replace-inheritance-with-delegation/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/replace-inheritance-with-delegation/</guid>
      <description>Learn the Replace Inheritance with Delegation refactoring with a sweet-shop inheritance story, the honest meaning of composition over inheritance, the fragile base class problem, and step-by-step conversion in TypeScript and C#.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Replace Delegation with Inheritance: When the Helper Should Become the Apprentice</title>
      <link>https://cleancode.dosibridge.com/articles/refactorings/replace-delegation-with-inheritance/</link>
      <guid>https://cleancode.dosibridge.com/articles/refactorings/replace-delegation-with-inheritance/</guid>
      <description>Learn the Replace Delegation with Inheritance refactoring with a tailor-shop helper story, the Middle Man smell, the strict is-a conditions that must hold first, and step-by-step conversion in TypeScript and C#.</description>
      <category>refactorings</category>
      <pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate>
    </item>
  </channel>
</rss>