This content originally appeared on DEV Community and was authored by bappasaha
đĨA1-Single Responsibility Principle (SRP) - Overview
SOLID āĻāĻ° 'S' āĻšāĻ˛ Single Responsibility Principle, āĻ¯āĻž āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ SRP āĻ¨āĻžāĻŽā§ āĻĒāĻ°āĻŋāĻāĻŋāĻ¤āĨ¤
SRP āĻāĻŋ?
Single Responsibility Principle āĻŦāĻ˛āĻā§ āĻ¯ā§ 'āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¸āĻĢāĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻāĻĒāĻžāĻĻāĻžāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻāĻŦāĻ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻĻāĻžāĻ¯āĻŧāĻŋāĻ¤ā§āĻŦ āĻĨāĻžāĻāĻž āĻāĻāĻŋāĻ¤'āĨ¤ [component should have one and only one responsibility']
- [component should have one and only one (responsibility) reason to change]
āĻ¯āĻāĻ¨ āĻāĻŽāĻ°āĻž āĻ¸āĻĢāĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻŦāĻ˛āĻŋ, āĻ¤āĻāĻ¨ āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ āĻŦāĻā§āĻā§āĻ-āĻ āĻ°āĻŋāĻ¯āĻŧā§āĻ¨ā§āĻā§āĻĄ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻŋāĻ āĻāĻžāĻˇāĻž āĻ¯ā§āĻŽāĻ¨ C++ āĻāĻ° āĻĒā§āĻ°āĻ¸āĻā§āĻā§ āĻāĻĨāĻž āĻŦāĻ˛āĻŋ, āĻ¤āĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻŽāĻ¨ā§ āĻĒāĻĄāĻŧā§ āĻāĻāĻāĻŋ C++ āĻā§āĻ˛āĻžāĻ¸āĨ¤
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻŋ āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°āĻž āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻ¯ā§ āĻ¸āĻĢāĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻāĻĒāĻžāĻĻāĻžāĻ¨ā§āĻ° āĻ§āĻžāĻ°āĻŖāĻžāĻāĻŋ āĻāĻāĻāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ, āĻĢāĻžāĻāĻļāĻ¨ āĻŦāĻž āĻāĻŽāĻ¨āĻāĻŋ āĻāĻāĻāĻŋ āĻŽāĻĄāĻŋāĻāĻ˛āĻā§āĻ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻ¤āĻžāĻ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻāĻŋ āĻŦāĻ˛āĻā§ āĻ¯ā§ āĻāĻāĻāĻŋ āĻ¸āĻĢāĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻāĻĒāĻžāĻĻāĻžāĻ¨ā§āĻ° āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻĻāĻžāĻ¯āĻŧāĻŋāĻ¤ā§āĻŦ āĻĨāĻžāĻāĻž āĻāĻāĻŋāĻ¤āĨ¤
āĻāĻĻāĻžāĻšāĻ°āĻŖ
āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻāĻāĻāĻŋ āĻāĻŦāĻŋ āĻāĻā§ āĻ¯āĻž āĻāĻāĻŋ āĻŦā§āĻ¯āĻžāĻā§āĻ¯āĻž āĻāĻ°āĻ¤ā§ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°āĻŦā§āĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ Swiss Army KnifeāĨ¤ āĻāĻĒāĻ¨āĻŋ āĻāĻžāĻ¨ā§āĻ¨, āĻāĻāĻāĻŋ Swiss Army Knife āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ āĻ¸āĻ°āĻā§āĻāĻžāĻŽā§āĻ° āĻ¸āĻŽāĻ¨ā§āĻŦāĻ¯āĻŧ, āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻāĻāĻāĻŋāĻ° āĻāĻ˛āĻžāĻĻāĻž āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻā§āĻ¯āĻžāĻ¨ āĻāĻĒā§āĻ¨āĻžāĻ° āĻĨā§āĻā§ āĻļā§āĻ°ā§ āĻāĻ°ā§ āĻŽāĻŋāĻ¨āĻŋ āĻāĻžāĻāĻāĻŋ āĻŦāĻž āĻ¸ā§āĻā§āĻ°ā§ āĻĄā§āĻ°āĻžāĻāĻāĻžāĻ° āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻāĻŋāĻā§ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻ¯āĻĻāĻŋāĻ Swiss Army Knife āĻāĻāĻāĻŋ āĻŦāĻšā§āĻŽā§āĻā§ āĻ¸āĻ°āĻā§āĻāĻžāĻŽ āĻāĻŦāĻ āĻā§āĻŦ āĻāĻžāĻšāĻŋāĻĻāĻžāĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨, āĻ¸āĻĢāĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ°ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻā§āĻ˛āĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻŋ Swiss Army Knife āĻā§ āĻāĻāĻāĻŋ āĻ¸āĻĢāĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻšāĻŋāĻ¸ā§āĻŦā§ āĻāĻžāĻŦā§āĻ¨, āĻ¤āĻŦā§ āĻāĻāĻŋ Single Responsibility Principle āĻ˛āĻā§āĻāĻ¨ āĻāĻ°ā§ āĻāĻžāĻ°āĻŖ āĻāĻ¤ā§ āĻāĻāĻžāĻ§āĻŋāĻ āĻĻāĻžāĻ¯āĻŧāĻŋāĻ¤ā§āĻŦ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
What does SRP recommend?
SRP āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻāĻ°ā§ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻā§āĻ°āĻŋ āĻĨāĻžāĻāĻž āĻāĻāĻŋāĻ¤ āĻ¯āĻžāĻ° āĻāĻāĻŽāĻžāĻ¤ā§āĻ° āĻĻāĻžāĻ¯āĻŧāĻŋāĻ¤ā§āĻŦ āĻāĻžāĻāĻžāĻ° āĻāĻžāĻ āĻāĻ°āĻžāĨ¤ āĻāĻāĻŋ āĻā§āĻ¯āĻžāĻ¨ āĻāĻĒā§āĻ¨āĻžāĻ° āĻŦāĻž āĻ¸ā§āĻā§āĻ°ā§ āĻĄā§āĻ°āĻžāĻāĻāĻžāĻ° āĻšāĻŋāĻ¸ā§āĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯āĻžāĻŦā§ āĻ¨āĻž; āĻāĻāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻžāĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻŦā§āĨ¤
đĨA2-Single Responsibility Principle (SRP) - Detailed Overview
āĻĒāĻ°āĻŋāĻāĻŋāĻ¤āĻŋ
Here Single Responsibility Principle (SRP) āĻāĻ āĻ¨ā§āĻ¤āĻŋāĻāĻŋ āĻāĻŋāĻāĻžāĻŦā§ āĻ¤ā§āĻ°āĻŋ āĻšāĻ¯āĻŧā§āĻā§ āĻ¤āĻž āĻ¨āĻŋāĻ¯āĻŧā§ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻāĻ˛ā§āĻāĻ¨āĻž āĻāĻ°āĻŦāĨ¤
Square āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ
āĻĻā§āĻā§āĻ¨, āĻāĻāĻžāĻ¨ā§ āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸ āĻāĻā§ āĻ¯āĻžāĻ° āĻ¨āĻžāĻŽ SquareāĨ¤ āĻāĻ¤ā§ ā§ĒāĻāĻŋ āĻŽā§āĻĨāĻĄ āĻ°āĻ¯āĻŧā§āĻā§: calculateArea()
, calculatePerimeter()
, draw()
, āĻāĻŦāĻ rotate()
āĨ¤
-
calculateArea
āĻāĻŦāĻcalculatePerimeter
āĻĢāĻžāĻāĻļāĻ¨āĻā§āĻ˛āĻŋ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§, āĻ āĻ°ā§āĻĨāĻžā§ āĻ¤āĻžāĻ°āĻž āĻāĻāĻāĻŋ āĻŦāĻ°ā§āĻā§āĻ° āĻĒāĻžāĻļā§ āĻĻā§āĻāĻ¯āĻŧāĻž āĻĻā§āĻ°ā§āĻā§āĻ¯ āĻ āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻāĻ° āĻāĻ˛āĻžāĻāĻž āĻāĻŦāĻ āĻĒāĻ°āĻŋāĻ§āĻŋ āĻāĻŖāĻ¨āĻž āĻāĻ°ā§āĨ¤ -
draw()
āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻ¸ā§āĻā§āĻ¯āĻŧāĻžāĻ°ā§āĻ° āĻāĻŋāĻ¤ā§āĻ°āĻāĻŋ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ā§ āĻ°ā§āĻ¨ā§āĻĄāĻžāĻ° āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻĄāĻŋāĻ¸āĻĒā§āĻ˛ā§āĻ° āĻ§āĻ°āĻ¨ āĻ āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻā§āĻĄ āĻĒā§āĻ°āĻŦāĻžāĻš āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ -
rotate()
āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻ¸ā§āĻā§āĻ¯āĻŧāĻžāĻ°ā§āĻ° āĻāĻŋāĻ¤ā§āĻ°āĻāĻŋ āĻā§āĻ°āĻŋāĻ¯āĻŧā§ āĻĻā§āĻ¯āĻŧ āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻŦāĻžāĻ° āĻĄāĻŋāĻ¸āĻĒā§āĻ˛ā§āĻ¤ā§ āĻ°ā§āĻ¨ā§āĻĄāĻžāĻ° āĻāĻ°ā§āĨ¤
Cohesion āĻāĻŋ?
āĻāĻ āĻā§āĻĄ āĻ¸ā§āĻ¨āĻŋāĻĒā§āĻā§āĻ° āĻĒā§āĻ°āĻ¸āĻā§āĻā§, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ§āĻžāĻ°āĻŖāĻž āĻļāĻŋāĻāĻŦ āĻ¯āĻžāĻ° āĻ¨āĻžāĻŽ CohesionāĨ¤ āĻ¸āĻĢāĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻāĻāĻ¤ā§, āĻā§āĻšā§āĻļāĻ¨ āĻšāĻ˛ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ āĻāĻļā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§āĻ° āĻĄāĻŋāĻā§āĻ°āĻŋāĨ¤
āĻāĻĻāĻžāĻšāĻ°āĻŖ:
āĻāĻāĻāĻŋ āĻ āĻā§āĻāĻžāĻ˛ā§ āĻāĻŦāĻ°ā§āĻāĻ¨āĻžāĻ° āĻā§āĻā§ āĻĻā§āĻā§āĻ¨āĨ¤ āĻāĻāĻžāĻ¨ā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ§āĻ°āĻ¨ā§āĻ° āĻāĻŋāĻ¨āĻŋāĻ¸ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯ā§āĻŽāĻ¨ āĻĒā§āĻ˛āĻžāĻ¸ā§āĻāĻŋāĻā§āĻ° āĻā§āĻ¯āĻžāĻ¨, āĻŦāĻŋāĻ¯āĻŧāĻžāĻ°ā§āĻ° āĻŦā§āĻ¤āĻ˛, āĻāĻžāĻāĻā§āĻ° āĻŦāĻ°ā§āĻā§āĻ¯ āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋāĨ¤ āĻāĻā§āĻ˛ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ āĻā§āĻāĻā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻāĻ āĻŋāĻ¨āĨ¤
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¯āĻāĻ¨ āĻāĻā§āĻ˛ā§ āĻāĻ˛āĻžāĻĻāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻāĻ¨ āĻāĻāĻāĻŋ āĻšāĻ˛ā§āĻĻ āĻŦāĻŋāĻ¨ā§ āĻĒā§āĻ˛āĻžāĻ¸ā§āĻāĻŋāĻā§āĻ° āĻŦā§āĻ¤āĻ˛āĻā§āĻ˛āĻŋ āĻĻā§āĻāĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻ¯āĻĻāĻŋāĻ āĻŦā§āĻ¤āĻ˛āĻā§āĻ˛āĻŋ āĻāĻāĻ°āĻāĻŽ āĻ¨āĻ¯āĻŧ, āĻ¤āĻŦā§ āĻ¤āĻžāĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ āĻ°āĻ¯āĻŧā§āĻā§: āĻ¤āĻžāĻ°āĻž āĻ¸āĻŦ āĻĒā§āĻ˛āĻžāĻ¸ā§āĻāĻŋāĻā§āĻ° āĻ¤ā§āĻ°āĻŋāĨ¤
Cohesion āĻāĻ° āĻ¸āĻāĻā§āĻāĻž āĻ āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§, āĻ āĻā§āĻāĻžāĻ˛ā§ āĻāĻŦāĻ°ā§āĻāĻ¨āĻžāĻ° āĻā§āĻā§āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§āĻ¤ā§ āĻāĻŽ āĻā§āĻšā§āĻļāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§, āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻāĻ˛āĻžāĻĻāĻž āĻāĻŦāĻ°ā§āĻāĻ¨āĻžāĻ° āĻā§āĻā§āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§āĻ¤ā§ āĻāĻā§āĻ āĻā§āĻšā§āĻļāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
Square āĻā§āĻ˛āĻžāĻ¸ā§ āĻā§āĻšā§āĻļāĻ¨
Square āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻŽā§āĻĨāĻĄāĻā§āĻ˛ā§āĻ° āĻĻāĻŋāĻā§ āĻ¤āĻžāĻāĻžāĻ˛ā§:
-
calculateArea
āĻāĻŦāĻcalculatePerimeter
āĻŽā§āĻĨāĻĄāĻā§āĻ˛āĻŋ āĻāĻā§ āĻ āĻĒāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻ¨āĻŋāĻˇā§āĻ āĻāĻžāĻŦā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤, āĻāĻžāĻ°āĻŖ āĻ¤āĻžāĻ°āĻž āĻŦāĻ°ā§āĻā§āĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻĒ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻžāĻ āĻāĻ°ā§āĨ¤ āĻ¤āĻžāĻ āĻ¤āĻžāĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻā§āĻ āĻā§āĻšā§āĻļāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ -
draw()
āĻāĻŦāĻrotate()
āĻŽā§āĻĨāĻĄāĻā§āĻ˛āĻŋ āĻ¸ā§āĻā§āĻ¯āĻŧāĻžāĻ°ā§āĻ° āĻāĻŋāĻ¤ā§āĻ° āĻ°ā§āĻ¨ā§āĻĄāĻžāĻ°āĻŋāĻ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻžāĻ āĻāĻ°ā§, āĻ¤āĻžāĻ āĻ¤āĻžāĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻā§āĻ āĻā§āĻšā§āĻļāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŽā§āĻĨāĻĄāĻā§ āĻāĻāĻ¸āĻžāĻĨā§ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°ā§āĻ¨, āĻ¤āĻŦā§ āĻā§āĻšā§āĻļāĻ¨ā§āĻ° āĻ¸ā§āĻ¤āĻ° āĻāĻŽāĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, calculatePerimeter()
āĻŽā§āĻĨāĻĄāĻāĻŋ draw()
āĻŽā§āĻĨāĻĄā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻ¨āĻŋāĻˇā§āĻ āĻāĻžāĻŦā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻ¨āĻ¯āĻŧ āĻāĻžāĻ°āĻŖ āĻ¤āĻžāĻ°āĻž āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻāĻŋāĻ¨ā§āĻ¨ āĻĻāĻžāĻ¯āĻŧāĻŋāĻ¤ā§āĻŦ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻžāĻ āĻāĻ°ā§āĨ¤
āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨
āĻāĻāĻ¨ āĻāĻŽāĻŋ āĻāĻŋāĻā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻŦ āĻ¯āĻžāĻ¤ā§ āĻā§āĻšā§āĻļāĻ¨ā§āĻ° āĻ¸ā§āĻ¤āĻ° āĻŦāĻžāĻĄāĻŧāĻžāĻ¨ā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻŽāĻŋ draw
āĻāĻŦāĻ rotate
āĻŽā§āĻĨāĻĄāĻā§āĻ˛āĻŋāĻā§ āĻāĻāĻāĻŋ āĻāĻ˛āĻžāĻĻāĻž āĻā§āĻ˛āĻžāĻ¸ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻŦ, āĻ¯āĻžāĻ° āĻ¨āĻžāĻŽ āĻšāĻŦā§ SquareUIāĨ¤
āĻāĻāĻžāĻŦā§, āĻ¯āĻĻāĻŋāĻ āĻāĻŽāĻŋ āĻŽā§āĻĨāĻĄāĻā§āĻ˛ā§āĻā§ āĻĻā§āĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸ā§ āĻāĻžāĻ āĻāĻ°ā§āĻāĻŋ, āĻāĻŽāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸ā§ āĻā§āĻšā§āĻļāĻ¨ā§āĻ° āĻ¸ā§āĻ¤āĻ° āĻŦāĻžāĻĄāĻŧāĻŋāĻ¯āĻŧā§āĻāĻŋāĨ¤
- Square āĻā§āĻ˛āĻžāĻ¸ā§ āĻāĻāĻ¨ āĻĻā§āĻāĻŋ āĻŽā§āĻĨāĻĄ āĻāĻ¨āĻŋāĻˇā§āĻ āĻāĻžāĻŦā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤, āĻāĻžāĻ°āĻŖ āĻ¤āĻžāĻ°āĻž āĻŦāĻ°ā§āĻā§āĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻĒ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻžāĻ āĻāĻ°ā§āĨ¤
- SquareUI āĻā§āĻ˛āĻžāĻ¸ā§ āĻĻā§āĻāĻŋ āĻŽā§āĻĨāĻĄāĻ āĻāĻ¨āĻŋāĻˇā§āĻ āĻāĻžāĻŦā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤, āĻāĻžāĻ°āĻŖ āĻ¤āĻžāĻ°āĻž āĻŦāĻ°ā§āĻā§āĻ° āĻā§āĻ°āĻžāĻĢāĻŋāĻ āĻ°ā§āĻ¨ā§āĻĄāĻžāĻ°āĻŋāĻ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻžāĻ āĻāĻ°ā§āĨ¤
Coupling āĻāĻŋ?
Coupling āĻšāĻ˛ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¸āĻĢāĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻāĻĒāĻžāĻĻāĻžāĻ¨ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻ¨ā§āĻ¤āĻāĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻžāĻ¯āĻŧ āĻ¸ā§āĻ¤āĻ°āĨ¤ [Coupling is defined as the level of inter dependency between various software components.]
- Loose Coupling helps attain better adherence to the single responsibility principle
Student āĻā§āĻ˛āĻžāĻ¸ āĻāĻĻāĻžāĻšāĻ°āĻŖ
āĻāĻāĻ¨ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ Student āĻā§āĻ˛āĻžāĻ¸ āĻĻā§āĻāĻŋāĨ¤ āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻŽā§āĻĨāĻĄ āĻšāĻ˛ save()
āĻ¯āĻž āĻāĻžāĻ¤ā§āĻ° āĻā§āĻ˛āĻžāĻ¸āĻā§ āĻ¸āĻŋāĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛āĻžāĻāĻāĻĄ āĻĢāĻ°ā§āĻŽā§ āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻāĻ°ā§ āĻāĻŦāĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§āĨ¤
āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻŋ āĻāĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§ MySQL āĻĨā§āĻā§ MongoDB āĻ¤ā§ āĻāĻ˛ā§ āĻ¯āĻžāĻ¨, āĻ¤āĻŦā§ āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻā§āĻĄ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻ¤āĻžāĻ Student āĻā§āĻ˛āĻžāĻ¸āĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸ā§āĻ¤āĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻļāĻā§āĻ¤āĻāĻžāĻŦā§ āĻ¯ā§āĻā§āĻ¤āĨ¤
āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨
āĻāĻŽāĻ°āĻž āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻā§āĻĄāĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ Repository āĻā§āĻ˛āĻžāĻ¸ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻŦāĨ¤
āĻāĻāĻžāĻŦā§ āĻāĻŽāĻ°āĻž āĻļāĻā§āĻ¤ āĻ¸āĻāĻ¯ā§āĻ āĻ āĻĒāĻ¸āĻžāĻ°āĻŖ āĻāĻ°ā§āĻāĻŋ āĻāĻŦāĻ āĻāĻāĻŋāĻā§ āĻĻā§āĻ°ā§āĻŦāĻ˛ āĻāĻ°ā§āĻāĻŋāĨ¤ āĻāĻāĻ¨ āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻ¨āĻŋāĻšāĻŋāĻ¤ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻŋ, Student āĻā§āĻ˛āĻžāĻ¸āĻāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻŦāĻž āĻĒā§āĻ¨āĻāĻ¸āĻāĻāĻ˛āĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻ; āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° Repository āĻā§āĻ˛āĻžāĻ¸ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻāĻĒāĻ¸āĻāĻšāĻžāĻ°
āĻāĻŽāĻ°āĻž āĻĻā§āĻāĻŋ āĻ§āĻžāĻ°āĻŖāĻž āĻĻā§āĻā§āĻāĻŋ - Cohesion āĻāĻŦāĻ CouplingāĨ¤
- āĻāĻŽāĻ°āĻž āĻĻā§āĻā§āĻāĻŋ āĻ¯ā§ Low Chohesion is Bad
- Single Responsibility Principle āĻ¸āĻ°ā§āĻŦāĻĻāĻž High Cohesion āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§āĨ¤
- āĻāĻŽāĻ°āĻž āĻĻā§āĻā§āĻāĻŋ āĻ¯ā§ āĻļāĻā§āĻ¤ āĻ¸āĻāĻ¯ā§āĻ āĻāĻžāĻ°āĻžāĻĒāĨ¤
- Single Responsibility Principle āĻ¸āĻ°ā§āĻŦāĻĻāĻž Loose Cupling āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻāĻ°ā§āĨ¤
āĻ¸ā§āĻ¤āĻ°āĻžāĻ āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻāĻā§āĻ āĻā§āĻšā§āĻļāĻ¨ [High Cohesion] āĻāĻŦāĻ āĻĻā§āĻ°ā§āĻŦāĻ˛ āĻ¸āĻāĻ¯ā§āĻā§āĻ° [Loose Cupling] āĻĻāĻŋāĻā§ āĻ˛āĻā§āĻˇā§āĻ¯ āĻ°āĻžāĻā§āĻ¨āĨ¤ when ever we working on SRP
đĨA3-Single Responsibility Principle (SRP) - Modified Definition
āĻĒāĻ°āĻŋāĻāĻŋāĻ¤āĻŋ
āĻāĻŽāĻ°āĻž āĻ¸āĻāĻā§āĻāĻžāĻāĻŋāĻ° āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĻā§āĻˇā§āĻāĻŋāĻāĻā§āĻāĻŋ āĻĻā§āĻāĻŦāĨ¤
āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻāĻā§āĻāĻž
āĻŽā§āĻ˛ āĻ¨ā§āĻ¤āĻŋ āĻŦāĻ˛ā§: 'āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¸āĻĢāĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻāĻĒāĻžāĻĻāĻžāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻāĻŦāĻ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻĻāĻžāĻ¯āĻŧāĻŋāĻ¤ā§āĻŦ āĻĨāĻžāĻāĻž āĻāĻāĻŋāĻ¤'āĨ¤
āĻāĻāĻ¨ āĻāĻŽāĻ°āĻž 'āĻĻāĻžāĻ¯āĻŧāĻŋāĻ¤ā§āĻŦ' āĻļāĻŦā§āĻĻāĻāĻŋāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ 'āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻāĻžāĻ°āĻŖ' (reason to change) āĻļāĻŦā§āĻĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦāĨ¤
āĻ¤āĻžāĻšāĻ˛ā§ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻāĻā§āĻāĻž āĻšāĻŦā§: 'āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¸āĻĢāĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻāĻĒāĻžāĻĻāĻžāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻāĻŦāĻ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻāĻžāĻ°āĻŖ āĻĨāĻžāĻāĻž āĻāĻāĻŋāĻ¤'āĨ¤
- [component should have one and only one reason to change]
āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻāĻžāĻ°āĻŖ āĻāĻŋ?
In the words of the Greek Philosopher - Heraclitus . "The only thing that is constant is change"
it always keeps changing in Software industry
āĻāĻĻāĻžāĻšāĻ°āĻŖ
āĻāĻŽāĻ°āĻž āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§ āĻ¸ā§āĻļāĻ¨ā§āĻ° Student āĻā§āĻ˛āĻžāĻ¸āĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦāĨ¤ āĻ§āĻ°ā§āĻ¨ āĻāĻ āĻā§āĻ˛āĻžāĻ¸āĻāĻŋ āĻāĻāĻāĻŋ āĻ¸āĻĢāĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻŽāĻĄāĻŋāĻāĻ˛ā§āĻ° āĻ āĻāĻļ āĻ¯āĻž āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻā§āĻĒāĻžāĻĻāĻ¨ā§ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻ¸āĻŽā§āĻāĻžāĻŦā§āĻ¯ āĻāĻžāĻ°āĻŖ:
- āĻāĻžāĻ¤ā§āĻ° āĻāĻāĻĄāĻŋāĻ° āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨
- āĻāĻžāĻ¤ā§āĻ° āĻ¨āĻžāĻŽā§āĻ° āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨
- āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¤āĻŋāĻāĻ¤ āĻĻāĻ˛ā§āĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻ āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻŦā§āĻ¯āĻžāĻāĻāĻ¨ā§āĻĄā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨
āĻāĻŽāĻ°āĻž āĻ¤āĻŋāĻ¨āĻāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻāĻžāĻ°āĻŖ āĻāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻāĻ°ā§āĻāĻŋāĨ¤
SRP āĻāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž
āĻ¯āĻĻāĻŋ āĻāĻāĻāĻŋ āĻ¸āĻĢāĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻāĻĒāĻžāĻĻāĻžāĻ¨ā§ āĻāĻāĻžāĻ§āĻŋāĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻāĻžāĻ°āĻŖ āĻĨāĻžāĻā§, āĻ¤āĻŦā§ āĻ¤āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻĢā§āĻ°āĻŋāĻā§āĻ¯āĻŧā§āĻ¨ā§āĻ¸āĻŋ āĻŦāĻžāĻĄāĻŧāĻŦā§āĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻŦāĻžāĻ āĻĒā§āĻ°āĻŦā§āĻļā§āĻ° āĻ¸āĻŽā§āĻāĻžāĻŦāĻ¨āĻž āĻŦāĻžāĻĄāĻŧāĻžāĻ¯āĻŧ, āĻ¯āĻž āĻĒā§āĻ¨āĻāĻĒāĻ°ā§āĻā§āĻˇāĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŦāĻ āĻ āĻ°ā§āĻĨ āĻŦā§āĻ¯āĻ¯āĻŧ āĻāĻ°ā§āĨ¤
āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨
āĻāĻŽāĻ°āĻž āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§ āĻ¯ā§ āĻĒāĻĻāĻā§āĻˇā§āĻĒ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽ, āĻ¤āĻž āĻāĻŦāĻžāĻ° āĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻŦāĨ¤ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨āĻā§āĻ˛āĻŋ āĻāĻ˛āĻžāĻĻāĻž Repository āĻā§āĻ˛āĻžāĻ¸ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻŦāĨ¤
āĻā§āĻ˛āĻžāĻ¸ āĻŦāĻŋāĻāĻžāĻāĻ¨:
- Student āĻā§āĻ˛āĻžāĻ¸: ā§¨āĻāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻāĻžāĻ°āĻŖ āĻĨāĻžāĻāĻŦā§āĨ¤
- Repository āĻā§āĻ˛āĻžāĻ¸: ā§§āĻāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻāĻžāĻ°āĻŖ āĻĨāĻžāĻāĻŦā§āĨ¤
āĻ¯āĻĻāĻŋāĻ Student āĻā§āĻ˛āĻžāĻ¸ā§ ā§¨āĻāĻŋ āĻāĻžāĻ°āĻŖā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ°āĻ¯āĻŧā§āĻā§, āĻ¤āĻŦā§ āĻ¯āĻĻāĻŋ āĻ¤āĻžāĻ°āĻž āĻāĻ¨āĻŋāĻˇā§āĻ āĻāĻžāĻŦā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻ¤āĻŦā§ āĻ¤āĻžāĻĻā§āĻ° āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, "āĻāĻžāĻ¤ā§āĻ°ā§āĻ° āĻĒā§āĻ°ā§āĻĢāĻžāĻāĻ˛ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨" āĻŦāĻ˛āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
Šī¸ Bappa Saha Bapi
This content originally appeared on DEV Community and was authored by bappasaha
bappasaha | Sciencx (2024-11-10T17:02:27+00:00) Single Responsibility Principle-Part-1. Retrieved from https://www.scien.cx/2024/11/10/single-responsibility-principle-part-1/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.