DEV Community

Cover image for Single Responsibility Principle-Part-1
bappasaha
bappasaha

Posted on

Single Responsibility Principle-Part-1

đŸ”Ĩ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++ āĻ•ā§āϞāĻžāϏāĨ¤

āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāϟāĻŋ āϞāĻ•ā§āĻˇā§āϝ āĻ•āϰāĻž āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āϝ⧇ āϏāĻĢāϟāĻ“āϝāĻŧā§āϝāĻžāϰ āωāĻĒāĻžāĻĻāĻžāύ⧇āϰ āϧāĻžāϰāĻŖāĻžāϟāĻŋ āĻāĻ•āϟāĻŋ āĻĒāĻĻā§āϧāϤāĻŋ, āĻĢāĻžāĻ‚āĻļāύ āĻŦāĻž āĻāĻŽāύāĻ•āĻŋ āĻāĻ•āϟāĻŋ āĻŽāĻĄāĻŋāωāϞāϕ⧇āĻ“ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āϤāĻžāχ āύāĻŋāϝāĻŧāĻŽāϟāĻŋ āĻŦāϞāϛ⧇ āϝ⧇ āĻāĻ•āϟāĻŋ āϏāĻĢāϟāĻ“āϝāĻŧā§āϝāĻžāϰ āωāĻĒāĻžāĻĻāĻžāύ⧇āϰ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āϟāĻŋ āĻĻāĻžāϝāĻŧāĻŋāĻ¤ā§āĻŦ āĻĨāĻžāĻ•āĻž āωāϚāĻŋāϤāĨ¤

āωāĻĻāĻžāĻšāϰāĻŖ

Image description

āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻžāϛ⧇ āĻāĻ•āϟāĻŋ āĻ›āĻŦāĻŋ āφāϛ⧇ āϝāĻž āĻāϟāĻŋ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž āĻ•āϰāϤ⧇ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰāĻŦ⧇āĨ¤ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ 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() āĻĢāĻžāĻ‚āĻļāύāϟāĻŋ āĻ¸ā§āϕ⧋āϝāĻŧāĻžāϰ⧇āϰ āϚāĻŋāĻ¤ā§āϰāϟāĻŋ āϘ⧁āϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧ āĻāĻŦāĻ‚ āĻāϟāĻŋ āφāĻŦāĻžāϰ āĻĄāĻŋāϏāĻĒā§āϞ⧇āϤ⧇ āϰ⧇āĻ¨ā§āĻĄāĻžāϰ āĻ•āϰ⧇āĨ¤

Image description

Cohesion āĻ•āĻŋ?

āĻāχ āϕ⧋āĻĄ āĻ¸ā§āύāĻŋāĻĒ⧇āĻŸā§‡āϰ āĻĒā§āϰāϏāĻ™ā§āϗ⧇, āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϧāĻžāϰāĻŖāĻž āĻļāĻŋāĻ–āĻŦ āϝāĻžāϰ āύāĻžāĻŽ CohesionāĨ¤ āϏāĻĢāϟāĻ“āϝāĻŧā§āϝāĻžāϰ āϜāĻ—āϤ⧇, āϕ⧋āĻšā§‡āĻļāύ āĻšāϞ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻ…āĻ‚āĻļ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇āϰ āĻĄāĻŋāĻ—ā§āϰāĻŋāĨ¤

āωāĻĻāĻžāĻšāϰāĻŖ:

āĻāĻ•āϟāĻŋ āĻ…āĻ—ā§‹āĻ›āĻžāϞ⧋ āφāĻŦāĻ°ā§āϜāύāĻžāϰ āĻ•ā§ŒāĻŸā§‹ āĻĻ⧇āϖ⧁āύāĨ¤ āĻāĻ–āĻžāύ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āϧāϰāύ⧇āϰ āϜāĻŋāύāĻŋāϏ āϰāϝāĻŧ⧇āϛ⧇ āϝ⧇āĻŽāύ āĻĒā§āϞāĻžāĻ¸ā§āϟāĻŋāϕ⧇āϰ āĻ•ā§āϝāĻžāύ, āĻŦāĻŋāϝāĻŧāĻžāϰ⧇āϰ āĻŦā§‹āϤāϞ, āĻ•āĻžāĻ—āĻœā§‡āϰ āĻŦāĻ°ā§āĻœā§āϝ āχāĻ¤ā§āϝāĻžāĻĻāĻŋāĨ¤ āĻāϗ⧁āϞ⧋āϰ āĻŽāĻ§ā§āϝ⧇ āϏāĻŽā§āĻĒāĻ°ā§āĻ• āϖ⧁āρāĻœā§‡ āĻĒāĻžāĻ“āϝāĻŧāĻž āĻ•āĻ āĻŋāύāĨ¤

āĻ•āĻŋāĻ¨ā§āϤ⧁ āϝāĻ–āύ āĻāϗ⧁āϞ⧋ āφāϞāĻžāĻĻāĻž āĻ•āϰāĻž āĻšāϝāĻŧ, āϤāĻ–āύ āĻāĻ•āϟāĻŋ āĻšāϞ⧁āĻĻ āĻŦāĻŋāύ⧇ āĻĒā§āϞāĻžāĻ¸ā§āϟāĻŋāϕ⧇āϰ āĻŦā§‹āϤāϞāϗ⧁āϞāĻŋ āĻĻ⧇āĻ–āĻž āϝāĻžāϝāĻŧāĨ¤ āϝāĻĻāĻŋāĻ“ āĻŦā§‹āϤāϞāϗ⧁āϞāĻŋ āĻāĻ•āϰāĻ•āĻŽ āύāϝāĻŧ, āϤāĻŦ⧇ āϤāĻžāĻĻ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻāĻ•āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āϏāĻŽā§āĻĒāĻ°ā§āĻ• āϰāϝāĻŧ⧇āϛ⧇: āϤāĻžāϰāĻž āϏāĻŦ āĻĒā§āϞāĻžāĻ¸ā§āϟāĻŋāϕ⧇āϰ āϤ⧈āϰāĻŋāĨ¤

Cohesion āĻāϰ āϏāĻ‚āĻœā§āĻžāĻž āĻ…āύ⧁āϝāĻžāϝāĻŧā§€, āĻ…āĻ—ā§‹āĻ›āĻžāϞ⧋ āφāĻŦāĻ°ā§āϜāύāĻžāϰ āĻ•ā§ŒāĻŸā§‹āϰ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁āϤ⧇ āĻ•āĻŽ āϕ⧋āĻšā§‡āĻļāύ āϰāϝāĻŧ⧇āϛ⧇, āĻāĻŦāĻ‚ āĻĒā§āϰāϤāĻŋāϟāĻŋ āφāϞāĻžāĻĻāĻž āφāĻŦāĻ°ā§āϜāύāĻžāϰ āĻ•ā§ŒāĻŸā§‹āϰ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁āϤ⧇ āωāĻšā§āϚ āϕ⧋āĻšā§‡āĻļāύ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

Square āĻ•ā§āϞāĻžāϏ⧇ āϕ⧋āĻšā§‡āĻļāύ

Square āĻ•ā§āϞāĻžāϏ⧇āϰ āĻŽā§‡āĻĨāĻĄāϗ⧁āϞ⧋āϰ āĻĻāĻŋāϕ⧇ āϤāĻžāĻ•āĻžāϞ⧇:

  • calculateArea āĻāĻŦāĻ‚ calculatePerimeter āĻŽā§‡āĻĨāĻĄāϗ⧁āϞāĻŋ āĻāϕ⧇ āĻ…āĻĒāϰ⧇āϰ āϏāĻžāĻĨ⧇ āϘāύāĻŋāĻˇā§āĻ āĻ­āĻžāĻŦ⧇ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ, āĻ•āĻžāϰāĻŖ āϤāĻžāϰāĻž āĻŦāĻ°ā§āϗ⧇āϰ āĻĒāϰāĻŋāĻŽāĻžāĻĒ āύāĻŋāϝāĻŧ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤ āϤāĻžāχ āϤāĻžāĻĻ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āωāĻšā§āϚ āϕ⧋āĻšā§‡āĻļāύ āϰāϝāĻŧ⧇āϛ⧇āĨ¤
  • draw() āĻāĻŦāĻ‚ rotate() āĻŽā§‡āĻĨāĻĄāϗ⧁āϞāĻŋ āĻ¸ā§āϕ⧋āϝāĻŧāĻžāϰ⧇āϰ āϚāĻŋāĻ¤ā§āϰ āϰ⧇āĻ¨ā§āĻĄāĻžāϰāĻŋāĻ‚ āύāĻŋāϝāĻŧ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇, āϤāĻžāχ āϤāĻžāĻĻ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āωāĻšā§āϚ āϕ⧋āĻšā§‡āĻļāύ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻ•āĻŋāĻ¨ā§āϤ⧁ āϝāĻĻāĻŋ āφāĻĒāύāĻŋ āϏāĻŽāĻ¸ā§āϤ āĻŽā§‡āĻĨāĻĄāϕ⧇ āĻāĻ•āϏāĻžāĻĨ⧇ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧇āύ, āϤāĻŦ⧇ āϕ⧋āĻšā§‡āĻļāύ⧇āϰ āĻ¸ā§āϤāϰ āĻ•āĻŽāĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, calculatePerimeter() āĻŽā§‡āĻĨāĻĄāϟāĻŋ draw() āĻŽā§‡āĻĨāĻĄā§‡āϰ āϏāĻžāĻĨ⧇ āϘāύāĻŋāĻˇā§āĻ āĻ­āĻžāĻŦ⧇ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āύāϝāĻŧ āĻ•āĻžāϰāĻŖ āϤāĻžāϰāĻž āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ­āĻŋāĻ¨ā§āύ āĻĻāĻžāϝāĻŧāĻŋāĻ¤ā§āĻŦ āύāĻŋāϝāĻŧ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤

āϏāĻŽāĻžāϧāĻžāύ

Image description

āĻāĻ–āύ āφāĻŽāĻŋ āĻ•āĻŋāϛ⧁ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻŦ āϝāĻžāϤ⧇ āϕ⧋āĻšā§‡āĻļāύ⧇āϰ āĻ¸ā§āϤāϰ āĻŦāĻžāĻĄāĻŧāĻžāύ⧋ āϝāĻžāϝāĻŧāĨ¤ āφāĻŽāĻŋ 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 āĻ•ā§āϞāĻžāϏ āωāĻĻāĻžāĻšāϰāĻŖ

Image description

āĻāĻ–āύ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ Student āĻ•ā§āϞāĻžāϏ āĻĻ⧇āĻ–āĻŋāĨ¤ āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻĨāĻĄ āĻšāϞ save() āϝāĻž āĻ›āĻžāĻ¤ā§āϰ āĻ•ā§āϞāĻžāϏāϕ⧇ āϏāĻŋāϰāĻŋāϝāĻŧāĻžāϞāĻžāχāϜāĻĄ āĻĢāĻ°ā§āĻŽā§‡ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰāĻŋāϤ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇āĨ¤

āϝāĻĻāĻŋ āφāĻĒāύāĻŋ āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇ MySQL āĻĨ⧇āϕ⧇ MongoDB āϤ⧇ āϚāϞ⧇ āϝāĻžāύ, āϤāĻŦ⧇ āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āϕ⧋āĻĄ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āϤāĻžāχ Student āĻ•ā§āϞāĻžāϏāϟāĻŋ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻ¸ā§āϤāϰ⧇āϰ āϏāĻžāĻĨ⧇ āĻļāĻ•ā§āϤāĻ­āĻžāĻŦ⧇ āϝ⧁āĻ•ā§āϤāĨ¤

āϏāĻŽāĻžāϧāĻžāύ

Image description

āφāĻŽāϰāĻž āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āϕ⧋āĻĄāϟāĻŋāϕ⧇ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ 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 āĻ•ā§āϞāĻžāϏāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦāĨ¤ āϧāϰ⧁āύ āĻāχ āĻ•ā§āϞāĻžāϏāϟāĻŋ āĻāĻ•āϟāĻŋ āϏāĻĢāϟāĻ“āϝāĻŧā§āϝāĻžāϰ āĻŽāĻĄāĻŋāωāϞ⧇āϰ āĻ…āĻ‚āĻļ āϝāĻž āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āĻ‰ā§ŽāĻĒāĻžāĻĻāύ⧇ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āϏāĻŽā§āĻ­āĻžāĻŦā§āϝ āĻ•āĻžāϰāĻŖ:

  1. āĻ›āĻžāĻ¤ā§āϰ āφāχāĻĄāĻŋāϰ āĻĢāϰāĻŽā§āϝāĻžāĻŸā§‡ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ
  2. āĻ›āĻžāĻ¤ā§āϰ āύāĻžāĻŽā§‡āϰ āĻĢāϰāĻŽā§āϝāĻžāĻŸā§‡ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ
  3. āĻĒā§āϰāϝ⧁āĻ•ā§āϤāĻŋāĻ—āϤ āĻĻāϞ⧇āϰ āĻĒāϰāĻžāĻŽāĻ°ā§āĻļ āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄā§‡ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

āφāĻŽāϰāĻž āϤāĻŋāύāϟāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āĻ•āĻžāϰāĻŖ āϚāĻŋāĻšā§āύāĻŋāϤ āĻ•āϰ⧇āĻ›āĻŋāĨ¤

SRP āĻāϰ āϏāĻŽāĻ¸ā§āϝāĻž

āϝāĻĻāĻŋ āĻāĻ•āϟāĻŋ āϏāĻĢāϟāĻ“āϝāĻŧā§āϝāĻžāϰ āωāĻĒāĻžāĻĻāĻžāύ⧇ āĻāĻ•āĻžāϧāĻŋāĻ• āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āĻ•āĻžāϰāĻŖ āĻĨāĻžāϕ⧇, āϤāĻŦ⧇ āϤāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āĻĢā§āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¨ā§āϏāĻŋ āĻŦāĻžāĻĄāĻŧāĻŦ⧇āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻŦāĻžāĻ— āĻĒā§āϰāĻŦ⧇āĻļ⧇āϰ āϏāĻŽā§āĻ­āĻžāĻŦāύāĻž āĻŦāĻžāĻĄāĻŧāĻžāϝāĻŧ, āϝāĻž āĻĒ⧁āύāσāĻĒāϰ⧀āĻ•ā§āώāϪ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻŽāϝāĻŧ āĻāĻŦāĻ‚ āĻ…āĻ°ā§āĻĨ āĻŦā§āϝāϝāĻŧ āĻ•āϰ⧇āĨ¤

āϏāĻŽāĻžāϧāĻžāύ

āφāĻŽāϰāĻž āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āϝ⧇ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒ āύāĻŋāϝāĻŧ⧇āĻ›āĻŋāϞāĻžāĻŽ, āϤāĻž āφāĻŦāĻžāϰ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰāĻŦāĨ¤ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻ…āĻĒāĻžāϰ⧇āĻļāύāϗ⧁āϞāĻŋ āφāϞāĻžāĻĻāĻž Repository āĻ•ā§āϞāĻžāϏ⧇ āĻ¸ā§āĻĨāĻžāύāĻžāĻ¨ā§āϤāϰ āĻ•āϰāĻŦāĨ¤

āĻ•ā§āϞāĻžāϏ āĻŦāĻŋāĻ­āĻžāϜāύ:

  • Student āĻ•ā§āϞāĻžāϏ: ⧍āϟāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āĻ•āĻžāϰāĻŖ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤
  • Repository āĻ•ā§āϞāĻžāϏ: ā§§āϟāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āĻ•āĻžāϰāĻŖ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤

āϝāĻĻāĻŋāĻ“ Student āĻ•ā§āϞāĻžāϏ⧇ ⧍āϟāĻŋ āĻ•āĻžāϰāϪ⧇ āϏāĻŽāĻ¸ā§āϝāĻž āϰāϝāĻŧ⧇āϛ⧇, āϤāĻŦ⧇ āϝāĻĻāĻŋ āϤāĻžāϰāĻž āϘāύāĻŋāĻˇā§āĻ āĻ­āĻžāĻŦ⧇ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āĻšāϝāĻŧ, āϤāĻŦ⧇ āϤāĻžāĻĻ⧇āϰ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, "āĻ›āĻžāĻ¤ā§āϰ⧇āϰ āĻĒā§āϰ⧋āĻĢāĻžāχāϞ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ" āĻŦāϞāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

ÂŠī¸ Bappa Saha Bapi

Top comments (0)