Jab ek class do actors serve karti hai, toh actor A ki requested change accidentally actor B ke behaviour ko break kar sakti hai — kyunki woh code share karte hain.
Padhne se pehle: Tum Employee class ko KHUD kaise split karoge? Recurring pattern kya hai?
Answer:Data ko policies se alag karo, har actor ko uski apni class do.
Shared EmployeeData rakho; PayCalculator, HourReporter, EmployeeRepository banao.
Step-by-step refactor:
Suspect class ke methods list karo.
Har method ko uske actor ke saath tag karo (changes kaun request karta hai?).
Actor ke hisaab se group karo. Har distinct actor → uski apni class.
Shared data ko ek passive data structure mein extract karo (koi policy nahi).
Optionally ek Facade provide karo taaki callers ke paas abhi bhi ek entry point rahe.
Hum "change kitni risky hai" pe ek number daal sakte hain. Maano ek class A alag-alag actors ke baare mein jaanti hai. Kisi bhi actor se ek change request ka kuch chance p hai ki accidentally aise behaviour par asar ho jo doosra actor depend karta hai (shared state/helpers).
Ek class ka ek, aur sirf ek, reason to change hona chahiye.
"Reason to change" kis real-world concept se map hota hai?
Ek actor se — ek akela stakeholder/role jo changes request karta hai.
"Ek class ko sirf ek kaam karna chahiye" SRP ki galat reading kyun hai?
SRP reasons to change (actors) count karta hai, na ki operations ki ginti; ek class ke paas bahut saare methods ho sakte hain jo ek actor serve karte hain.
Employee god-class mein kaun se actors clash karte hain?
Ek passive data struct extract karo aur har actor ko uski apni class do; optionally Facade add karo.
Over-splitting ke baad ek single entry point restore karne wala pattern kaunsa hai?
Facade pattern.
A actors aur break prob p ke liye cross-actor risk formula kya hai?
R(A)=1−(1−p)A−1.
A=1 pe R kya hai aur kyun?
0; ek actor ka matlab hai koi doosra actor nahi jo accidentally break ho sake.
SRP ko OVER-apply karne se kaun sa design smell aata hai?
Shotgun surgery / tiny anaemic classes ka chakravyuh.
SRP module boundaries ko kis organisational cheez ke saath align karta hai?
Stakeholders/actors ke org chart ke saath.
Recall Feynman: 12-saal ke bacche ko samjhao
Socho ek toy robot jo khana bana sakta hai, car chala sakta hai, AUR homework kar sakta hai. Agar tum robot ko spicy khana banana kaho, tum uski "cook" wires tweak karte ho — lekin woh wires "drive" wires ke saath tangled hain, toh suddenly car start nahi hogi! Yeh irritating hai. SRP kehta hai:
har kaam ke liye uska apna robot do. Cooking robot, driving robot, homework robot. Ab jab tum cooking change karo, car theek se chalti rehti hai. Ek robot = ek kaam = ek reason ki koi usse change karne ko kahe.