ΠΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΊΠ°Π· ΠΎ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΠΈ ΠΎ ΠΊΠ½ΠΈΠ³Π΅, Π° ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΈ Π·Π½Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅, Π±ΡΠ»ΠΈ ΠΈΠ·ΡΡΠ΅Π½Ρ
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°
ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ, ΡΠΈΡΠ°Ρ ΡΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ, Π΄Π°ΡΡ ΡΠ΅ΡΠΊΠΈΠΉ ΠΎΡΠ²Π΅Ρ Π½Π° Π²ΠΎΠΏΡΠΎΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°? Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ? ΠΠ°ΠΊΡΡ ΡΠΎΠ»Ρ ΠΎΠ½Π° ΠΈΠ³ΡΠ°Π΅Ρ? ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΡΡΠ½ΠΎΡΡΠ΅ΠΉ Π΅ΡΡΡ Π² ΡΡΠΎΠΌ ΡΠ΅ΡΠΌΠΈΠ½Π΅. Π Π²ΡΠΎΠ΄Π΅ Π±Ρ Π²ΡΠ΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, Π½ΠΎ ΠΊΠ°ΠΊ-ΡΠΎ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎ, ΠΈ Π±Π΅Π· ΡΠΎΡΠ½ΠΎΡΡΠΈ. ΠΠ°ΡΡΠΈΠ½ ΡΡΠΈΡΠ°Π΅Ρ, ΠΈ Ρ Ρ Π½ΠΈΠΌ ΡΠΎΠ»ΠΈΠ΄Π°ΡΠ΅Π½, ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ :
- ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (behavior) β ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π·Π°Π΄Π°ΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° (ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΡΠ΅ΡΠ²ΠΈΡ) Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ.
- ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° β ΡΡΠΎΡ ΡΠ΅ΡΠΌΠΈΠ½ Π² Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΠΌΠ΅ΡΠ΅ ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΎ Π΄Π°ΠΆΠ΅, Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π·Π°Π΄Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΡΡ, ΡΡΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΎΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ Ρ ΠΎΡΠΎΡΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ. ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° β ΡΡΠΎ Π½Π΅ ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° β ΡΡΠΎ ΠΎ Π»Π΅Π³ΠΊΠΎΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡΠΈ, Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° β ΡΡΠΎ ΠΎ Π»Π΅Π³ΠΊΠΎΡΡΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ, Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° β ΡΡΠΎ ΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° β ΡΡΠΎ ΠΎ ΡΠΊΠΎΡΠΎΡΡΠΈ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅
Π Π²ΠΎΡ ΠΊΠ°ΠΊ ΡΡΡΠΎΠΈΡΡ ΡΡΡ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ, ΠΊΠ°ΠΊ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡ ΠΎΡ Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ Π±ΠΎΠ»ΠΈ ΠΏΡΠΈ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΎΡ PMβΠ°, ΠΈΠ»ΠΈ ΠΎΡ ΡΡΠ΅ΠΉΠΊΡ
ΠΎΠ»Π΄Π΅ΡΠ°: ΠΎΠ± ΡΡΠΎΠΌ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π°Π΅Ρ ΠΊΠ½ΠΈΠ³Π°
ΠΠ± Π°Π²ΡΠΎΡΠ°Ρ
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎΠ± ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅, Ρ Ρ
ΠΎΡΡ ΡΠΊΠ°Π·Π°ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ ΡΠ΅Π±Π΅.
ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Ρ Strong Junior Developer, ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΠΈΠΉΡΡ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ASP .NET COREβΠ°.
Π― ΡΠΆΠ΅ Π³ΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ βΠ³Π°Π»Π΅ΡΠΊΠ΅β, ΠΈ Π²ΡΠΎΠ΄Π΅ Π±Ρ ΠΏΠΎ ΡΡΡΡ-ΡΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡΡ
ΠΠ½ΠΈΠ³Ρ Ρ ΡΡΡ ΡΠΆΠ΅ ΠΏΡΠΎΡΠ΅Π» 2 ΡΠ°Π·Π°, ΠΈ ΠΊ ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π²ΡΠ΅ΠΌ:
- ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ embeded ΡΠΈΡΡΠ΅ΠΌ;
- ΡΡΠΎΠ½Ρ-ΡΠ½Π΄ΡΠΈΠΊΠ°ΠΌ;
- Π±ΡΠΊ-ΡΠ½Π΄ΡΠΈΠΊΠ°ΠΌ;
- ΠΈ Π΄Π°ΠΆΠ΅ Π΄Π΅Π²ΠΎΠΏΡΠ°ΠΌ.
ΠΠΎΠΎΠ±ΡΠ΅ΠΌ Π²ΡΠ΅ΠΌ, ΠΊΡΠΎ Ρ
ΠΎΡΡ ΠΊΠ°ΠΊ ΡΠΎ ΡΠ²ΡΠ·Π°Π½ Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΠΠ, ΠΈΠΌΠ΅Π΅ΡΡΡ Π² Π²ΠΈΠ΄Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΡΠ°Π·Π½ΡΡ
ΡΠ°ΠΌ Π‘Π΅ΠΉΠ»ΠΎΠ² ΠΈ ΠΠβΠΎΠ² ΡΡΠ΄Π° Π½Π΅ ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ (Ρ
ΠΎΡΡ ΡΠΎΠΆΠ΅ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π½Π°ΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ Π΄Π΅Π² Π±ΡΠ²Π°Π΅Ρ ΡΡΠ°ΡΠΈΡ Π² 2 ΡΠ°Π·Π° Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° Π·Π°Π΄Π°ΡΡ), ΡΠΎΠ²Π΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΡΡ ΠΊΠ½ΠΈΠ³Ρ.
Π ΡΠ΅ΠΉΡΠ°Ρ Ρ ΠΏΠΎΠΏΡΠΎΠ±ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ Ρ ΡΠ°ΠΊ ΡΡΠΈΡΠ°Ρ
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ± Π°Π²ΡΠΎΡΠ΅ ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ( ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ Π°Π²ΡΠΎΡΠΈΡΠ΅Ρ ΠΏΠΈΡΡΡΠ΅Π³ΠΎ ΠΈΠ³ΡΠ°Π΅Ρ Π±ΠΎΠ»ΡΡΡΡ ΡΠΎΠ»Ρ). Π― Π΄ΡΠΌΠ°Ρ Π²Ρ ΠΌΠ΅Π½Ρ ΠΏΠΎΠΉΠΌΠ΅ΡΠ΅, Ρ ΠΎΡΡ ΡΡΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Π°ΠΌ ΡΡΠΎ-ΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ Π°Π²ΡΠΎΡΠΈΡΠ΅ΡΠ½ΡΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ Π² ΡΡΠ΅ΡΠ΅ β Π²Ρ ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΠ΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π΄ΠΎΠ²Π΅ΡΠΈΡ ΠΊ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΠΈΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π΄ΡΠΌΠ°Ρ Π²Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠΈΡΠ΅ Π² Π΄ΠΈΠ°Π³Π½ΠΎΠ·, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π°ΠΌ ΡΡΠ°Π²ΠΈΡ Π²ΡΠ°Ρ, Π½Π΅ΠΆΠ΅Π»ΠΈ ΠΎΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΠΈΠ· ΡΠΎΠ»ΠΏΡ (ΠΏΠΎΠ³ΡΠ³Π»ΠΈΠ²ΡΠΈΠΉ ΡΠΈΠΌΠΏΡΠΎΠΌΡ)
Π ΠΎΠ±Π΅ΡΡ ΠΠ°ΡΡΠΈΠ½ β ΠΎΠ½ ΠΆΠ΅ ΠΠ½ΠΊΠ» ΠΠΎΠ± (Π΄ΡΠ΄ΡΡΠΊΠ° ΠΠΎΠ±) β ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΡΠ΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠΈΡΠ΅ΠΌ ΡΠ°Π·Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ (ΠΎΡ Π²Π΅Π±ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π΄ΠΎ Π΅ΠΌΠ±Π΅Π΄ΠΈΡ ΡΠΈΡΡΠ΅ΠΌ), Ρ 1970 Π³ΠΎΠ΄Π°. ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΊΠΎΠ½ΡΡΠ»ΡΡΠ°Π½ΡΠΎΠΌ ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΠΎΡΠΎΠΌ, ΠΏΠΈΡΠ°Π» Π² ΡΠ°Π·Π½ΡΠ΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΆΡΡΠ½Π°Π»Ρ, ΡΠ°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΎΡΠ΅Π½Ρ ΠΎΠΏΡΡΠ½ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ, ΠΈ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ³ΡΠ°Π» ΠΎΠ΄Π½Ρ ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠΎΠ»Π΅ΠΉ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ SOLID ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² (ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ). Π’Π°ΠΊ ΠΆΠ΅, Ρ ΠΎΡΠ΅ΡΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ, ΡΡΠΎ ΠΌΠ½Π΅ ΡΡΡ ΠΊΠ½ΠΈΠ³Ρ ΠΏΠΎΡΠΎΠ²Π΅ΡΠΎΠ²Π°Π» ΠΌΠΎΠΉ ΡΠΈΠΌΠ»ΠΈΠ΄ Ρ 15+ ΠΎΠΏΡΡΠΎΠΌ ΡΠ°Π±ΠΎΡΡ
Π ΠΊΠ½ΠΈΠ³Π΅
ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
ΠΠ΅ΡΠ΅Π΄ ΠΏΡΠΎΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠ½ΠΈΠ³ΠΈ, Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΠ΅Π΅ΠΊ Π½Π° ΡΠΎΠΌ ΠΆΠ΅ Π₯Π°Π±ΡΠ΅ ΡΠΈΡΠ°Π», Π³Π΄Π΅ ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π»ΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ, ΠΊΠ°ΠΊ βΠ·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡβ. Π§ΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅, ΠΊΡΠΎ ΠΎΡ ΠΊΠΎΠ³ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌ, ΡΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π·Π½Π°ΡΠΈΡ βΠ·Π°Π²ΠΈΡΠ΅ΡΡβ, ΠΈ ΠΊΠ°ΠΊ ΠΊΠ°ΠΊΠΎΠΉ ΡΠΎ ΠΊΠ»Π°ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΠΊΠΎΠ³ΠΎ-ΡΠΎ?
Π Π²ΠΎΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠ΅Π½ΠΈΡ ΠΊΠ½ΠΈΠ³ΠΈ Ρ ΡΡΠ²ΠΎΠΈΠ» Π΄Π²Π° ΠΌΠΎΠΌΠ΅Π½ΡΠ°:
ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ β ΡΡΠΎ ΡΠ΅ΡΠΌΠΈΠ½, Π·Π½Π°ΡΠ°ΡΠΈΠΉ, ΡΡΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΊΠ»Π°ΡΡ (ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΡΠ΅ΡΠ²ΠΈΡ) Π·Π½Π°Π΅Ρ ΠΎ ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ (ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅, ΡΠ΅ΡΠ²ΠΈΡΠ΅), ΠΈ ΡΡΠΎ Π·Π½Π°Π½ΠΈΠ΅ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΠ΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ (ΡΠ΅ΠΉΡΠ°Ρ Π΄ΠΆΠ°Π²ΠΈΡΡΡ, ΡΠ°ΡΠΏΠΈΡΡΡ, ΡΠΈΡΠ½ΠΈΠΊΠΈ ΠΌΠ΅Π½Ρ ΠΏΠΎΠΉΠΌΡΡ) ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΈΠΌΠΏΠΎΡΡΠΎΠΌ Π½Π΅ΠΉΠΌΡΠΏΠ΅ΠΉΡΠ°. ΠΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ: Π΅ΡΡΡ Ρ Π²Π°Ρ ΠΊΠ»Π°ΡΡ Π Ρ Π½Π΅ΠΉΠΌΡΠΏΠ΅ΠΉΡΠΎΠΌ Default.Classes ΠΈ ΠΊΠ»Π°ΡΡ B Another.Classes. Π’Π°ΠΊ Π²ΠΎΡ, Π΅ΡΠ»ΠΈ Π² ΡΠΎΡΡ ΠΊΠΎΠ΄Π΅ ΠΊΠ»Π°ΡΡΠ° Π Π±ΡΠ΄Π΅Ρ ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ using Another.Classes; β ΡΠΎ ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ Π Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠ»Π°ΡΡΠ° B.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΠΏΠΎ ΡΡ
Π΅ΠΌΠ΅, Π³Π΄Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΊΠ»Π°ΡΡ, Π° Π³Π΄Π΅ Π½Π΅Ρ β ΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠ΅Π»ΠΊΠΈ: Π² 1) ΡΡΡΠ΅Π»ΠΊΠ° Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΎΡ ΠΊΠ»Π°ΡΡΠ° Π Π² Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° B. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ B Π±ΠΎΠ»Π΅Π΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ, ΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡ Π. Π ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠ»Π°ΡΡΠ΅ Π, Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ βΡΡΠ΅ΡΠ±Π°β ΠΊΠ»Π°ΡΡΡ B Π½Π΅ Π½Π°Π½Π΅ΡΡΡ
SOLID
ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ»Π° Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΠΊ ΠΏΡΠΎΡΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ β ΡΡΠΎ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ SΠLID ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΠΈΠ· ΠΏΠ΅ΡΠ²ΠΎΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΄ΡΠ΄Ρ Π ΠΎΠ± ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π» ΡΡΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π΅ΠΌΡ ΠΌΡ ΡΠ»ΡΡΠΈΠΌ ΡΡΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ β SOLID.
ΠΠ»Ρ ΡΠ΅Ρ
, ΠΊΡΠΎ Π½Π΅ Π² ΠΊΡΡΡΠ΅ β ΡΡΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ Π³ΠΎΠ²ΠΎΡΡΡ ΠΈ ΡΠΎΠ²Π΅ΡΡΡΡ Π΄ΠΈΠ·Π°ΠΉΠ½ΠΈΡΡ ΡΠ²ΠΎΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ 5 ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ:
S β SRP (Single responsibility principle)
O β OCP (Open-closed principle)
L β LSP (Liskov substitution principle)
I β ISP (Interface segregation principle)
D β DIP (Dependency Inversion principle)
ΠΡΠ΅ ΡΡΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Ρ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π»Π΅Π΅ΡΠΎΠ² (ΡΠ΅ΡΠ²ΠΈΡΠΎΠ²).
ΠΡΠ»ΠΈ Π²Ρ ΡΡΠΈΡΠ°Π΅ΡΠ΅ ΡΡΠΎ Single responsibility principle β ΡΡΠΎ ΠΏΡΠΎ ΡΠΎ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ, ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Π»Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ-ΡΠΎ ΠΎΠ΄Π½ΠΎ β ΡΠΎ Π²Π°ΠΌ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Ρ ΠΎΡΡ Π±Ρ Π³Π»Π°Π²Ρ ΠΏΡΠΎ Π‘ΠΎΠ»ΠΈΠ΄. ΠΠ±ΠΎ ΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΡΡΠΎ Π΄Π°Π½ΠΎ Π²ΡΡΠ΅ β ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅, Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°
Π Dependency Inversion
ΠΡΠΎΠ±ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ ΠΎΡΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π½Π° ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ Dependency Inversion Principle (ΡΠΎΡ, ΡΡΠΎ D ΠΈΠ· SOLIDβa). ΠΠΎ Ρ ΠΎΠ΄Ρ ΠΏΡΠΎΡΡΠ΅Π½ΠΈΡ ΠΊΠ½ΠΈΠ³ΠΈ, Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π», ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ, ΡΡΠΎ Π΅ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΌΠ΅Π½ΡΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π°ΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΈ Π΄Π΅Π»Π°ΡΡ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΡ (DOMAIN) Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΉ ΠΎΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Data access layerβΠ° (DALβa)
Π₯ΠΎΡΡ ΡΠ°ΠΌ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π½Π° ΡΡΠ΄Ρ Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ Π² Π‘ΠΠΠΠ Π·Π½Π°ΡΠΈΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ ΡΠΎ, ΡΡΠΎ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ, ΡΠ°ΠΌ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π° ΠΏΡΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ Π²ΡΠ΅ΠΉ ΠΊΠ½ΠΈΠ³ΠΈ, ΠΈ ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΌΠ΅Π½ΡΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π°ΡΠΈΡ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΡΡΠ°ΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ DDD
Π ΠΏΡΠΈΠ½ΡΡΠΈΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ
ΠΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ Π² ΠΊΠ½ΠΈΠ³Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΎ ΠΏΡΠΈΠ½ΡΡΠΈΠΈ Π²Π°ΠΆΠ½ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ: ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΡΡ ΠΠ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΊΠ°ΠΊΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ ΠΈ Ρ.Π΄
Π’Π°ΠΊ Π²ΠΎΡ, Π°Π²ΡΠΎΡ ΡΡΠΈΡΠ°Π΅Ρ: Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΠΠ ΠΠΠΠΠ ΠΠΠΠ¬Π¨Π ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΡΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠ±ΠΎ requirements ΠΌΠΎΠ³ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΠΎ perfomanceβΡ ΡΠΎΠΆΠ΅, ΡΠ°ΠΌΠ° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΡΠ΅ΡΠΊΠ°Ρ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ°Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅Π½Π΄Π΅Π½ΡΠΈΡ ΠΌΠ΅Π½ΡΡΡΡΡ. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠ°ΠΊΠ΅-ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΌΠ΅Π½Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ Π½Π΅ΠΆΠ΅Π»ΠΈ Π΄ΡΡΠ³ΠΎΠ΅, ΠΌΠ΅Π½Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΌ Π½Π΅ΠΆΠ΅Π»ΠΈ Π΄ΡΡΠ³ΠΎΠ΅. Π ΡΠΈΠ»Π° ΡΠ²ΠΎΠ΅ΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΡΡΡΡΠΎ ΠΈ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎ ΡΡ ΡΠΌΠΎΠΆΠ΅ΡΡ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΎΠ΄Π½Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π½Π° Π΄ΡΡΠ³ΡΡ (ΠΎΠ± ΡΡΠΎΠΌ ΠΊΡΡΠ°ΡΠΈ ΡΠ²Π΅ΡΠ΄ΠΈΡ OCP).
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ, Π²Ρ ΡΠ΅ΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΌΠ΅ΡΡΠΎ Postgresql MongoDb, ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ ΡΠ°ΠΉΠ»ΠΈΠΊΠΈ, ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ mockβΠ½ΡΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ. Π ΠΏΡΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ β ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΠΏΠΎΡΡΠΈ Π²ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ.
Π§ΡΠΎΠ±Ρ ΡΠ°ΠΊΠΈΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΎ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡΠΎΠ΄Π²ΠΈΠ³Π°ΡΡ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ½ΡΡΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΡΠΈΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ² β Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ.
ΠΡΡΡΠ»ΠΊΠΈ Π½Π° DDD
DDD β Domain Driven Design β ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ, ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠ° (PMs, Sale managers etc), Ρ ΡΡΠ΄ΠΎΠ²ΡΠΌΠΈ Π³ΡΠ΅Π±ΡΠ°ΠΌΠΈ. Π’ΠΎ Π΅ΡΡΡ, ΡΡΠΎ Π±Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ΅ ΡΠ»Π΅Π½Π°ΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π±ΡΠ» ubiquitous language, ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΎΠ³ ΠΏΠΎΠ½ΡΡΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ, ΠΈ ΡΡΠΎΠ±Ρ Π²ΡΠ΅ ΠΌΡΡΠ»ΠΈΠ»ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ domainβΠ΅ Ρ ΠΎΠ΄Π½ΠΈΠΌΠΈ ΠΈ ΡΠ΅ΠΌΠ΅ ΠΆΠ΅ Π±ΠΈΠ·Π½Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ.
ΠΡΠ»ΠΈ Π²Ρ β ΠΏΡΠΈΠ²Π΅ΡΠΆΠ΅Π½Π΅Ρ DDD, ΠΈΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ Π±ΡΡΡ ΡΠ°ΠΊΠΎΠ²ΡΠΌ, ΠΈΠ»ΠΈ Π²Ρ ΡΡΠΎ-ΡΠΎ Π² ΡΡΠΎΠΌ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, Π½ΠΎ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ β ΠΊΠ½ΠΈΠ³Π° ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π° ΠΊ ΠΏΡΠΎΡΡΠ΅Π½ΠΈΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π²ΡΠΎΡΠ°Ρ ΡΠ°ΡΡΡ ΠΊΠ½ΠΈΠ³ΠΈ.
ΠΠ΄Π΅ΡΡ Π°Π²ΡΠΎΡ ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ ΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ Dependency Rule, ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ, ΡΠ»Π΅Π΄ΡΡ Π΅ΠΌΡ β Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΡΡΡΠΎΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΡΠ΅ΠΌΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π² Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΊ High Policy ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ Π΄ΠΎΠΌΠ΅Π½ (High Policy ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ) Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌ ΠΎΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠΏΡΠΎΡΡΠΈΡ Π²Π°ΠΌ Π΄Π΅ΠΏΠ»ΠΎΠΉΠΌΠ΅Π½Ρ ΠΈ Π΄Π΅Π²Π΅Π»ΠΎΠΏΠΈΠ½Π³
ΠΠ±ΡΡΡΠ°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠ΄Ρ Π ΠΎΠ±, ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π΄Π΅ΡΠ°Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π½Π°Π²ΡΠ΅Π΄ΠΈΡΡ Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΈ Π½Π΅ Π΄Π°ΡΡ ΡΠ²ΠΎΠ»ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π±Π΅Π· Π±ΠΎΠ»ΠΈ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ.
ΠΠΎΠΌΠ½ΠΈΡΠ΅!
ΠΠ β ΡΡΠΎ Π΄Π΅ΡΠ°Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ
ΠΠ»ΠΈΠ΅Π½ΡΡ (Web, Mobile, etc) β Π΄Π΅ΡΠ°Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ β ΡΡΠΎ Π΄Π΅ΡΠ°Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ
ΠΡ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π°Π±ΡΡΡΠ°Π³ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΠ΅ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²ΡΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ Dependency Inversion Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌΠΈ ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡΠΌΠΈ, Dependency Rule ΠΈ ΠΏΡΠΎΡΠΈΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ
ΠΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ
ΠΡΠΎΡ ΡΠ°Π·Π΄Π΅Π» ΠΌΠ½Π΅ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΡΡ ΠΎΡΠΎΠ±ΠΎ ΡΠΈΠ»ΡΠ½ΠΎ, ΠΊΠ°ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π½Π° ASP .NET COREβΠ΅. ΠΠ±ΠΎ Π·Π΄Π΅ΡΡ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π΅Π΄ΠΈΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΈΠ· Π³ΠΎΡΠΎΠ²ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ².
Π ΠΎΠ±Π΅ΡΡ ΠΎΠΏΠΈΡΠ°Π» 4 Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΡ Π΅ΠΌΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ»ΠΎΠ΅Π².
ΠΠ½ Π΄Π°Π» ΠΏΠΎΠ½ΡΡΡ ΠΏΠΎΡΠ΅ΠΌΡ ΡΠ°ΠΊ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ 3-Ρ ΡΠ»ΠΎΠ΅Π²ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ: UI (controllers), Services (Domain), DAL (Database) β Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠ»ΠΎΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ. Π― Π²ΠΈΠ΄Π΅Π» Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², Π½ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΈΠΊΡΠΎ-ΡΠ΅ΡΠ²ΠΈΡΠ΅, Π½Π° Π±ΡΠΊ-ΡΠ½Π΄Π΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠ΅Ρ -ΡΠ»ΠΎΠ΅Π²Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°.
Π’Π°ΠΊ ΠΆΠ΅, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ°ΡΡΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΎΠ΄ΠΈΠ½-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ-ΠΎΠ΄ΠΈΠ½-ΡΠ΅ΡΠ²ΠΈΡ. Π ΡΠ΅Π»ΠΎΠΌ ΠΎΠ½ΠΈ ΠΎΠ±Π΅ Π½Π΅ΠΏΠ»ΠΎΡ ΠΈΠ΅, Π½ΠΎ ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΈΠ½ΡΡΠΎΠ², Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΊΠ°ΠΊ ΡΡΡΠΎΠΈΡΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ DDD, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΈ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ².
Π ΠΎΠ±ΡΠ΅ΠΌ, Π²ΠΎΡ ΠΈ ΠΏΠΎΠ΄ΠΎΡΠ΅Π» ΠΊ ΠΊΠΎΠ½ΡΡ ΡΡΠΎΡ ΠΎΠ±Π·ΠΎΡ Π½Π° ΠΊΠ½ΠΈΠ³Ρ. Π‘Π°ΠΌΠ° ΠΊΠ½ΠΈΠ³Π° ΠΌΠ½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»Π°ΡΡ, Π½Π΅ ΠΆΠ°Π»Π΅Ρ ΠΎ ΠΏΡΠΎΡΠΈΡΠ°Π½Π½ΠΎΠΌ, ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π°Π²ΡΠΎΡΡ. ΠΠ°ΠΌ, Π΄ΠΎΡΠΎΠ³ΠΈΠ΅ ΡΠΈΡΠ°ΡΠ΅Π»ΠΈ, ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π½Π΅ ΡΡΠ΄ΠΈΡΠ΅ ΡΡΡΠΎΠ³ΠΎ β ΡΡΠ° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½Π°Ρ Π½Π° Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΠΈ ΠΎΡ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ ΠΌΠΎΠ΅ΠΌ Π»ΠΈΡΠ½ΠΎΠΌ ΡΠ½ΡΡΠ·ΠΈΠ°Π·ΠΌΠ΅
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com