Day 46 Pure Functions & Immutability
Pure functions aur immutability code ko predictable, testable, aur bug-free banate hain. React state updates, Redux reducers — sab immutability par depend karte hain.
Immutable Updates
State change karo bina original modify kiye.
// ❌ Mutable (bad)
function badAddItem(cart, item) {
cart.push(item); // original modify!
return cart;
}
// ✅ Immutable (good)
function addItem(cart, item) {
return [...cart, item]; // new array
}
function updateItem(cart, id, updates) {
return cart.map(item =>
item.id === id ? { ...item, ...updates } : item
);
}
function removeItem(cart, id) {
return cart.filter(item => item.id !== id);
}
// Redux reducer style
function cartReducer(state = [], action) {
switch (action.type) {
case "ADD": return [...state, action.item];
case "REMOVE": return state.filter(i => i.id !== action.id);
case "UPDATE": return state.map(i =>
i.id === action.id ? { ...i, ...action.updates } : i
);
default: return state;
}
}
🎯 Practice Challenge
Immutable user profile manager banao — updateProfile(), addSkill(), removeSkill() — sab original modify kiye bina.