PageSourceSearch

https://maximilianocontieri.com/series/object-oriented-design

html maximilianocontieri.com collected 2026-10-02 05:43:24 UTC 81,823 bytes, 39 lines download raw bytes

1<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="https://cdn.hashnode.com/res/hashnode/image/upload/v1695814671171/qMChtqJmW.jpg"/><link rel="stylesheet" href="/_next/static/css/0d16c72050851854.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/7ffcc02a3c67389b.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/c20e76e7d11dec32.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/59fefb2212bd5b60.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-55b36f0cd6c208fe.js"/>
1<script src="/_next/static/chunks/4bd1b696-100b9d70ed4e49c1.js" async=""></script>
1<script src="/_next/static/chunks/9da6db1e-8a4e8c23641c31bf.js" async=""></script>
1<script src="/_next/static/chunks/1255-a242e0ce0372fddf.js" async=""></script>
1<script src="/_next/static/chunks/main-app-bda8a52fe841b3aa.js" async=""></script>
1<script src="/_next/static/chunks/4554-984b480a9db5f3fe.js" async=""></script>
1<script src="/_next/static/chunks/7563-4dfa0994a9b0e37c.js" async=""></script>
1<script src="/_next/static/chunks/9216-9272709ba40c1cfd.js" async=""></script>
1<script src="/_next/static/chunks/2810-6b74d77b4b0dc790.js" async=""></script>
1<script src="/_next/static/chunks/3091-bf1537ff6571a1bd.js" async=""></script>
1<script src="/_next/static/chunks/app/layout-6ae7b4b583d4bba3.js" async=""></script>
1<script src="/_next/static/chunks/app/not-found-b861935655c5698b.js" async=""></script>
1<script src="/_next/static/chunks/5001-fae0bebdd93f95e3.js" async=""></script>
1<script src="/_next/static/chunks/2423-c8b1388240338d7d.js" async=""></script>
1<script src="/_next/static/chunks/652-f40dcb480b4e356f.js" async=""></script>
1<script src="/_next/static/chunks/730-8191af9e9424b148.js" async=""></script>
1<script src="/_next/static/chunks/app/series/%5Bslug%5D/page-95c6281db9d3a307.js" async=""></script>
1<meta name="next-size-adjust" content=""/>
1<script type="text/javascript">window.addEventListener('message',function(e){var d=e.data;if(!d||d.__hnWidget!==1||typeof d.h!=='number'||d.h<=0)return;var f=document.querySelectorAll('.hn-widget-frame');for(var i=0;i<f.length;i++){if(f[i].contentWindow===e.source){f[i].style.height=d.h+'px';break;}}});</script>
1<script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script>
1</head><body class="__variable_c2612a __variable_246ccd __variable_3069d5 bg-background dark:bg-background"><div hidden=""><!--$?--><template id="B:0"></template><!--/$--></div>
1<script>((a2, b2, c4, d3, e2, f2, g4, h3) => {
2          let i3 = document.documentElement, j2 = ["light", "dark"];
3          function k2(b3) {
4            var c5;
5            (Array.isArray(a2) ? a2 : [a2]).forEach((a3) => {
6              let c6 = a3 === "class", d4 = c6 && f2 ? e2.map((a4) => f2[a4] || a4) : e2;
7              c6 ? (i3.classList.remove(...d4), i3.classList.add(f2 && f2[b3] ? f2[b3] : b3)) : i3.setAttribute(a3, b3);
8            }), c5 = b3, h3 && j2.includes(c5) && (i3.style.colorScheme = c5);
9          }
10          if (d3) k2(d3);
11          else try {
12            let a3 = localStorage.getItem(b2) || c4, d4 = g4 && a3 === "system" ? window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light" : a3;
13            k2(d4);
14          } catch {
15          }
16        })("class","theme","system",null,["light","dark"],null,true,true)</script>
16<main id="main-content" class="min-h-screen bg-background dark:bg-background"><header class="sticky top-0 z-50 w-full py-4 bg-background backdrop-blur-sm transition-transform duration-300 translate-y-0"><a href="#main-content" class="sr-only focus:not-sr-only focus:absolute focus:left-4 focus:top-4 focus:z-50 focus:rounded-md focus:bg-background focus:px-4 focus:py-2 focus:text-sm focus:shadow">Skip to main content</a><div class="relative w-full mx-auto xl:max-w-[80rem] 2xl:max-w-[90rem] px-4 sm:px-12 md:px-18 lg:px-16 xl:px-10"><div class="flex items-center justify-between gap-3 xl:hidden"><div class="flex items-center gap-3 min-w-0 flex-1"><a href="https://hashnode.com/?utm_source=https%3A%2F%2Fmaximilianocontieri.com&amp;utm_medium=referral&amp;utm_campaign=blog_header_logo&amp;utm_content=logo" class="inline-flex items-center justify-center text-lg text-muted-foreground hover:text-foreground transition border rounded-md h-9 w-9 shrink-0 border-border hover:bg-muted"><i class="text-xl fa-brands fa-hashnode" aria-hidden="true"></i><span class="sr-only">Hashnode</span></a><a class="flex items-center" href="/"><img alt="Maximiliano Contieri - Software Design" width="500" height="125" decoding="async" data-nimg="1" class="w-auto h-auto max-w-40 sm:max-w-48 max-h-10 sm:max-h-12 object-contain" style="color:transparent" src="https://cdn.hashnode.com/res/hashnode/image/upload/v1695814671171/qMChtqJmW.jpg"/><span class="sr-only">Maximiliano Contieri - Software Design</span></a></div><div class="flex items-center gap-2 shrink-0"><button class="gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 hover:bg-accent py-2 h-9 w-9 px-0 flex items-center justify-center text-muted-foreground hover:text-foreground bg-transparent border-border shadow-none" aria-label="Open search (press Control or Command and K)"><i class="fa-jelly fa-search text-sm" aria-hidden="true"></i><span class="sr-only">Open search (press Control or Command and K)</span></button><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 hover:bg-accent w-9 px-3 h-9 text-muted-foreground hover:text-foreground shadow-none" type="button" id="radix-_R_kp5bsnpfalb_" aria-haspopup="menu" aria-expanded="false" data-state="closed" data-slot="dropdown-menu-trigger"><i class="fa-jelly fa-sun text-sm scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90" aria-hidden="true"></i><i class="fa-jelly fa-moon absolute text-sm scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0" aria-hidden="true"></i><span class="sr-only">Toggle theme</span></button><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 border border-input bg-background hover:bg-accent hover:text-accent-foreground py-2 h-9 w-10 px-0 shadow-none" type="button" aria-haspopup="dialog" aria-expanded="false" aria-controls="radix-_R_sp5bsnpfalb_" data-state="closed" data-slot="sheet-trigger"><i class="fa-jelly fa-bars" aria-hidden="true"></i><span class="sr-only">Open menu</span></button></div></div><div class="hidden xl:grid gap-4 items-center xl:grid-cols-[1fr_auto_1fr] xl:gap-6 max-w-full xl:mx-auto xl:max-w-[80rem] 2xl:max-w-[90rem]"><div class="flex items-center w-full gap-3 min-w-0"><a href="https://hashnode.com/?utm_source=https%3A%2F%2Fmaximilianocontieri.com&amp;utm_medium=referral&amp;utm_campaign=blog_header_logo&amp;utm_content=logo" class="inline-flex items-center justify-center text-lg text-muted-foreground hover:text-foreground transition border rounded-md h-9 w-9 border-border hover:bg-muted"><i class="text-xl fa-brands fa-hashnode" aria-hidden="true"></i><span class="sr-only">Hashnode</span></a><span class="h-6 border-l border-border"></span><a class="flex items-center" href="/"><img alt="Maximiliano Contieri - Software Design" width="500" height="125" decoding="async" data-nimg="1" class="w-auto h-auto max-w-40 sm:max-w-48 max-h-10 sm:max-h-12 object-contain" style="color:transparent" src="https://cdn.hashnode.com/res/hashnode/image/upload/v1695814671171/qMChtqJmW.jpg"/><span class="sr-only">Maximiliano Contieri - Software Design</span></a></div><nav aria-label="Main navigation" class="flex justify-center w-full"><nav aria-label="Main" data-orientation="horizontal" dir="ltr" data-slot="navigation-menu" data-viewport="false" class="group/navigation-menu relative flex flex-1 items-center max-w-max justify-center"><div style="position:relative"><ul data-orientation="horizontal" data-slot="navigation-menu-list" class="group flex flex-1 list-none items-center flex-nowrap justify-center gap-1 text-muted-foreground text-sm" dir="ltr"><li data-slot="navigation-menu-item" class="relative"><a data-slot="navigation-menu-link" class="data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground focus:bg-accent focus:text-accent-foreground [&amp;_svg:not([class*=&#x27;text-&#x27;])]:text-muted-foreground flex-col p-2 outline-none focus-visible:outline-1 [&amp;_svg:not([class*=&#x27;
16size-&#x27;])]:size-4 inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground h-9 px-4 py-2" data-radix-collection-item="" href="/series/ai-coding-tips">AI Coding</a></li><li data-slot="navigation-menu-item" class="relative"><a data-slot="navigation-menu-link" class="data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground focus:bg-accent focus:text-accent-foreground [&amp;_svg:not([class*=&#x27;text-&#x27;])]:text-muted-foreground flex-col p-2 outline-none focus-visible:outline-1 [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground h-9 px-4 py-2" data-radix-collection-item="" href="/series/code-smells">Code Smells</a></li><li data-slot="navigation-menu-item" class="relative"><a data-slot="navigation-menu-link" class="data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground focus:bg-accent focus:text-accent-foreground [&amp;_svg:not([class*=&#x27;text-&#x27;])]:text-muted-foreground flex-col p-2 outline-none focus-visible:outline-1 [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground h-9 px-4 py-2" data-radix-collection-item="" href="/series/object-oriented-design">Design</a></li><li data-slot="navigation-menu-item" class="relative"><button id="radix-_R_ct95bsnpfalb_" data-state="closed" aria-expanded="false" data-slot="dropdown-menu-trigger" class="group w-max focus:bg-accent focus:text-accent-foreground data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent outline-none focus-visible:outline-1 group inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 hover:bg-accent py-2 h-9 px-3 text-muted-foreground hover:text-foreground bg-transparent shadow-none data-[state=open]:bg-transparent" type="button" aria-haspopup="menu" data-radix-collection-item="">More<!-- --> <span class="ml-1 flex items-center justify-center"><i class="fa-jelly fa-regular fa-angle-down size-3 leading-none transition duration-300 group-data-[state=open]:rotate-180" aria-hidden="true"></i></span></button></li></ul></div></nav></nav><div class="flex items-center justify-end gap-3 text-muted-foreground"><button class="gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 hover:bg-accent py-2 h-9 w-9 px-0 flex items-center justify-center text-muted-foreground hover:text-foreground bg-transparent border-border shadow-none" aria-label="Open search (press Control or Command and K)"><i class="fa-jelly fa-search text-sm" aria-hidden="true"></i><span class="sr-only">Open search (press Control or Command and K)</span></button><div class="flex items-center gap-3"><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focu
16s-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 hover:bg-accent w-9 px-3 h-9 text-muted-foreground hover:text-foreground shadow-none" type="button" id="radix-_R_1n95bsnpfalb_" aria-haspopup="menu" aria-expanded="false" data-state="closed" data-slot="dropdown-menu-trigger"><i class="fa-jelly fa-sun text-sm scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90" aria-hidden="true"></i><i class="fa-jelly fa-moon absolute text-sm scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0" aria-hidden="true"></i><span class="sr-only">Toggle theme</span></button><a target="_blank" rel="noopener" class="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 border border-input bg-background hover:bg-accent hover:text-accent-foreground py-2 gap-2 px-3 h-9 shadow-none" href="https://hashnode.com"><i class="text-sm fa-jelly fa-pencil" aria-hidden="true"></i>Write</a></div></div></div></div></header><div data-slot="dialog-header" class="flex flex-col gap-2 text-center sm:text-left sr-only"><h2 id="radix-_R_25bsnpfalbH1_" data-slot="dialog-title" class="text-lg leading-none font-semibold">Command Palette</h2><p id="radix-_R_25bsnpfalbH2_" data-slot="dialog-description" class="text-muted-foreground text-sm">Search for a command to run...</p></div><div class="px-4 sm:px-8"><div class="w-full xl:mx-auto xl:max-w-[80rem] 2xl:max-w-[90rem]"><div class="flex flex-col gap-8 pt-2 sm:pt-10"><section class="pb-16"><div class="space-y-8 max-w-4xl w-full mx-auto"><header class="mb-8 space-y-4 text-center"><p class="text-sm font-semibold uppercase tracking-wide text-muted-foreground">Series</p><h1 class="text-3xl sm:text-4xl font-bold tracking-tight text-balance text-foreground">Object Oriented Design</h1><div class="prose prose-lg dark:prose-invert max-w-none text-muted-foreground"><p>Tips for Object Oriented great designs</p>
17</div></header><section aria-label="Object Oriented Design posts"><ol id="_R_39bsnpfalb_" class="flex flex-col gap-5 list-none p-0" aria-busy="false"><li class="list-none"><article aria-labelledby="_R_1f9bsnpfalb_" class="h-full"><a class="block h-full" href="/singleton-the-root-of-all-evil"><div class="rounded-xl border bg-card text-card-foreground transition hover:border-slate-400 dark:hover:border-slate-600 h-full"><div class="grid h-full gap-4 p-4 items-stretch md:gap-6 md:p-6 md:grid-cols-[1.2fr_1fr]"><div class="flex flex-col gap-4"><header class="flex flex-col gap-3"><h3 id="_R_1f9bsnpfalb_" class="text-foreground text-lg sm:text-xl font-bold leading-snug tracking-tight transition-colors line-clamp-3">Singleton: The Root of all Evil</h3><p class="text-sm leading-relaxed text-muted-foreground line-clamp-3">Allowed global variables and supposed memory savings.</p></header><div class="flex flex-wrap items-center gap-3 text-sm text-muted-foreground"><span class="whitespace-nowrap">Aug 26, 2020</span><span class="whitespace-nowrap"><span class="mr-3" aria-hidden="true">·</span>11 min read</span><span class="whitespace-nowrap"><span class="mr-3" aria-hidden="true">·</span><span data-state="closed" data-slot="tooltip-trigger">2.7K</span></span></div></div><div class="flex items-center md:justify-end order-first md:order-last"><div class="relative overflow-hidden rounded-lg bg-muted aspect-[800/420] w-full md:max-w-[320px]"><img alt="Singleton: The Root of all Evil" loading="lazy" decoding="async" data-nimg="fill" class="object-cover object-center" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="https://cdn.hashnode.com/res/hashnode/image/upload/v1598388295860/rTL6lmH9F.jpeg"/></div></div></div></div></a></article></li><li class="list-none"><article aria-labelledby="_R_2f9bsnpfalb_" class="h-full"><a class="block h-full" href="/nude-models-part-i-setters"><div class="rounded-xl border bg-card text-card-foreground transition hover:border-slate-400 dark:hover:border-slate-600 h-full"><div class="grid h-full gap-4 p-4 items-stretch md:gap-6 md:p-6 md:grid-cols-[1.2fr_1fr]"><div class="flex flex-col gap-4"><header class="flex flex-col gap-3"><h3 id="_R_2f9bsnpfalb_" class="text-foreground text-lg sm:text-xl font-bold leading-snug tracking-tight transition-colors line-clamp-3">Nude Models — Part I : Setters</h3><p class="text-sm leading-relaxed text-muted-foreground line-clamp-3">
17Ye olde Reliable Data Structures and Their Controversial (Write) Access.
18Using objects as data structures is an established practice that generates many problems associated with the maintainability and evolution of software and misuses brilliant conc...</p></header><div class="flex flex-wrap items-center gap-3 text-sm text-muted-foreground"><span class="whitespace-nowrap">Aug 26, 2020</span><span class="whitespace-nowrap"><span class="mr-3" aria-hidden="true">·</span>6 min read</span><span class="whitespace-nowrap"><span class="mr-3" aria-hidden="true">·</span><span data-state="closed" data-slot="tooltip-trigger">1.2K</span></span></div></div><div class="flex items-center md:justify-end order-first md:order-last"><div class="relative overflow-hidden rounded-lg bg-muted aspect-[800/420] w-full md:max-w-[320px]"><img alt="Nude Models — Part I : Setters" loading="lazy" decoding="async" data-nimg="fill" class="object-cover object-center" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="https://cdn.hashnode.com/res/hashnode/image/upload/v1598484640066/5843ve1WZ.jpeg"/></div></div></div></div></a></article></li><li class="list-none"><article aria-labelledby="_R_3f9bsnpfalb_" class="h-full"><a class="block h-full" href="/nude-models-part-ii-getters"><div class="rounded-xl border bg-card text-card-foreground transition hover:border-slate-400 dark:hover:border-slate-600 h-full"><div class="grid h-full gap-4 p-4 items-stretch md:gap-6 md:p-6 md:grid-cols-[1.2fr_1fr]"><div class="flex flex-col gap-4"><header class="flex flex-col gap-3"><h3 id="_R_3f9bsnpfalb_" class="text-foreground text-lg sm:text-xl font-bold leading-snug tracking-tight transition-colors line-clamp-3">Nude Models — Part II : Getters</h3><p class="text-sm leading-relaxed text-muted-foreground line-clamp-3">Ye olde Reliable Data Structures and Their Controversial (Read) Access.
19Using objects as data structures is an established practice that generates many problems associated with the maintainability and evolution of software. It misuses brilliant conce...</p></header><div class="flex flex-wrap items-center gap-3 text-sm text-muted-foreground"><span class="whitespace-nowrap">Aug 28, 2020</span><span class="whitespace-nowrap"><span class="mr-3" aria-hidden="true">·</span>7 min read</span><span class="whitespace-nowrap"><span class="mr-3" aria-hidden="true">·</span><span data-state="closed" data-slot="tooltip-trigger">1.2K</span></span></div></div><div class="flex items-center md:justify-end order-first md:order-last"><div class="relative overflow-hidden rounded-lg bg-muted aspect-[800/420] w-full md:max-w-[320px]"><img alt="Nude Models — Part II : Getters" loading="lazy" decoding="async" data-nimg="fill" class="object-cover object-center" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="https://cdn.hashnode.com/res/hashnode/image/upload/v1598579188987/v6uPVTfy5.jpeg"/></div></div></div></div></a></article></li><li class="list-none"><article aria-labelledby="_R_4f9bsnpfalb_" class="h-full"><a class="block h-full" href="/object-design-checklist"><div class="rounded-xl border bg-card text-card-foreground transition hover:border-slate-400 dark:hover:border-slate-600 h-full"><div class="grid h-full gap-4 p-4 items-stretch md:gap-6 md:p-6 md:grid-cols-[1.2fr_1fr]"><div class="flex flex-col gap-4"><header class="flex flex-col gap-3"><h3 id="_R_4f9bsnpfalb_" class="text-foreground text-lg sm:text-xl font-bold leading-snug tracking-tight transition-colors line-clamp-3">Object Design Checklist</h3><p class="text-sm leading-relaxed text-muted-foreground line-clamp-3">This is an index to already published articles on software design.
20Some rules must be followed and embraced to create great software designs. 
21This article summarizes them, serving as an index to full stories.
22
23TL;DR: Important concepts about Object-...</p></header><div class="flex flex-wrap items-center gap-3 text-sm text-muted-foreground"><span class="whitespace-nowrap">Aug 28, 2020</span><span class="whitespace-nowrap"><span class="mr-3" aria-hidden="true">·</span>1 min read</span><span class="whitespace-nowrap"><span class="mr-3" aria-hidden="true">·</span><span data-state="closed" data-slot="tooltip-trigger">1.5K</span></span></div></div><div class="flex items-center md:justify-end order-first md:order-last"><div class="relative overflow-hidden rounded-lg bg-muted aspect-[800/420] w-full md:max-w-[320px]"><img alt="Object Design Checklist" loading="lazy" decoding="async" data-nimg="fill" class="object-cover object-center" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="https://cdn.hashnode.com/res/hashnode/image/upload/v1598656388563/eftAqfUwb.jpeg"/></div></div></div></div></a></article></li><li class="list-none"><article aria-labelledby="_R_5f9bsnpfalb_" class="h-full"><a class="block h-full" href="/what-is-wrong-with-software"><div class="rounded-xl border bg-card text-card-foreground transition hover:border-slate-400 dark:hover:border-slate-600 h-full"><div class="grid h-full gap-4 p-4 items-stretch md:gap-6 md:p-6 md:grid-cols-[1.2fr_1fr]"><div class="flex flex-col gap-4"><header class="flex flex-col gap-3"><h3 id="_R_5f9bsnpfalb_" class="text-foreground text-lg sm:text-xl font-bold leading-snug tracking-tight transition-colors line-clamp-3">What is (wrong with) software?</h3><p class="text-sm leading-relaxed text-muted-foreground line-clamp-3">Software is eating the world. Those of us who work, live, and love software do not usually stop by to think about its meaning.
24
25TL:DR: We will address current software design problems in a minimalist way.
26
27In university and industry, we use the follo...</p></header><div class="flex flex-wrap items-center gap-3 text-sm text-muted-foreground"><span class="whitespace-nowrap">Aug 29, 2020</span><span class="whitespace-nowrap"><span class="mr-3" aria-hidden="true">·</span>4 min read</span><span class="whitespace-nowrap"><span class="mr-3" aria-hidden="true">·</span><span data-state="closed" data-slot="tooltip-trigger">2.0K</span></span></div></div><div class="flex items-center md:justify-end order-first md:order-last"><div class="relative overflow-hidden rounded-lg bg-muted aspect-[800/420] w-full md:max-w-[320px]"><img alt="What is (wrong with) software?" loading="lazy" decoding="async" data-nimg="fill" class="object-cover object-center" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="https://cdn.hashnode.com/res/hashnode/image/upload/v1598729218996/69TXBn14C.png"/></div></div></div></div></a></article></li><li class="list-none"><article aria-labelledby="_R_6f9bsnpfalb_" class="h-full"><a class="block h-full" href="/the-one-and-only-software-design-principle"><div class="rounded-xl border bg-card text-card-foreground transition hover:border-slate-400 dark:hover:border-slate-600 h-full"><div class="grid h-full gap-4 p-4 items-stretch md:gap-6 md:p-6 md:grid-cols-[1.2fr_1fr]"><div class="flex flex-col gap-4"><header class="flex flex-col gap-3"><h3 id="_R_6f9bsnpfalb_" class="text-foreground text-lg sm:text-xl font-bold leading-snug tracking-tight transition-colors line-clamp-3">The one and only software design principle</h3><p class="text-sm leading-relaxed text-muted-foreground line-clamp-3">If we build our entire paradigm on a single rule, we can keep it simple and make excellent models.
28
29TL;DR: Just follow this design principle
30
31Being minimalist and being axiomatic means we can derive a set of rules from a single definition.
32If we buil...</p></header><div class="flex flex-wrap items-center gap-3 text-sm text-muted-foreground"><span class="whitespace-nowrap">Aug 31, 2020</span><span class="whitespace-nowrap"><span class="mr-3" aria-hidden="true">·</span>5 min read</span><span class="whitespace-nowrap"><span class="mr-3" aria-hidden="true">·</span><span data-state="closed" data-slot="tooltip-trigger">4.1K</span></span></div></div><div class="flex items-center md:justify-end order-first md:order-last"><div class="relative overflow-hidden rounded-lg bg-muted aspect-[800/420] w-full md:max-w-[320px]"><img alt="The one and only software design principle" loading="lazy" decoding="async" data-nimg="fill" class="object-cover object-center" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="https://cdn.hashnode.com/res/hashnode/image/upload/v1598843398674/Pi0iqcwbu.png"/></div></div></div></div></a></article></li></ol><div class="flex justify-center py-8"><button type="button" class="group flex items-center gap-2 rounded-lg px-5 py-2.5 text-sm font-medium text-muted-foreground transition hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary disabled:opacity-50" aria-controls="_R_39bsnpfalb_" aria-label="Load more posts"><span aria-live="polite">Load more posts</span><i class="fa-regular fa-arrow-down text-sm transition-transform group-hover:translate-y-0.5" aria-hidden="true"></i></button></div></section></div></section></div></div></div>
32<script type="application/ld+json">{"@context":"https://schema.org","@type":"CollectionPage","name":"Object Oriented Design","url":"https://maximilianocontieri.com/series/object-oriented-design","mainEntityOfPage":"https://maximilianocontieri.com/series/object-oriented-design","publisher":{"@type":"Organization","name":"Maximiliano Contieri - Software Design","url":"https://maximilianocontieri.com","logo":"https://cdn.hashnode.com/res/hashnode/image/upload/v1695814671171/qMChtqJmW.jpg"},"description":"Tips for Object Oriented great designs\n","creator":{"@type":"Person","name":"Maxi Contieri","url":"https://hashnode.com/@mcsee"},"hasPart":[{"@type":"Article","headline":"Singleton: The Root of all Evil","url":"https://maximilianocontieri.com/singleton-the-root-of-all-evil"},{"@type":"Article","headline":"Nude Models — Part I : Setters","url":"https://maximilianocontieri.com/nude-models-part-i-setters"},{"@type":"Article","headline":"Nude Models — Part II : Getters","url":"https://maximilianocontieri.com/nude-models-part-ii-getters"},{"@type":"Article","headline":"Object Design Checklist","url":"https://maximilianocontieri.com/object-design-checklist"},{"@type":"Article","headline":"What is (wrong with) software?","url":"https://maximilianocontieri.com/what-is-wrong-with-software"},{"@type":"Article","headline":"The one and only software design principle","url":"https://maximilianocontieri.com/the-one-and-only-software-design-principle"}]}</script>
32<footer class="px-4 pt-8 pb-20 sm:px-8 text-muted-foreground" aria-label="Footer"><div class="w-full max-w-4xl mx-auto"><div class="flex flex-col items-center gap-4 text-center text-sm"><section id="impressum" class="w-full max-w-2xl pt-3 text-left text-sm text-muted-foreground text-center [&amp;_*]:text-center [&amp;_*]:mx-auto" aria-label="Impressum"><div class="prose prose-sm prose-stone dark:prose-invert max-w-none text-muted-foreground prose-a:text-muted-foreground prose-a:no-underline prose-a:transition prose-a:hover:text-foreground [&amp;_ul]:list-none [&amp;_ol]:list-none"><p>Technical Opinions are my own. I don't have the revealed truth. </p>
33<p>Software Design is a creative activity. These are hints and not rigid rules.</p>
34<p>I write on BackEnd Business Systems and OOP Design. My advice/experience might not suit other systems.</p>
35<p>You can write me at info(at)maximilianocontieri.com</p></div><div class="my-6 h-px w-full bg-border" aria-hidden="true"></div></section><p class="font-medium"><time dateTime="2026"><span class="font-sans">©</span> <!-- -->2026</time> <!-- -->Maximiliano Contieri - Software Design</p><nav aria-label="Footer navigation"><ul class="flex flex-wrap justify-center gap-4 text-sm tracking-wide"><li><a class="transition hover:text-foreground" href="/archive">Archive</a></li><li><a class="transition hover:text-foreground" href="/recommendations">Recommendations</a></li><li><a class="transition hover:text-foreground" target="_blank" rel="noopener" href="https://hashnode.com/privacy-policy">Privacy</a></li><li><a class="transition hover:text-foreground" target="_blank" rel="noopener" href="https://hashnode.com/terms">Terms</a></li></ul></nav><div class="pt-8 flex justify-center gap-6"><a target="_blank" rel="noopener" class="flex items-center gap-2 text-sm transition hover:text-foreground" title="Sitemap" href="/sitemap.xml"><i class="fa-regular fa-sitemap"></i><span>Sitemap</span></a><a target="_blank" rel="noopener" class="flex items-center gap-2 text-sm transition hover:text-foreground" title="RSS Feed" href="/rss.xml"><i class="fa-regular fa-rss"></i><span>RSS</span></a></div><div class="pt-10 text-center"><a target="_blank" rel="noopener" aria-label="Visit Hashnode (opens in a new tab)" class="inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground h-10 rounded-md text-xl px-5 py-4" href="https://hashnode.com/?utm_source=https%3A%2F%2Fmaximilianocontieri.com&amp;utm_medium=referral&amp;utm_campaign=blog_footer_logo&amp;utm_content=logo"><svg fill="none" viewBox="0 0 282 39" aria-hidden="true" class="h-6 w-auto min-w-[9.5rem] text-muted-foreground transition hover:text-foreground"><path fill="currentColor" d="M2.68 13.032c-3.573 3.505-3.573 9.363 0 12.936L13.032 36.32c3.505 3.573 9.363 3.573 12.936 0L36.32 25.968c3.573-3.573 3.573-9.431 0-12.936L25.968 2.68c-3.573-3.573-9.431-3.573-12.936 0zm12.211 1.935c2.507-2.521 6.582-2.544 9.104-.038s2.544 6.582.038 9.104-6.582 2.544-9.104.038-2.544-6.582-.038-9.104"></path><path fill="currentColor" d="M268.379 39q-6.322 0-10.35-4.108-4.002-4.134-4.002-10.483 0-6.296 4.002-10.43 4-4.135 10.163-4.135 6.028 0 9.817 3.734 3.814 3.735 3.814 9.497v2.8h-24.248v-4.054h17.633q-.187-2.747-2.054-4.508-1.868-1.76-4.962-1.76-3.28-.001-5.388 2.374-2.108 2.373-2.108 6.375 0 4.188 2.348 6.695 2.347 2.481 5.895 2.481 1.68 0 2.934-.453a8.5 8.5 0 0 0 2.321-1.307q1.041-.854 2.268-2.614l4.694 2.96q-1.707 2.748-3.494 4.135a12.7 12.7 0 0 1-3.975 2.081q-2.187.72-5.308.72m-33.496 0q-5.575 0-9.283-4.028-3.681-4.029-3.681-10.484 0-6.43 3.761-10.51 3.76-4.108 9.47-4.108 2.8 0 5.175 1.2 2.4 1.174 3.628 3.148l.026-.08V0h7.016v38.2h-6.722v-4.722l.64.8-.694.133q-1.28 2.108-3.788 3.361Q237.924 39 234.883 39m1.627-6.002q3.308 0 5.495-2.428t2.188-6.135q0-3.762-2.214-6.109-2.214-2.374-5.469-2.374-3.28 0-5.522 2.347-2.214 2.348-2.214 6.163 0 3.76 2.214 6.162 2.214 2.374 5.522 2.374M205.811 39q-6.376 0-10.537-4.161-4.161-4.188-4.161-10.404 0-6.321 4.161-10.456 4.188-4.135 10.537-4.135 6.348 0 10.537 4.161 4.188 4.161 4.188 10.43 0 6.216-4.188 10.404Q212.186 39 205.811 39m0-6.162q3.307 0 5.575-2.374 2.267-2.374 2.267-6.055 0-3.707-2.294-6.056-2.267-2.347-5.548-2.347-3.308 0-5.575 2.374-2.268 2.348-2.268 6.029t2.241 6.055q2.268 2.374 5.602 2.374M162.586 38.2V10.644h6.802v5.015l-.8-.987h.906q1.308-2.187 3.762-3.494 2.48-1.335 5.228-1.334 4.615 0 7.256 2.8 2.667 2.776 2.667 7.603V38.2h-
357.069V21.794q0-2.854-1.387-4.401t-4.134-1.547q-2.614 0-4.402 1.974-1.76 1.974-1.76 4.881V38.2zm-30.181 0V0h6.962v14.698h.134q1.2-2.187 3.574-3.521 2.375-1.335 5.229-1.334 4.615 0 7.255 2.828 2.668 2.801 2.668 7.522V38.2h-7.069V21.794q0-2.827-1.387-4.402-1.387-1.573-4.055-1.573-2.587 0-4.428 2.027-1.814 2.027-1.814 4.962v15.391zm-14.416.8q-2.882 0-5.015-.64-2.108-.614-3.761-1.84-1.654-1.228-2.668-2.695l-.987-1.467 4.695-3.174.773 1.067a9.1 9.1 0 0 0 1.788 1.814 8.2 8.2 0 0 0 2.32 1.2q1.308.4 3.068.4 2.161 0 3.441-.8 1.308-.8 1.307-2.294 0-1.36-1.147-2.108-1.12-.747-5.068-1.654-5.335-1.253-7.656-3.334-2.32-2.107-2.321-5.362 0-3.76 3.148-6.002 3.148-2.267 7.923-2.267 2.454 0 4.348.507t3.388 1.493q1.493.988 2.454 2.188l.987 1.2-4.482 3.255-.667-.774a7.4 7.4 0 0 0-1.627-1.387 6.4 6.4 0 0 0-2.054-.88 9.5 9.5 0 0 0-2.401-.294q-1.974 0-3.201.8-1.2.774-1.2 1.921 0 1.254 1.12 2.027 1.147.748 5.229 1.681 5.334 1.227 7.629 3.308 2.294 2.055 2.294 5.308 0 4.029-3.228 6.43Q123.217 39 117.989 39M87.61 39q-4.508 0-7.335-2.454-2.828-2.481-2.828-6.482 0-4.188 3.254-6.669t8.483-2.48q2.082 0 4.028.426 1.974.427 3.361 1.12v-1.6q0-2.588-1.813-4.082-1.788-1.493-4.615-1.493-1.628 0-2.801.373a8.7 8.7 0 0 0-2.188.987q-.987.614-1.84 1.414l-.854.8-4.081-3.788 1.307-1.173a18.7 18.7 0 0 1 2.934-2.108q1.601-.933 3.601-1.44t4.589-.507q5.868 0 9.229 2.88 3.361 2.882 3.361 8.084V38.2h-6.749v-5.922l1.654 2.187h-1.76q-1.308 2.055-3.655 3.308Q90.545 39 87.611 39m1.814-4.988q3.148 0 5.149-2.187 2-2.215 2-5.309v-.08q-1.12-.693-2.72-1.094a13 13 0 0 0-3.388-.426q-2.828 0-4.562 1.2-1.734 1.173-1.734 3.521 0 2.028 1.468 3.201t3.787 1.174M49 38.2V0h6.962v14.698h.134q1.2-2.187 3.574-3.521 2.375-1.335 5.229-1.334 4.615 0 7.255 2.828 2.668 2.801 2.668 7.522V38.2h-7.07V21.794q0-2.827-1.386-4.402-1.387-1.573-4.055-1.573-2.587 0-4.428 2.027-1.815 2.027-1.814 4.962v15.391z"></path></svg></a></div></div></div></footer></main><!--$?--><template id="B:1"></template><!--/$-->
35<script>requestAnimationFrame(function(){$RT=performance.now()});</script>
35<script src="/_next/static/chunks/webpack-55b36f0cd6c208fe.js" id="_R_" async=""></script>
35<script>(self.__next_f=self.__next_f||[]).push([0])</script>
35<script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[16174,[\"4554\",\"static/chunks/4554-984b480a9db5f3fe.js\",\"7563\",\"static/chunks/7563-4dfa0994a9b0e37c.js\",\"9216\",\"static/chunks/9216-9272709ba40c1cfd.js\",\"2810\",\"static/chunks/2810-6b74d77b4b0dc790.js\",\"3091\",\"static/chunks/3091-bf1537ff6571a1bd.js\",\"7177\",\"static/chunks/app/layout-6ae7b4b583d4bba3.js\"],\"ThemeProvider\"]\n3:I[82180,[\"4554\",\"static/chunks/4554-984b480a9db5f3fe.js\",\"7563\",\"static/chunks/7563-4dfa0994a9b0e37c.js\",\"9216\",\"static/chunks/9216-9272709ba40c1cfd.js\",\"2810\",\"static/chunks/2810-6b74d77b4b0dc790.js\",\"3091\",\"static/chunks/3091-bf1537ff6571a1bd.js\",\"7177\",\"static/chunks/app/layout-6ae7b4b583d4bba3.js\"],\"TooltipProvider\"]\n4:I[63851,[\"4554\",\"static/chunks/4554-984b480a9db5f3fe.js\",\"7563\",\"static/chunks/7563-4dfa0994a9b0e37c.js\",\"9216\",\"static/chunks/9216-9272709ba40c1cfd.js\",\"2810\",\"static/chunks/2810-6b74d77b4b0dc790.js\",\"3091\",\"static/chunks/3091-bf1537ff6571a1bd.js\",\"7177\",\"static/chunks/app/layout-6ae7b4b583d4bba3.js\"],\"UrqlProvider\"]\n5:I[82714,[\"4554\",\"static/chunks/4554-984b480a9db5f3fe.js\",\"7563\",\"static/chunks/7563-4dfa0994a9b0e37c.js\",\"9216\",\"static/chunks/9216-9272709ba40c1cfd.js\",\"2810\",\"static/chunks/2810-6b74d77b4b0dc790.js\",\"3091\",\"static/chunks/3091-bf1537ff6571a1bd.js\",\"7177\",\"static/chunks/app/layout-6ae7b4b583d4bba3.js\"],\"ConsentManager\"]\n6:I[9766,[],\"\"]\n7:I[98924,[],\"\"]\n8:I[33293,[\"4554\",\"static/chunks/4554-984b480a9db5f3fe.js\",\"4345\",\"static/chunks/app/not-found-b861935655c5698b.js\"],\"default\"]\n9:I[21447,[\"4554\",\"static/chunks/4554-984b480a9db5f3fe.js\",\"7563\",\"static/chunks/7563-4dfa0994a9b0e37c.js\",\"9216\",\"static/chunks/9216-9272709ba40c1cfd.js\",\"2810\",\"static/chunks/2810-6b74d77b4b0dc790.js\",\"3091\",\"static/chunks/3091-bf1537ff6571a1bd.js\",\"7177\",\"static/chunks/app/layout-6ae7b4b583d4bba3.js\"],\"Integrations\"]\na:I[35514,[\"4554\",\"static/chunks/4554-984b480a9db5f3fe.js\",\"7563\",\"static/chunks/7563-4dfa0994a9b0e37c.js\",\"9216\",\"static/chunks/9216-9272709ba40c1cfd.js\",\"2810\",\"static/chunks/2810-6b74d77b4b0dc790.js\",\"3091\",\"static/chunks/3091-bf1537ff6571a1bd.js\",\"7177\",\"static/chunks/app/layout-6ae7b4b583d4bba3.js\"],\"Analytics\"]\nc:I[24431,[],\"OutletBoundary\"]\ne:I[15278,[],\"AsyncMetadataOutlet\"]\n10:I[24431,[],\"ViewportBoundary\"]\n12:I[24431,[],\"MetadataBoundary\"]\n13:\"$Sreact.suspense\"\n15:I[57150,[],\"\"]\n:HL[\"/_next/static/media/22a5144ee8d83bca-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/72a2a501b11d0ccb.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/8934b430a4adeb19-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/8e9860b6e62d6359-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c4b700dcb2187787-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/0d16c72050851854.css\",\"style\"]\n:HL[\"/_next/static/css/7ffcc02a3c67389b.css\",\"style\"]\n:HL[\"/_next/static/css/c20e76e7d11dec32.css\",\"style\"]\n:HL[\"/_next/static/css/59fefb2212bd5b60.css\",\"style\"]\n0:{\"P\":null,\"b\":\"RrCGzNVHUG674hJ_sjvms\",\"p\":\"\",\"c\":[\"\",\"series\",\"object-oriented-design?x-host=maximilianocontieri.com\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"series\",{\"children\":[[\"slug\",\"object-oriented-design\",\"d\"],{\"children\":[\"__PAGE__?{\\\"x-host\\\":\\\"maximilianocontieri.com\\\"}\",{}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/0d16c72050851854.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/7ffcc02a3c67389b.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/c20e76e7d11dec32.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/59fefb2212bd5b60.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"la"])</script>
35<script>self.__next_f.push([1,"ng\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"type\":\"text/javascript\",\"dangerouslySetInnerHTML\":{\"__html\":\"window.addEventListener('message',function(e){var d=e.data;if(!d||d.__hnWidget!==1||typeof d.h!=='number'||d.h\u003c=0)return;var f=document.querySelectorAll('.hn-widget-frame');for(var i=0;i\u003cf.length;i++){if(f[i].contentWindow===e.source){f[i].style.height=d.h+'px';break;}}});\"}}]}],[\"$\",\"body\",null,{\"className\":\"__variable_c2612a __variable_246ccd __variable_3069d5 bg-background dark:bg-background\",\"children\":[\"$\",\"$L2\",null,{\"attribute\":\"class\",\"defaultTheme\":\"system\",\"enableSystem\":true,\"disableTransitionOnChange\":true,\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"children\":[[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"$L8\",null,{}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"$L9\",null,{}],[\"$\",\"$La\",null,{}]]}]}]}]}]}]]}]]}],{\"children\":[\"series\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"slug\",\"object-oriented-design\",\"d\"],[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[\"$Lb\",null,[\"$\",\"$Lc\",null,{\"children\":[\"$Ld\",[\"$\",\"$Le\",null,{\"promise\":\"$@f\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$L10\",null,{\"children\":\"$L11\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]],[\"$\",\"$L12\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$13\",null,{\"fallback\":null,\"children\":\"$L14\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$15\",[]],\"s\":false,\"S\":false}\n11:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nd:null\n16:I[652,[\"4554\",\"static/chunks/4554-984b480a9db5f3fe.js\",\"7563\",\"static/chunks/7563-4dfa0994a9b0e37c.js\",\"5001\",\"static/chunks/5001-fae0bebdd93f95e3.js\",\"2423\",\"static/chunks/2423-c8b1388240338d7d.js\",\"9216\",\"static/chunks/9216-9272709ba40c1cfd.js\",\"3091\",\"static/chunks/3091-bf1537ff6571a1bd.js\",\"652\",\"static/chunks/652-f40dcb480b4e356f.js\",\"730\",\"static/chunks/730-8191af9e9424b148.js\",\"7382\",\"static/chunks/app/series/%5Bslug%5D/page-95c6281db9d3a307.js\"],\"BlogHeader\"]\nb:[\"$\",\"main\",null,{\"id\":\"main-content\",\"className\":\"min-h-screen bg-background dark:bg-background\",\"children\":[[\"$\",\"$L16\",null,{\"publication\":{\"__typename\":\"Publication\",\"id\":\"5f456da96d1d6b1abbc3e80b\",\"url\":\"https://maximilianocontieri.com\",\"canonicalURL\":\"https://maximilianocontieri.com\",\"urlPattern\":\"simple\",\"title\":\"Maximiliano Contieri - Software Design\",\"displayTitle\":\"Maximiliano Contieri - Software Design\",\"hasBadges\":true,\"descriptionSEO\":\"I am Maximiliano Contieri\\nI've been working as a software engineer and teaching for about 25 years.\\nI write about software design, refactoring, test driven development, clean code and code smells.\",\"seo\":{\"title\":null,\"description\":\"I am Maximiliano Contieri\\nI've been working as a software engineer and teaching for about 25 years.\\nI write about softw
35are design, refactoring, test driven development, clean code and code smells.\",\"__typename\":\"SEO\"},\"publicMembers\":{\"totalDocuments\":1,\"__typename\":\"PublicMembers\"},\"about\":{\"html\":\"\u003cp\u003eLearn something new every day. 💻\\nCS software engineer\\n👷working\\n👨🏽‍🏫teaching"])</script>
35<script>self.__next_f.push([1,"\\n✍🏾writing\\n🎨Software design\\n🏢SOLID\\n🌉TDD\\n👴Legacy \u003c/p\u003e\\n\u003cp\u003eWrite me at info(at)maximilianocontieri.com\u003c/p\u003e\\n\",\"text\":\"Learn something new every day. 💻\\nCS software engineer\\n👷working\\n👨🏽‍🏫teaching\\n✍🏾writing\\n🎨Software design\\n🏢SOLID\\n🌉TDD\\n👴Legacy \\nWrite me at info(at)maximilianocontieri.com\\n\",\"__typename\":\"Content\"},\"features\":{\"proTeam\":{\"isEnabled\":false,\"__typename\":\"ProTeamFeature\"},\"newsletter\":{\"isEnabled\":true,\"__typename\":\"NewsletterFeature\"},\"viewCount\":{\"isEnabled\":true,\"__typename\":\"ViewCountFeature\"},\"readTime\":{\"isEnabled\":true,\"__typename\":\"ReadTimeFeature\"},\"textSelectionSharer\":{\"isEnabled\":true,\"__typename\":\"TextSelectionSharerFeature\"},\"gptBotCrawling\":{\"__typename\":\"GPTBotCrawlingFeature\",\"isEnabled\":true},\"headlessCMS\":{\"isEnabled\":false,\"__typename\":\"HeadlessCMSFeature\"},\"__typename\":\"PublicationFeatures\"},\"aeoSettings\":{\"isEnabled\":false,\"llmsTxtEnabled\":true,\"crawlers\":{\"gptBot\":true,\"claudeBot\":true,\"perplexityBot\":true,\"googleExtended\":true,\"ccBot\":true,\"__typename\":\"AeoCrawlerSettings\"},\"__typename\":\"PublicationAeoSettings\"},\"metaTags\":\"\",\"ogMetaData\":{\"image\":\"https://cdn.hashnode.com/uploads/og-images/5f456a23b9870f18f59a8793/171fc22e-7656-4291-90a2-029643c14cf8.jpg\",\"__typename\":\"OpenGraphMetaData\"},\"author\":{\"__typename\":\"User\",\"id\":\"5f456a23b9870f18f59a8793\",\"name\":\"Maxi Contieri\",\"username\":\"mcsee\",\"profilePicture\":\"https://cdn.hashnode.com/res/hashnode/image/upload/v1690339610314/hjEsqceL_.png\"},\"preferences\":{\"__typename\":\"PublicationPreferences\",\"logo\":\"https://cdn.hashnode.com/res/hashnode/image/upload/v1695814671171/qMChtqJmW.jpg\",\"darkMode\":{\"__typename\":\"DarkModePreferences\",\"logo\":null,\"enabled\":true},\"navbarItems\":[{\"__typename\":\"PublicationNavbarItem\",\"id\":\"69c44c4110e664c5daeeb691\",\"label\":\"AI Coding\",\"url\":null,\"type\":\"series\",\"series\":{\"__typename\":\"Series\",\"id\":\"695aea668f69fef20c389d0e\",\"slug\":\"ai-coding-tips\"},\"page\":null},{\"__typename\":\"PublicationNavbarItem\",\"id\":\"69c44c4110e664c5daeeb692\",\"label\":\"Code Smells\",\"url\":null,\"type\":\"series\",\"series\":{\"__typename\":\"Series\",\"id\":\"5fa001e8701b426a980967ba\",\"slug\":\"code-smells\"},\"page\":null},{\"__typename\":\"PublicationNavbarItem\",\"id\":\"69c44c4110e664c5daeeb693\",\"label\":\"Design\",\"url\":null,\"type\":\"series\",\"series\":{\"__typename\":\"Series\",\"id\":\"5fa00304701b426a980967d8\",\"slug\":\"object-oriented-design\"},\"page\":null},{\"__typename\":\"PublicationNavbarItem\",\"id\":\"69c44c4110e664c5daeeb694\",\"label\":\"Blogging\",\"url\":null,\"type\":\"series\",\"series\":{\"__typename\":\"Series\",\"id\":\"5fb31d18595a24599b2f2ef5\",\"slug\":\"blogging\"},\"page\":null},{\"__typename\":\"PublicationNavbarItem\",\"id\":\"69c44c4110e664c5daeeb695\",\"label\":\"Productivity\",\"url\":null,\"type\":\"series\",\"series\":{\"__typename\":\"Series\",\"id\":\"5fea38e55283d44a62c7246e\",\"slug\":\"productivity\"},\"page\":null},{\"__typename\":\"PublicationNavbarItem\",\"id\":\"69c44c4110e664c5daeeb696\",\"label\":\"About\",\"url\":null,\"type\":\"page\",\"series\":null,\"page\":{\"__typename\":\"StaticPage\",\"id\":\"5fb02d0cb69caa470a3c3839\",\"slug\":\"about\"}},{\"__typename\":\"PublicationNavbarItem\",\"id\":\"69c44c4110e664c5daeeb697\",\"label\":\"Support Me\",\"url\":\"https://www.buymeacoffee.com/mcsee\",\"type\":\"link\",\"series\":null,\"page\":null}],\"enabledPages\":{\"__typename\":\"EnabledPages\",\"badges\":true,\"newsletter\":false,\"members\":false},\"layout\":\"magazine\",\"disableFooterBranding\":false,\"isSubscriptionModalDisabled\":false},\"favicon\":\"https://cdn.hashnode.com/res/hashnode/image/upload/v1695814683130/MTm7YovRf.png\",\"headerColor\":\"\",\"integrations\":{\"fbPixelID\":\"\",\"fathomSiteID\":\"\",\"fathomCustomDomainEnabled\":false,\"fathomCustomDomain\":\"\",\"hotjarSiteID\":\"\",\"matomoSiteID\":null,\"matomoURL\":\"\",\"gaTrackingID\":\"G-DG3GH21RFZ\",\"gTagManagerID\":null,\"plausibleAnalyticsEnabled\":false,\"wmPaymentPointer\":\"$$ilp.uphold.com/28iG9FM7hZ2k\",\"koalaPublicKey\":null,\"msClarityID\":null,\"openPanelClientId\":null,\"consentManagement\":{\"enabled\":false,\"ver
35sion\":1,\"privacyPolicyURL\":null,\"__typename\":\"ConsentManagement\"},\"__typename\":\"PublicationIntegrations\"},\"imprintV2\":{\"__typename\":\"ImprintV2\",\"html\":\"\u003cp\u003eTechnical Opinions are my own"])</script>
35<script>self.__next_f.push([1,". I don't have the revealed truth. \u003c/p\u003e\\n\u003cp\u003eSoftware Design is a creative activity. These are hints and not rigid rules.\u003c/p\u003e\\n\u003cp\u003eI write on BackEnd Business Systems and OOP Design. My advice/experience might not suit other systems.\u003c/p\u003e\\n\u003cp\u003eYou can write me at info(at)maximilianocontieri.com\u003c/p\u003e\\n\"},\"postsCount\":{\"totalDocuments\":494,\"__typename\":\"PostConnection\"},\"isTeam\":true,\"links\":{\"twitter\":\"https://twitter.com/mcsee1\",\"instagram\":null,\"github\":\"https://github.com/mcsee\",\"website\":\"http://maximilianocontieri.com\",\"hashnode\":\"https://hashnode.com/@mcsee\",\"youtube\":null,\"dailydev\":\"https://app.daily.dev/mcsee\",\"linkedin\":\"https://www.linkedin.com/in/mcsee/\",\"mastodon\":null,\"facebook\":null,\"bluesky\":\"https://bsky.app/profile/mcsee.bsky.social\",\"__typename\":\"PublicationLinks\"},\"domainInfo\":{\"__typename\":\"DomainInfo\",\"hashnodeSubdomain\":\"mcsee\",\"domain\":{\"__typename\":\"Domain\",\"host\":\"maximilianocontieri.com\",\"ready\":true},\"wwwPrefixedDomain\":null},\"redirectionRules\":[{\"source\":\"/code-smell-159-mixed-case\",\"destination\":\"/code-smell-159-mixedcase\",\"type\":301,\"__typename\":\"RedirectionRule\"},{\"source\":\"/code-smell-174-broken-windows\",\"destination\":\"/code-smell-173-broken-windows\",\"type\":301,\"__typename\":\"RedirectionRule\"},{\"source\":\"/how-to-detect-text-generated-by-artificial-intellgence\",\"destination\":\"/how-to-detect-text-generated-by-artificial-intelligence\",\"type\":301,\"__typename\":\"RedirectionRule\"},{\"source\":\"/10-more-simple-tips-to-boost-your-productivity-x2-2021-guide\",\"destination\":\"/10-more-simple-tips-to-boost-your-productivity-x2\",\"type\":301,\"__typename\":\"RedirectionRule\"},{\"source\":\"/code-smell-300-packet-hallucination\",\"destination\":\"/code-smell-300-package-hallucination\",\"type\":301,\"__typename\":\"RedirectionRule\"},{\"source\":\"/explain-in-5-levels-of-difficulty\",\"destination\":\"/explain-in-5-levels-of-difficulty-series\",\"type\":301,\"__typename\":\"RedirectionRule\"},{\"source\":\"/refactoring-035-replace-string-concatenations-with-text-blocks\",\"destination\":\"/refactoring-036-replace-string-concatenations-with-text-blocks\",\"type\":301,\"__typename\":\"RedirectionRule\"}],\"customRules\":[],\"totalRecommendedPublications\":1,\"allowContributorEdits\":false,\"series\":{\"id\":\"5fa00304701b426a980967d8\",\"name\":\"Object Oriented Design\",\"coverImage\":null,\"slug\":\"object-oriented-design\",\"description\":{\"html\":\"\u003cp\u003eTips for Object Oriented great designs\u003c/p\u003e\\n\",\"markdown\":\"Tips for Object Oriented great designs\",\"text\":\"Tips for Object Oriented great designs\\n\",\"__typename\":\"Content\"},\"cuid\":\"ckh0jxdzs07qw20s16jmh8og7\",\"author\":{\"id\":\"5f456a23b9870f18f59a8793\",\"name\":\"Maxi Contieri\",\"username\":\"mcsee\",\"__typename\":\"User\"},\"posts\":{\"edges\":[{\"node\":{\"__typename\":\"Post\",\"id\":\"5f45a70e9b597625e2debaef\",\"title\":\"Singleton: The Root of all Evil\",\"slug\":\"singleton-the-root-of-all-evil\",\"publishedAt\":\"2020-08-26T00:04:30.197Z\",\"cuid\":\"ckeam91zd0011hes17hfvbg0j\",\"url\":\"https://maximilianocontieri.com/singleton-the-root-of-all-evil\",\"subtitle\":\"Allowed global variables and supposed memory savings.\",\"brief\":\"TL;DR: Don't ever user Singletons\\n\\nFor 20 years I have been teaching software at the University of Buenos Aires. In the software engineering course we teach design patterns and the same \\\"scheme\\\" is always repeated almost like a type of deja vu, the s...\",\"readTimeInMinutes\":11,\"views\":2694,\"tags\":[{\"id\":\"569d22c892921b8f79d35f68\",\"slug\":\"software-engineering\",\"name\":\"Software Engineering\",\"__typename\":\"Tag\"},{\"id\":\"56744721958ef13879b94c7e\",\"slug\":\"programming\",\"name\":\"General Programming\",\"__typename\":\"Tag\"},{\"id\":\"56744721958ef13879b94968\",\"slug\":\"design-patterns\",\"name\":\"design patterns\",\"__typename\":\"Tag\"},{\"id\":\"56744720958ef13879b947df\",\"slug\":\"refactoring\",\"name\":\"refactoring\",\"__typename\":\"Tag\"}],\"author\":{\"__typename\":\"User\",\"id\":\"5f456a23b9870f18f59a8793\",\"username\":\"mcsee\",\"name\":\"Maxi Contieri\",\"profilePicture\":\"https://cdn.hashnode.com/res/hashnode/image/upload/v1690339610314/hjEsqceL_.png\",\"followersCount\":4744},\"coverImage\":{\"__typename\":\"CoverImage\",\"url\":\"https://cdn.hashnode.com/res/hashnode/image/upload/v1598388295860/rTL6lmH9F.jp"])</script>
35<script>self.__next_f.push([1,"eg\",\"isPortrait\":false,\"isAttributionHidden\":false}},\"cursor\":\"1\",\"__typename\":\"PostEdge\"},{\"node\":{\"__typename\":\"Post\",\"id\":\"5f46f0da947d7b2eff364584\",\"title\":\"Nude Models — Part I : Setters\",\"slug\":\"nude-models-part-i-setters\",\"publishedAt\":\"2020-08-26T23:31:38.606Z\",\"cuid\":\"ckec0inec005za7s1di7o9w88\",\"url\":\"https://maximilianocontieri.com/nude-models-part-i-setters\",\"subtitle\":\"\",\"brief\":\"Ye olde Reliable Data Structures and Their Controversial (Write) Access.\\nUsing objects as data structures is an established practice that generates many problems associated with the maintainability and evolution of software and misuses brilliant conc...\",\"readTimeInMinutes\":6,\"views\":1243,\"tags\":[{\"id\":\"591e9732ab184fdc3bcd9185\",\"slug\":\"object-oriented-programming\",\"name\":\"Object Oriented Programming\",\"__typename\":\"Tag\"},{\"id\":\"56744721958ef13879b94c7e\",\"slug\":\"programming\",\"name\":\"General Programming\",\"__typename\":\"Tag\"},{\"id\":\"5f4dd1ae6f2d7874d4060e9b\",\"slug\":\"solid-principles\",\"name\":\"SOLID principles\",\"__typename\":\"Tag\"},{\"id\":\"56744720958ef13879b947df\",\"slug\":\"refactoring\",\"name\":\"refactoring\",\"__typename\":\"Tag\"}],\"author\":{\"__typename\":\"User\",\"id\":\"5f456a23b9870f18f59a8793\",\"username\":\"mcsee\",\"name\":\"Maxi Contieri\",\"profilePicture\":\"https://cdn.hashnode.com/res/hashnode/image/upload/v1690339610314/hjEsqceL_.png\",\"followersCount\":4744},\"coverImage\":{\"__typename\":\"CoverImage\",\"url\":\"https://cdn.hashnode.com/res/hashnode/image/upload/v1598484640066/5843ve1WZ.jpeg\",\"isPortrait\":false,\"isAttributionHidden\":false}},\"cursor\":\"2\",\"__typename\":\"PostEdge\"},{\"node\":{\"__typename\":\"Post\",\"id\":\"5f4866ded5cea73bd114fe32\",\"title\":\"Nude Models — Part II : Getters\",\"slug\":\"nude-models-part-ii-getters\",\"publishedAt\":\"2020-08-28T02:06:51.957Z\",\"cuid\":\"ckedliv3e01vutds11ikg3ctt\",\"url\":\"https://maximilianocontieri.com/nude-models-part-ii-getters\",\"subtitle\":\"\",\"brief\":\"Ye olde Reliable Data Structures and Their Controversial (Read) Access.\\nUsing objects as data structures is an established practice that generates many problems associated with the maintainability and evolution of software. It misuses brilliant conce...\",\"readTimeInMinutes\":7,\"views\":1219,\"tags\":[{\"id\":\"591e9732ab184fdc3bcd9185\",\"slug\":\"object-oriented-programming\",\"name\":\"Object Oriented Programming\",\"__typename\":\"Tag\"},{\"id\":\"573504d39835efadc8742016\",\"slug\":\"clean-code\",\"name\":\"clean code\",\"__typename\":\"Tag\"},{\"id\":\"56744721958ef13879b94c7e\",\"slug\":\"programming\",\"name\":\"General Programming\",\"__typename\":\"Tag\"},{\"id\":\"56744720958ef13879b947df\",\"slug\":\"refactoring\",\"name\":\"refactoring\",\"__typename\":\"Tag\"}],\"author\":{\"__typename\":\"User\",\"id\":\"5f456a23b9870f18f59a8793\",\"username\":\"mcsee\",\"name\":\"Maxi Contieri\",\"profilePicture\":\"https://cdn.hashnode.com/res/hashnode/image/upload/v1690339610314/hjEsqceL_.png\",\"followersCount\":4744},\"coverImage\":{\"__typename\":\"CoverImage\",\"url\":\"https://cdn.hashnode.com/res/hashnode/image/upload/v1598579188987/v6uPVTfy5.jpeg\",\"isPortrait\":false,\"isAttributionHidden\":false}},\"cursor\":\"3\",\"__typename\":\"PostEdge\"},{\"node\":{\"__typename\":\"Post\",\"id\":\"5f497b546686a44e34fcbed4\",\"title\":\"Object Design Checklist\",\"slug\":\"object-design-checklist\",\"publishedAt\":\"2020-08-28T21:47:00.399Z\",\"cuid\":\"ckeernse000nxg4s1cx5v6uij\",\"url\":\"https://maximilianocontieri.com/object-design-checklist\",\"subtitle\":null,\"brief\":\"This is an index to already published articles on software design.\\nSome rules must be followed and embraced to create great software designs. \\nThis article summarizes them, serving as an index to full stories.\\n\\nTL;DR: Important concepts about Object-...\",\"readTimeInMinutes\":1,\"views\":1484,\"tags\":[{\"id\":\"591e9732ab184fdc3bcd9185\",\"slug\":\"object-oriented-programming\",\"name\":\"Object Oriented Programming\",\"__typename\":\"Tag\"},{\"id\":\"56744722958ef13879b9514a\",\"slug\":\"immutable\",\"name\":\"immutable\",\"__typename\":\"Tag\"},{\"id\":\"569d22c892921b8f79d35f68\",\"slug\":\"software-engineering\",\"name\":\"Software Engineering\",\"__typename\":\"Tag\"},{\"id\":\"56744721958ef13879b94c7e\",\"slug\":\"programming\",\"name\":\"General Programming\",\"__typename\":\"Tag\"},{\"id\":\"56744721958e"])</script>
35<script>self.__next_f.push([1,"f13879b94ad1\",\"slug\":\"software-development\",\"name\":\"software development\",\"__typename\":\"Tag\"}],\"author\":{\"__typename\":\"User\",\"id\":\"5f456a23b9870f18f59a8793\",\"username\":\"mcsee\",\"name\":\"Maxi Contieri\",\"profilePicture\":\"https://cdn.hashnode.com/res/hashnode/image/upload/v1690339610314/hjEsqceL_.png\",\"followersCount\":4744},\"coverImage\":{\"__typename\":\"CoverImage\",\"url\":\"https://cdn.hashnode.com/res/hashnode/image/upload/v1598656388563/eftAqfUwb.jpeg\",\"isPortrait\":false,\"isAttributionHidden\":false}},\"cursor\":\"4\",\"__typename\":\"PostEdge\"},{\"node\":{\"__typename\":\"Post\",\"id\":\"5f4aad803a844e5996536ea9\",\"title\":\"What is (wrong with) software?\",\"slug\":\"what-is-wrong-with-software\",\"publishedAt\":\"2020-08-29T19:33:20.239Z\",\"cuid\":\"ckeg2bqpy00q2p2s1949o5t9s\",\"url\":\"https://maximilianocontieri.com/what-is-wrong-with-software\",\"subtitle\":\"\",\"brief\":\"Software is eating the world. Those of us who work, live, and love software do not usually stop by to think about its meaning.\\n\\nTL:DR: We will address current software design problems in a minimalist way.\\n\\nIn university and industry, we use the follo...\",\"readTimeInMinutes\":4,\"views\":1975,\"tags\":[{\"id\":\"569d22c892921b8f79d35f68\",\"slug\":\"software-engineering\",\"name\":\"Software Engineering\",\"__typename\":\"Tag\"},{\"id\":\"56744721958ef13879b94ad1\",\"slug\":\"software-development\",\"name\":\"software development\",\"__typename\":\"Tag\"},{\"id\":\"591e9732ab184fdc3bcd9185\",\"slug\":\"object-oriented-programming\",\"name\":\"Object Oriented Programming\",\"__typename\":\"Tag\"},{\"id\":\"56744721958ef13879b94c7e\",\"slug\":\"programming\",\"name\":\"General Programming\",\"__typename\":\"Tag\"},{\"id\":\"5674471d958ef13879b94779\",\"slug\":\"oop\",\"name\":\"oop\",\"__typename\":\"Tag\"}],\"author\":{\"__typename\":\"User\",\"id\":\"5f456a23b9870f18f59a8793\",\"username\":\"mcsee\",\"name\":\"Maxi Contieri\",\"profilePicture\":\"https://cdn.hashnode.com/res/hashnode/image/upload/v1690339610314/hjEsqceL_.png\",\"followersCount\":4744},\"coverImage\":{\"__typename\":\"CoverImage\",\"url\":\"https://cdn.hashnode.com/res/hashnode/image/upload/v1598729218996/69TXBn14C.png\",\"isPortrait\":false,\"isAttributionHidden\":false}},\"cursor\":\"5\",\"__typename\":\"PostEdge\"},{\"node\":{\"__typename\":\"Post\",\"id\":\"5f4c6a1df540845bb26f0a38\",\"title\":\"The one and only software design principle\",\"slug\":\"the-one-and-only-software-design-principle\",\"publishedAt\":\"2020-08-31T03:10:21.048Z\",\"cuid\":\"ckehy3bdf03he42s107i3h8ik\",\"url\":\"https://maximilianocontieri.com/the-one-and-only-software-design-principle\",\"subtitle\":\"\",\"brief\":\"If we build our entire paradigm on a single rule, we can keep it simple and make excellent models.\\n\\nTL;DR: Just follow this design principle\\n\\nBeing minimalist and being axiomatic means we can derive a set of rules from a single definition.\\nIf we buil...\",\"readTimeInMinutes\":5,\"views\":4064,\"tags\":[{\"id\":\"569d22c892921b8f79d35f68\",\"slug\":\"software-engineering\",\"name\":\"Software Engineering\",\"__typename\":\"Tag\"},{\"id\":\"56744721958ef13879b94acd\",\"slug\":\"software-design\",\"name\":\"software design\",\"__typename\":\"Tag\"},{\"id\":\"591e9732ab184fdc3bcd9185\",\"slug\":\"object-oriented-programming\",\"name\":\"Object Oriented Programming\",\"__typename\":\"Tag\"},{\"id\":\"56744721958ef13879b94c7e\",\"slug\":\"programming\",\"name\":\"General Programming\",\"__typename\":\"Tag\"}],\"author\":{\"__typename\":\"User\",\"id\":\"5f456a23b9870f18f59a8793\",\"username\":\"mcsee\",\"name\":\"Maxi Contieri\",\"profilePicture\":\"https://cdn.hashnode.com/res/hashnode/image/upload/v1690339610314/hjEsqceL_.png\",\"followersCount\":4744},\"coverImage\":{\"__typename\":\"CoverImage\",\"url\":\"https://cdn.hashnode.com/res/hashnode/image/upload/v1598843398674/Pi0iqcwbu.png\",\"isPortrait\":false,\"isAttributionHidden\":false}},\"cursor\":\"6\",\"__typename\":\"PostEdge\"}],\"pageInfo\":{\"endCursor\":\"6\",\"hasNextPage\":true,\"__typename\":\"PageInfo\"},\"__typename\":\"PostConnection\"},\"__typename\":\"Series\"}},\"posts\":[\"$b:props:children:0:props:publication:series:posts:edges:0:node\",\"$b:props:children:0:props:publication:series:posts:edges:1:node\",\"$b:props:children:0:props:publication:series:posts:edges:2:node\",\"$b:props:children:0:props:publication:series:posts:edges:3:node\",\"$b:props:children:0:props:publica"])</script>
35<script>self.__next_f.push([1,"tion:series:posts:edges:4:node\",\"$b:props:children:0:props:publication:series:posts:edges:5:node\"],\"host\":\"maximilianocontieri.com\"}],\"$L17\",\"$L18\",\"$L19\"]}]\n1a:I[12958,[\"4554\",\"static/chunks/4554-984b480a9db5f3fe.js\",\"7563\",\"static/chunks/7563-4dfa0994a9b0e37c.js\",\"5001\",\"static/chunks/5001-fae0bebdd93f95e3.js\",\"2423\",\"static/chunks/2423-c8b1388240338d7d.js\",\"9216\",\"static/chunks/9216-9272709ba40c1cfd.js\",\"3091\",\"static/chunks/3091-bf1537ff6571a1bd.js\",\"652\",\"static/chunks/652-f40dcb480b4e356f.js\",\"730\",\"static/chunks/730-8191af9e9424b148.js\",\"7382\",\"static/chunks/app/series/%5Bslug%5D/page-95c6281db9d3a307.js\"],\"SeriesPostsList\"]\n17:[\"$\",\"div\",null,{\"className\":\"px-4 sm:px-8\",\"children\":[\"$\",\"div\",null,{\"className\":\"w-full xl:mx-auto xl:max-w-[80rem] 2xl:max-w-[90rem]\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-8 pt-2 sm:pt-10\",\"children\":[\"$\",\"section\",null,{\"className\":\"pb-16\",\"children\":[\"$\",\"div\",null,{\"className\":\"space-y-8 max-w-4xl w-full mx-auto\",\"children\":[null,[\"$\",\"header\",null,{\"className\":\"mb-8 space-y-4 text-center\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-sm font-semibold uppercase tracking-wide text-muted-foreground\",\"children\":\"Series\"}],[\"$\",\"h1\",null,{\"className\":\"text-3xl sm:text-4xl font-bold tracking-tight text-balance text-foreground\",\"children\":\"Object Oriented Design\"}],[\"$\",\"div\",null,{\"className\":\"prose prose-lg dark:prose-invert max-w-none text-muted-foreground\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cp\u003eTips for Object Oriented great designs\u003c/p\u003e\\n\"}}]]}],[\"$\",\"section\",null,{\"aria-label\":\"Object Oriented Design posts\",\"children\":[\"$\",\"$L1a\",null,{\"initialPosts\":\"$b:props:children:0:props:posts\",\"initialCursor\":\"6\",\"initialHasNextPage\":true,\"seriesSlug\":\"object-oriented-design\"}]}]]}]}]}]}]}]\n1b:T5a0,{\"@context\":\"https://schema.org\",\"@type\":\"CollectionPage\",\"name\":\"Object Oriented Design\",\"url\":\"https://maximilianocontieri.com/series/object-oriented-design\",\"mainEntityOfPage\":\"https://maximilianocontieri.com/series/object-oriented-design\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Maximiliano Contieri - Software Design\",\"url\":\"https://maximilianocontieri.com\",\"logo\":\"https://cdn.hashnode.com/res/hashnode/image/upload/v1695814671171/qMChtqJmW.jpg\"},\"description\":\"Tips for Object Oriented great designs\\n\",\"creator\":{\"@type\":\"Person\",\"name\":\"Maxi Contieri\",\"url\":\"https://hashnode.com/@mcsee\"},\"hasPart\":[{\"@type\":\"Article\",\"headline\":\"Singleton: The Root of all Evil\",\"url\":\"https://maximilianocontieri.com/singleton-the-root-of-all-evil\"},{\"@type\":\"Article\",\"headline\":\"Nude Models — Part I : Setters\",\"url\":\"https://maximilianocontieri.com/nude-models-part-i-setters\"},{\"@type\":\"Article\",\"headline\":\"Nude Models — Part II : Getters\",\"url\":\"https://maximilianocontieri.com/nude-models-part-ii-getters\"},{\"@type\":\"Article\",\"headline\":\"Object Design Checklist\",\"url\":\"https://maximilianocontieri.com/object-design-checklist\"},{\"@type\":\"Article\",\"headline\":\"What is (wrong with) software?\",\"url\":\"https://maximilianocontieri.com/what-is-wrong-with-software\"},{\"@type\":\"Article\",\"headline\":\"The one and only software design principle\",\"url\":\"https://maximilianocontieri.com/the-one-and-only-software-design-principle\"}]}18:[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$1b\"}}]\n1c:I[52619,[\"4554\",\"static/chunks/4554-984b480a9db5f3fe.js\",\"7563\",\"static/chunks/7563-4dfa0994a9b0e37c.js\",\"5001\",\"static/chunks/5001-fae0bebdd93f95e3.js\",\"2423\",\"static/chunks/2423-c8b1388240338d7d.js\",\"9216\",\"static/chunks/9216-9272709ba40c1cfd.js\",\"3091\",\"static/chunks/3091-bf1537ff6571a1bd.js\",\"652\",\"static/chunks/652-f40dcb480b4e356f.js\",\"730\",\"static/chunks/730-8191af9e9424b148.js\",\"7382\",\"static/chunks/app/series/%5Bslug%5D/page-95c6281db9d3a307.js\"],\"\"]\n1d:Tc98,M268.379 39q-6.322 0-10.35-4.108-4.002-4.134-4.002-10.483 0-6.296 4.002-10.43 4-4.135 10.163-4.135 6.028 0 9.817 3.734 3.814 3.735 3.814 9.497v2.8h-24.248v-4.054h17.633q-.187-2.747-2.054-4.508-1.868-1.76-4.962-1.76-3.28-.001-5.388 2.374-2.108 2.373-2.108 6.375 0 4.188 2.348 6.695 2.347 2.481 5.895 2.481 1"])</script>
35<script>self.__next_f.push([1,".68 0 2.934-.453a8.5 8.5 0 0 0 2.321-1.307q1.041-.854 2.268-2.614l4.694 2.96q-1.707 2.748-3.494 4.135a12.7 12.7 0 0 1-3.975 2.081q-2.187.72-5.308.72m-33.496 0q-5.575 0-9.283-4.028-3.681-4.029-3.681-10.484 0-6.43 3.761-10.51 3.76-4.108 9.47-4.108 2.8 0 5.175 1.2 2.4 1.174 3.628 3.148l.026-.08V0h7.016v38.2h-6.722v-4.722l.64.8-.694.133q-1.28 2.108-3.788 3.361Q237.924 39 234.883 39m1.627-6.002q3.308 0 5.495-2.428t2.188-6.135q0-3.762-2.214-6.109-2.214-2.374-5.469-2.374-3.28 0-5.522 2.347-2.214 2.348-2.214 6.163 0 3.76 2.214 6.162 2.214 2.374 5.522 2.374M205.811 39q-6.376 0-10.537-4.161-4.161-4.188-4.161-10.404 0-6.321 4.161-10.456 4.188-4.135 10.537-4.135 6.348 0 10.537 4.161 4.188 4.161 4.188 10.43 0 6.216-4.188 10.404Q212.186 39 205.811 39m0-6.162q3.307 0 5.575-2.374 2.267-2.374 2.267-6.055 0-3.707-2.294-6.056-2.267-2.347-5.548-2.347-3.308 0-5.575 2.374-2.268 2.348-2.268 6.029t2.241 6.055q2.268 2.374 5.602 2.374M162.586 38.2V10.644h6.802v5.015l-.8-.987h.906q1.308-2.187 3.762-3.494 2.48-1.335 5.228-1.334 4.615 0 7.256 2.8 2.667 2.776 2.667 7.603V38.2h-7.069V21.794q0-2.854-1.387-4.401t-4.134-1.547q-2.614 0-4.402 1.974-1.76 1.974-1.76 4.881V38.2zm-30.181 0V0h6.962v14.698h.134q1.2-2.187 3.574-3.521 2.375-1.335 5.229-1.334 4.615 0 7.255 2.828 2.668 2.801 2.668 7.522V38.2h-7.069V21.794q0-2.827-1.387-4.402-1.387-1.573-4.055-1.573-2.587 0-4.428 2.027-1.814 2.027-1.814 4.962v15.391zm-14.416.8q-2.882 0-5.015-.64-2.108-.614-3.761-1.84-1.654-1.228-2.668-2.695l-.987-1.467 4.695-3.174.773 1.067a9.1 9.1 0 0 0 1.788 1.814 8.2 8.2 0 0 0 2.32 1.2q1.308.4 3.068.4 2.161 0 3.441-.8 1.308-.8 1.307-2.294 0-1.36-1.147-2.108-1.12-.747-5.068-1.654-5.335-1.253-7.656-3.334-2.32-2.107-2.321-5.362 0-3.76 3.148-6.002 3.148-2.267 7.923-2.267 2.454 0 4.348.507t3.388 1.493q1.493.988 2.454 2.188l.987 1.2-4.482 3.255-.667-.774a7.4 7.4 0 0 0-1.627-1.387 6.4 6.4 0 0 0-2.054-.88 9.5 9.5 0 0 0-2.401-.294q-1.974 0-3.201.8-1.2.774-1.2 1.921 0 1.254 1.12 2.027 1.147.748 5.229 1.681 5.334 1.227 7.629 3.308 2.294 2.055 2.294 5.308 0 4.029-3.228 6.43Q123.217 39 117.989 39M87.61 39q-4.508 0-7.335-2.454-2.828-2.481-2.828-6.482 0-4.188 3.254-6.669t8.483-2.48q2.082 0 4.028.426 1.974.427 3.361 1.12v-1.6q0-2.588-1.813-4.082-1.788-1.493-4.615-1.493-1.628 0-2.801.373a8.7 8.7 0 0 0-2.188.987q-.987.614-1.84 1.414l-.854.8-4.081-3.788 1.307-1.173a18.7 18.7 0 0 1 2.934-2.108q1.601-.933 3.601-1.44t4.589-.507q5.868 0 9.229 2.88 3.361 2.882 3.361 8.084V38.2h-6.749v-5.922l1.654 2.187h-1.76q-1.308 2.055-3.655 3.308Q90.545 39 87.611 39m1.814-4.988q3.148 0 5.149-2.187 2-2.215 2-5.309v-.08q-1.12-.693-2.72-1.094a13 13 0 0 0-3.388-.426q-2.828 0-4.562 1.2-1.734 1.173-1.734 3.521 0 2.028 1.468 3.201t3.787 1.174M49 38.2V0h6.962v14.698h.134q1.2-2.187 3.574-3.521 2.375-1.335 5.229-1.334 4.615 0 7.255 2.828 2.668 2.801 2.668 7.522V38.2h-7.07V21.794q0-2.827-1.386-4.402-1.387-1.573-4.055-1.573-2.587 0-4.428 2.027-1.815 2.027-1.814 4.962v15.391z19:[\"$\",\"footer\",null,{\"className\":\"px-4 pt-8 pb-20 sm:px-8 text-muted-foreground\",\"aria-label\":\"Footer\",\"children\":[\"$\",\"div\",null,{\"className\":\"w-full max-w-4xl mx-auto\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex flex-col items-center gap-4 text-center text-sm\",\"children\":[[\"$\",\"section\",null,{\"id\":\"impressum\",\"className\":\"w-full max-w-2xl pt-3 text-left text-sm text-muted-foreground text-center [\u0026_*]:text-center [\u0026_*]:mx-auto\",\"aria-label\":\"Impressum\",\"children\":[[\"$\",\"div\",null,{\"className\":\"prose prose-sm prose-stone dark:prose-invert max-w-none text-muted-foreground prose-a:text-muted-foreground prose-a:no-underline prose-a:transition prose-a:hover:text-foreground [\u0026_ul]:list-none [\u0026_ol]:list-none\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cp\u003eTechnical Opinions are my own. I don't have the revealed truth. \u003c/p\u003e\\n\u003cp\u003eSoftware Design is a creative activity. These are hints and not rigid rules.\u003c/p\u003e\\n\u003cp\u003eI write on BackEnd Business Systems and OOP Design. My advice/experience might not suit other systems.\u003c/p\u003e\\n\u003cp\u003eYou can write me at info(at)maximilianocontieri.com\u003c/p\u003e\"}}],[\"$\",\"div\",null,{\"className\":\"my-6 h-px w-full bg-border\",\"aria-hidden\":\"true\"}]]}],[\"$\",\"p\""])</script>
35<script>self.__next_f.push([1,",null,{\"className\":\"font-medium\",\"children\":[[\"$\",\"time\",null,{\"dateTime\":\"2026\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-sans\",\"children\":\"©\"}],\" \",2026]}],\" \",\"Maximiliano Contieri - Software Design\"]}],[\"$\",\"nav\",null,{\"aria-label\":\"Footer navigation\",\"children\":[\"$\",\"ul\",null,{\"className\":\"flex flex-wrap justify-center gap-4 text-sm tracking-wide\",\"children\":[[\"$\",\"li\",\"/archive\",{\"children\":[\"$\",\"$L1c\",null,{\"href\":\"/archive\",\"className\":\"transition hover:text-foreground\",\"target\":\"$undefined\",\"rel\":\"$undefined\",\"children\":\"Archive\"}]}],[\"$\",\"li\",\"/recommendations\",{\"children\":[\"$\",\"$L1c\",null,{\"href\":\"/recommendations\",\"className\":\"transition hover:text-foreground\",\"target\":\"$undefined\",\"rel\":\"$undefined\",\"children\":\"Recommendations\"}]}],[\"$\",\"li\",\"https://hashnode.com/privacy-policy\",{\"children\":[\"$\",\"$L1c\",null,{\"href\":\"https://hashnode.com/privacy-policy\",\"className\":\"transition hover:text-foreground\",\"target\":\"_blank\",\"rel\":\"noopener\",\"children\":\"Privacy\"}]}],[\"$\",\"li\",\"https://hashnode.com/terms\",{\"children\":[\"$\",\"$L1c\",null,{\"href\":\"https://hashnode.com/terms\",\"className\":\"transition hover:text-foreground\",\"target\":\"_blank\",\"rel\":\"noopener\",\"children\":\"Terms\"}]}]]}]}],[\"$\",\"div\",null,{\"className\":\"pt-8 flex justify-center gap-6\",\"children\":[[\"$\",\"$L1c\",null,{\"href\":\"/sitemap.xml\",\"target\":\"_blank\",\"rel\":\"noopener\",\"className\":\"flex items-center gap-2 text-sm transition hover:text-foreground\",\"title\":\"Sitemap\",\"children\":[[\"$\",\"i\",null,{\"className\":\"fa-regular fa-sitemap\"}],[\"$\",\"span\",null,{\"children\":\"Sitemap\"}]]}],[\"$\",\"$L1c\",null,{\"href\":\"/rss.xml\",\"target\":\"_blank\",\"rel\":\"noopener\",\"className\":\"flex items-center gap-2 text-sm transition hover:text-foreground\",\"title\":\"RSS Feed\",\"children\":[[\"$\",\"i\",null,{\"className\":\"fa-regular fa-rss\"}],[\"$\",\"span\",null,{\"children\":\"RSS\"}]]}]]}],[\"$\",\"div\",null,{\"className\":\"pt-10 text-center\",\"children\":[\"$\",\"$L1c\",null,{\"href\":\"https://hashnode.com/?utm_source=https%3A%2F%2Fmaximilianocontieri.com\u0026utm_medium=referral\u0026utm_campaign=blog_footer_logo\u0026utm_content=logo\",\"target\":\"_blank\",\"rel\":\"noopener\",\"aria-label\":\"Visit Hashnode (opens in a new tab)\",\"children\":[\"$\",\"svg\",null,{\"fill\":\"none\",\"viewBox\":\"0 0 282 39\",\"aria-hidden\":\"true\",\"className\":\"h-6 w-auto min-w-[9.5rem] text-muted-foreground transition hover:text-foreground\",\"children\":[[\"$\",\"path\",null,{\"fill\":\"currentColor\",\"d\":\"M2.68 13.032c-3.573 3.505-3.573 9.363 0 12.936L13.032 36.32c3.505 3.573 9.363 3.573 12.936 0L36.32 25.968c3.573-3.573 3.573-9.431 0-12.936L25.968 2.68c-3.573-3.573-9.431-3.573-12.936 0zm12.211 1.935c2.507-2.521 6.582-2.544 9.104-.038s2.544 6.582.038 9.104-6.582 2.544-9.104.038-2.544-6.582-.038-9.104\"}],[\"$\",\"path\",null,{\"fill\":\"currentColor\",\"d\":\"$1d\"}]]}],\"className\":\"inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [\u0026_svg]:pointer-events-none [\u0026_svg]:size-4 [\u0026_svg]:shrink-0 hover:bg-accent hover:text-accent-foreground h-10 rounded-md text-xl px-5 py-4\",\"ref\":null}]}]]}]}]}]\n"])</script>
35<script>self.__next_f.push([1,"1e:I[80622,[],\"IconMark\"]\n"])</script>
35<script>self.__next_f.push([1,"f:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Object Oriented Design\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Tips for Object Oriented great designs\\n\"}],[\"$\",\"link\",\"2\",{\"rel\":\"canonical\",\"href\":\"https://maximilianocontieri.com/series/object-oriented-design\"}],[\"$\",\"meta\",\"3\",{\"property\":\"og:title\",\"content\":\"Object Oriented Design\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:description\",\"content\":\"Tips for Object Oriented great designs\\n\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:url\",\"content\":\"https://maximilianocontieri.com/series/object-oriented-design\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:site_name\",\"content\":\"Maximiliano Contieri - Software Design\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:image\",\"content\":\"https://maximilianocontieri.com/api/og/page?og=eyJhdXRob3IiOiJNYXhpJTIwQ29udGllcmkiLCJpc0RlZmF1bHRNb2RlRGFyayI6dHJ1ZSwiZG9tYWluIjoibWF4aW1pbGlhbm9jb250aWVyaS5jb20iLCJ0aXRsZSI6Ik9iamVjdCUyME9yaWVudGVkJTIwRGVzaWduIiwibG9nbyI6Imh0dHBzOi8vY2RuLmhhc2hub2RlLmNvbS9yZXMvaGFzaG5vZGUvaW1hZ2UvdXBsb2FkL3YxNjk1ODE0NjcxMTcxL3FNQ2h0cUptVy5qcGciLCJmYXZpY29uIjoiaHR0cHM6Ly9jZG4uaGFzaG5vZGUuY29tL3Jlcy9oYXNobm9kZS9pbWFnZS91cGxvYWQvdjE2OTU4MTQ2ODMxMzAvTVRtN1lvdlJmLnBuZyJ9\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"11\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"12\",{\"name\":\"twitter:creator\",\"content\":\"https://twitter.com/mcsee1\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:title\",\"content\":\"Object Oriented Design\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:description\",\"content\":\"Tips for Object Oriented great designs\\n\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:image\",\"content\":\"https://maximilianocontieri.com/api/og/page?og=eyJhdXRob3IiOiJNYXhpJTIwQ29udGllcmkiLCJpc0RlZmF1bHRNb2RlRGFyayI6dHJ1ZSwiZG9tYWluIjoibWF4aW1pbGlhbm9jb250aWVyaS5jb20iLCJ0aXRsZSI6Ik9iamVjdCUyME9yaWVudGVkJTIwRGVzaWduIiwibG9nbyI6Imh0dHBzOi8vY2RuLmhhc2hub2RlLmNvbS9yZXMvaGFzaG5vZGUvaW1hZ2UvdXBsb2FkL3YxNjk1ODE0NjcxMTcxL3FNQ2h0cUptVy5qcGciLCJmYXZpY29uIjoiaHR0cHM6Ly9jZG4uaGFzaG5vZGUuY29tL3Jlcy9oYXNobm9kZS9pbWFnZS91cGxvYWQvdjE2OTU4MTQ2ODMxMzAvTVRtN1lvdlJmLnBuZyJ9\"}],[\"$\",\"link\",\"16\",{\"rel\":\"icon\",\"href\":\"https://cdn.hashnode.com/res/hashnode/image/upload/v1695814683130/MTm7YovRf.png\"}],[\"$\",\"$L1e\",\"17\",{}]],\"error\":null,\"digest\":\"$undefined\"}\n14:\"$f:metadata\"\n"])</script>
35<title>Object Oriented Design</title><meta name="description" content="Tips for Object Oriented great designs
36"/><link rel="canonical" href="https://maximilianocontieri.com/series/object-oriented-design"/><meta property="og:title" content="Object Oriented Design"/><meta property="og:description" content="Tips for Object Oriented great designs
37"/><meta property="og:url" content="https://maximilianocontieri.com/series/object-oriented-design"/><meta property="og:site_name" content="Maximiliano Contieri - Software Design"/><meta property="og:image" content="https://maximilianocontieri.com/api/og/page?og=eyJhdXRob3IiOiJNYXhpJTIwQ29udGllcmkiLCJpc0RlZmF1bHRNb2RlRGFyayI6dHJ1ZSwiZG9tYWluIjoibWF4aW1pbGlhbm9jb250aWVyaS5jb20iLCJ0aXRsZSI6Ik9iamVjdCUyME9yaWVudGVkJTIwRGVzaWduIiwibG9nbyI6Imh0dHBzOi8vY2RuLmhhc2hub2RlLmNvbS9yZXMvaGFzaG5vZGUvaW1hZ2UvdXBsb2FkL3YxNjk1ODE0NjcxMTcxL3FNQ2h0cUptVy5qcGciLCJmYXZpY29uIjoiaHR0cHM6Ly9jZG4uaGFzaG5vZGUuY29tL3Jlcy9oYXNobm9kZS9pbWFnZS91cGxvYWQvdjE2OTU4MTQ2ODMxMzAvTVRtN1lvdlJmLnBuZyJ9"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:creator" content="https://twitter.com/mcsee1"/><meta name="twitter:title" content="Object Oriented Design"/><meta name="twitter:description" content="Tips for Object Oriented great designs
38"/><meta name="twitter:image" content="https://maximilianocontieri.com/api/og/page?og=eyJhdXRob3IiOiJNYXhpJTIwQ29udGllcmkiLCJpc0RlZmF1bHRNb2RlRGFyayI6dHJ1ZSwiZG9tYWluIjoibWF4aW1pbGlhbm9jb250aWVyaS5jb20iLCJ0aXRsZSI6Ik9iamVjdCUyME9yaWVudGVkJTIwRGVzaWduIiwibG9nbyI6Imh0dHBzOi8vY2RuLmhhc2hub2RlLmNvbS9yZXMvaGFzaG5vZGUvaW1hZ2UvdXBsb2FkL3YxNjk1ODE0NjcxMTcxL3FNQ2h0cUptVy5qcGciLCJmYXZpY29uIjoiaHR0cHM6Ly9jZG4uaGFzaG5vZGUuY29tL3Jlcy9oYXNobm9kZS9pbWFnZS91cGxvYWQvdjE2OTU4MTQ2ODMxMzAvTVRtN1lvdlJmLnBuZyJ9"/><link rel="icon" href="https://cdn.hashnode.com/res/hashnode/image/upload/v1695814683130/MTm7YovRf.png"/>
38<script>document.querySelectorAll('body link[rel="icon"], body link[rel="apple-touch-icon"]').forEach(el => document.head.appendChild(el))</script>
38<div hidden id="S:1"></div>
38<script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){var c=a[b],e=a[b+1];null!==e.parentNode&&e.parentNode.removeChild(e);var f=c.parentNode;if(f){var g=c.previousSibling,h=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d||"/&"===d)if(0===h)break;else h--;else"$"!==d&&"$?"!==d&&"$~"!==d&&"$!"!==d&&"&"!==d||h++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;e.firstChild;)f.insertBefore(e.firstChild,c);g.data="$";g._reactRetry&&requestAnimationFrame(g._reactRetry)}}a.length=0};
39$RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:1","S:1")</script>
39<div hidden id="S:0"></div>
39<script>$RC("B:0","S:0")</script>
39</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.