Skip to content

Instantly share code, notes, and snippets.

View mcsee's full-sized avatar
🏠
Working from home

mcsee mcsee

🏠
Working from home
View GitHub Profile
@mcsee
mcsee / client-code-versioned.js
Last active June 12, 2025 22:35
This gist belongs to Clean Code Cookbook http://cleancodecookbook.com By Maximiliano Contieri http://maximilianocontieri.com
// user-api-v1.json - Version 1 (maintained)
{
"id": 317,
"name": "Mr Nimbus",
"email": "[email protected]",
"nationalities": "Brazilian,Canadian,Oceanic"
}
// user-api-v2.json - Version 2
// (new structure, backward compatible)
@mcsee
mcsee / client-code-breaking.js
Last active June 12, 2025 21:53
This gist belongs to Clean Code Cookbook http://cleancodecookbook.com By Maximiliano Contieri http://maximilianocontieri.com
// user-api-v1.json - Original API response
{
"id": 317,
"name": "Mr Nimbus",
"email": "[email protected]",
"nationalities": "Brazilian,Canadian,Oceanic"
}
// Later changed to this without versioning:
{
@mcsee
mcsee / proper_api.rs
Last active June 7, 2025 19:24
This gist belongs to Clean Code Cookbook http://cleancodecookbook.com By Maximiliano Contieri http://maximilianocontieri.com
use axum::{
http::StatusCode,
response::Json,
routing::post,
Router,
};
use serde_json::{json, Value};
async fn process_payment(
Json(payload): Json<Value>
@mcsee
mcsee / misleading_api.rs
Last active June 7, 2025 19:24
This gist belongs to Clean Code Cookbook http://cleancodecookbook.com By Maximiliano Contieri http://maximilianocontieri.com
use axum::{
http::StatusCode,
response::Json,
routing::post,
Router,
};
use serde_json::{json, Value};
async fn process_payment(
Json(payload): Json<Value>
@mcsee
mcsee / optional.java
Last active June 3, 2025 02:48
This gist belongs to Clean Code Cookbook http://cleancodecookbook.com By Maximiliano Contieri http://maximilianocontieri.com
public class ShoppingCart {
private final List<Item> items = new ArrayList<>();
// This version uses Optionals
// Not all programming languages support this feature
private Optional<Coupon> coupon = Optional.empty();
public void addItem(Item item) {
items.add(item);
}
@mcsee
mcsee / collection.java
Last active June 3, 2025 02:51
This gist belongs to Clean Code Cookbook http://cleancodecookbook.com By Maximiliano Contieri http://maximilianocontieri.com
public class ShoppingCart {
private List<Item> items = new ArrayList<>();
// 1. Identify nullable optional attributes
// that could be collections
// 2. Replace single nullable objects with empty collections
private List<Coupon> coupons = new ArrayList<>();
public void addItem(Item item) {
this.items.add(item);
@mcsee
mcsee / nullcart.java
Last active June 3, 2025 02:49
This gist belongs to Clean Code Cookbook http://cleancodecookbook.com By Maximiliano Contieri http://maximilianocontieri.com
public class ShoppingCart {
private List<Item> items = new ArrayList<>();
private Coupon coupon = null;
public void addItem(Item item) {
this.items.add(item);
}
public void redeemCoupon(Coupon coupon) {
this.coupon = coupon;
@mcsee
mcsee / ledger.py
Last active May 25, 2025 19:53
This gist belongs to Clean Code Cookbook http://cleancodecookbook.com By Maximiliano Contieri http://maximilianocontieri.com
class InvoiceProcessor:
def __init__(self, billing_ledger):
self.billing_ledger = billing_ledger
def process_invoice(self, customer, amount):
# Pure business logic with proper domain objects
if customer.credit_limit < amount:
raise CreditLimitExceededException()
# Business calculations
@mcsee
mcsee / invoice_processor.py
Created May 24, 2025 14:23
This gist belongs to Clean Code Cookbook http://cleancodecookbook.com By Maximiliano Contieri http://maximilianocontieri.com
class InvoiceProcessor:
def process_invoice(self, invoice_data, database):
# Business logic mixed with database access
customer = database.execute(
"SELECT * FROM customers WHERE id = ?",
invoice_data['customer_id']
).fetchone()
if customer['credit_limit'] < invoice_data['amount']:
raise Exception("Credit limit exceeded")
@mcsee
mcsee / uuid.php
Last active May 17, 2025 23:33
This gist belongs to Clean Code Cookbook http://cleancodecookbook.com By Maximiliano Contieri http://maximilianocontieri.com
<?php
class Invoice {
// 1. Identify all public uses of sequential IDs
// in APIs, URLs, or UI elements
private string $customerName;
private array $items;
public function __construct(