solid php ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅
ΠΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² SOLID
Disclaimer: ΠΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ, Π½Ρ Π° Ρ ΡΠ΅ΠΌ Ρ ΡΠΆΠ΅?!
SOLID β ΡΡΠΎ Π½Π°Π±ΠΎΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΠΏΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ½ΠΈ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΡΡΡ Π½Π΅ΠΊΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠ²ΠΎΠΈ ΠΈ ΡΡΠΆΠΈΠ΅ Π½Π΅ΡΠ²Ρ ΠΈ Π²ΡΠ΅ΠΌΡ. Π ΠΌΠΎΠ³ΡΡ ΠΈ Π½Π΅ ΠΏΠΎΠΌΠΎΡΡ.
ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΡΡΠΈΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°Ρ Π½Π° ΠΏΠ°Π»ΡΡΠ°Ρ , Π±Π΅Π· ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΊΠΎΠ΄Π° ΠΈ Π‘ΠΠ‘.
S β ΠΡΠΈΠ½ΡΠΈΠΏ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ (Single Responsibility Principle ΠΈΠ»ΠΈ SRP)
ΠΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΠ΄Π½Π° ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π° ΠΏΡΠΈΡΠΈΠ½Π° Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ° (Β«A class should have only one reason to change.Β» Robert C. Martin.)
ΠΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΡΠΎ Ρ Π²Π°Ρ Π½Π° ΠΊΠΎΠΌΠΏΠ΅ Π»Π΅ΠΆΠΈΡ ΠΏΡΡΠΎΠΊ Π»ΡΠ±ΠΈΠΌΡΡ ΠΏΠ΅ΡΠ΅Π½, ΠΏΠ°ΡΠ° ΡΠΈΠ»ΡΠΌΠΎΠ² ΠΈ ΡΠΎΡΠΊΠΈ ΠΊΠΎΡΠΈΠΊΠΎΠ². ΠΡ Π²Π°Π»ΠΈΡΠ΅ Π²ΡΠ΅ ΡΡΠΎ Π² Β«ΠΠΎΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡΒ» ΠΈ, Π² ΡΠ΅Π»ΠΎΠΌ, ΡΠ°Π΄ΡΠ΅ΡΠ΅ΡΡ ΠΆΠΈΠ·Π½ΠΈ.
ΠΠΎΡΠΎΠΌ Π²Ρ ΠΊΠ°ΡΠ°Π΅ΡΠ΅ Π΅ΡΠ΅ ΡΠΈΠ»ΡΠΌΠΎΠ², Π½ΠΎΠ²ΡΠΉ Π°Π»ΡΠ±ΠΎΠΌ Π»ΡΠ±ΠΈΠΌΠΎΠΉ Π³ΡΡΠΏΠΏΡ ΠΈ Π΄Π΅ΡΡΡΠΎΠΊ Π½ΠΎΠ²ΡΡ ΠΊΠΎΡΠΈΠΊΠΎΠ². Π Β«ΠΠΎΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°Ρ Β» ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΊΠ°ΠΊ-ΡΠΎ Π½Π΅ ΠΊΠΎΠΌΡΠΎΡΡΠ½ΠΎ ΠΈ Π²Ρ ΡΠ°ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΠ΅ Π²ΡΠ΅ ΠΏΠΎ ΠΏΠ°ΠΏΠΎΡΠΊΠ°ΠΌ.
ΠΠΎΡΠΎΠΌ Π²Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΠΊΠΎΡΠΎΡΡΠ½ΠΎΠΉ Π±Π΅Π·Π»ΠΈΠΌΠΈΡ, ΡΡΡΠ²Π°Π΅ΡΠ΅ΡΡ Ρ ΠΊΠ°ΡΡΡΠ΅ΠΊ ΠΈ ΠΊΠ°ΡΠ°Π΅ΡΠ΅ Π²ΡΠ΅ ΡΠ΅ΡΠΈΠΈ Π‘ΠΈΠΌΠΏΡΠΎΠ½ΠΎΠ², ΠΏΠΎΠ»Π½ΡΠ΅ Π΄ΠΈΡΠΊΠΎΠ³ΡΠ°ΡΠΈΠΈ Π»ΡΠ±ΠΈΠΌΡΡ Π³ΡΡΠΏΠΏ, Π° ΠΊ ΡΠΎΡΠΊΠ°ΠΌ ΠΊΠΎΡΠΈΠΊΠΎΠ² Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΡΠΎΡΠΊΠΈ ΠΈΠ· ΠΏΠΎΠ΅Π·Π΄ΠΊΠΈ Π½Π° ΡΡΠ±Π°Π»ΠΊΡ Ρ Π΄ΡΡΠ·ΡΡΠΌΠΈ. ΠΠ°ΠΏΠΎΡΠΊΠΈ Π½Π°ΡΠΈΠ½Π°ΡΡ Π²Π΅ΡΠ²ΠΈΡΡΡΡ.
Π ΡΡΠΎ ΠΌΡ ΡΡΡ ΠΈΠΌΠ΅Π΅ΠΌ?
ΠΠ°ΠΊΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄Ρ?
O β ΠΡΠΈΠ½ΡΠΈΠΏ ΠΎΡΠΊΡΡΡΠΎΡΡΠΈ/Π·Π°ΠΊΡΡΡΠΎΡΡΠΈ (Open-closed Principle ΠΈΠ»ΠΈ OCP)
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΡΡΡΠ½ΠΎΡΡΠΈ (ΠΊΠ»Π°ΡΡΡ, ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Ρ.ΠΏ.) Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΡΠΊΡΡΡΡ Π΄Π»Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, Π½ΠΎ Π·Π°ΠΊΡΡΡΡ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ (Β«Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.Β» Bertrand Meyer)
ΠΠ΅ΡΠ½Π΅ΠΌΡΡ ΠΊ ΡΠΎΠΌΡ ΡΠ°Π³Ρ Π½Π°ΡΠ΅ΠΉ ΠΈΡΡΠΎΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ»ΠΈ ΡΠΊΠΎΡΠΎΡΡΠ½ΠΎΠΉ Π±Π΅Π·Π»ΠΈΠΌΠΈΡ. ΠΠΎΠΏΡΡΡΠΈΠΌ, ΡΡΠΎ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π²Ρ Π½Π°ΠΊΠ°ΡΠ°Π»ΠΈ Π²ΡΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠΈΠ»ΡΠΌΠΎΠΌ ΠΏΡΠΎ ΡΠ°Π½ΡΠ΅Ρ Π½ΠΈΠΊΠΎΠ² ΠΊΠΈΠ½ΠΎΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Private ΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π²ΡΠ΅ Π±ΡΠ»ΠΈ ΠΏΡΠΎ ΡΠ°Π½ΡΠ΅Ρ Π½ΠΈΠΊΠΎΠ², ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΏΠ°ΠΏΠΊΡ «/ΠΠΈΠ΄Π΅ΠΎ/ΠΡΠΎ ΡΠ°Π½ΡΠ΅Ρ Π½ΠΈΠΊΠΎΠ²/».
Π§Π΅ΡΠ΅Π· Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π²Ρ ΡΠΊΠ°ΡΠ°Π»ΠΈ Π΅ΡΠ΅ ΡΠΈΠ»ΡΠΌΠΎΠ² ΡΡΠΎΠΉ ΡΡΡΠ΄ΠΈΠΈ, Π½ΠΎ ΡΠΆΠ΅ ΠΏΡΠΎ Π΄ΠΎΡΡΠ°Π²ΠΊΡ ΠΏΠΈΡΡΡ. ΠΠ°Π»ΠΎ ΡΠΎΠ³ΠΎ, Π²Π°ΡΠ° Π½ΠΎΠ²Π°Ρ Π΄Π΅Π²ΡΡΠΊΠ° Π½Π°ΠΏΠΈΡΠ°Π»Π° Π²Π°ΠΌ Π‘ΠΠ‘ Β«Π― ΡΠΊΠ°ΡΠ°Π»Π° ΡΠΈΠ»ΡΠΌ βΠΡΠΎΠ½Ρβ ΠΈ ΡΠΎΡ
ΡΠ°Π½ΠΈΠ»Π° Π΅Π³ΠΎ Π² ΠΏΠ°ΠΏΠΊΡ /ΠΠΈΠ΄Π΅ΠΎ/ΠΡΠΎ ΡΠ°Π½ΡΠ΅Ρ
Π½ΠΈΠΊΠΎΠ²/, ΠΎΠΊ?Β». Π Π²ΡΠΎΠ΄Π΅ Π±Ρ Π²ΡΠ΅ Π²Π΅ΡΠ½ΠΎ β ΠΏΡΠΎ ΡΠ°Π½ΡΠ΅Ρ
Π½ΠΈΠΊΠ°, Π½ΠΎ Π΅ΡΡΡ Π½ΡΠ°Π½Ρ.
Π ΡΡΡ Π²Π°ΠΌ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΏΠ°ΠΏΠΎΠΊ(ΠΊΠ»Π°ΡΡΠΎΠ²), Π° ΡΡΠΎ ΡΠ²Π½ΠΎΠ΅ Π½Π°ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° OCP.
ΠΠ°ΠΊ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π°Π΄ΠΎ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ? ΠΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ β ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ Π½ΠΎΠ²ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π½Π΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π’.Π΅. Π½Π΅ Ρ Π°ΡΠ΄ΠΊΠΎΠ΄ΠΈΡΡ ΠΏΠ°ΠΏΠΊΡ «../ΠΡΠΎ ΡΠ°Π½ΡΠ΅Ρ Π½ΠΈΠΊΠΎΠ²/», Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΎ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎ Π½ΠΈΡ ΠΈ Π±ΡΠ΄Π΅Ρ, Π° ΠΏΠΎΠ²ΡΡΠΈΡΡ ΡΡΠΎΠ²Π΅Π½Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π΄ΠΎ «../Π‘ΡΡΠ΄ΠΈΡ Private/» ΠΈ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ ΡΠΊΠ°ΡΠΌΠ»ΠΈΠ²Π°ΡΡ Π΅ΠΉ ΠΈ ΡΠ°Π½ΡΠ΅Ρ Π½ΠΈΠΊΠΎΠ², ΠΈ ΡΠ°Π·Π½ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΠΈΡΡΡ, ΠΈ ΠΏΡΠΎΡΠ°Ρ-ΠΏΡΠΎΡΠ°Ρβ¦
Π Π΄Π»Ρ ΠΡΠΎΠ½ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ «../ΠΠΎΡΡΠΈΠ»ΡΠΌ/», ΡΠ°ΡΡΠΈΡΠΈΠ² ΠΊΠ»Π°ΡΡ «/ΠΠΈΠ΄Π΅ΠΎ/»
L β ΠΡΠΈΠ½ΡΠΈΠΏ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΠ°ΡΠ±Π°ΡΡ ΠΠΈΡΠΊΠΎΠ² (Liskov Substitution Principle ΠΈΠ»ΠΈ LSP)
ΠΠ±ΡΠ΅ΠΊΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ Π½Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΈΡ ΠΏΠΎΠ΄ΡΠΈΠΏΠΎΠ² Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΡ ΡΡΡ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ.
ΠΠ»Ρ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΠΌΡΡ ΠΊ ΠΌΠΈΠ»ΠΎΡΠ΅ ΠΈ Π½ΡΡΠ½ΠΎΡΡΠΈ, Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ «/Π€ΠΎΡΠΎ/ΠΠΎΡΠΈΠΊΠΈ/».
ΠΠΎΡΠΈΠΊΠΎΠ² ΠΌΡ Π»ΡΠ±ΠΈΠΌ ΠΈ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΉ ΡΠΎΠ±ΡΠ°Π½ΠΎ Ρ Π½Π°Ρ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ.
ΠΡΠ²Π°Π΅Ρ Π΄Π°ΠΆΠ΅ ΠΏΡΡΠΌΠΎ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠ»Π°ΠΉΠ΄ΡΠΎΡ ΠΏΠΎ Π²ΡΠ΅ΠΉ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ ΠΈ Π»ΡΠ±ΡΠ΅ΠΌΡΡ. Π Π²ΠΎΡ, Π² ΠΎΠ΄ΠΈΠ½ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠΆΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΡΡΠΈΠ³Π»ΠΈ Π½ΠΈΡΠ²Π°Π½Ρ, Π½Π° ΡΠΊΡΠ°Π½ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ:
ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΡΠ°ΠΉΠ» «/Π€ΠΎΡΠΎ/ΠΠΎΡΠΈΠΊΠΈ/ΠΠ½ΠΈΠ³ΠΈ/ΠΠΎΡ Π² ΡΠ°ΠΏΠΎΠ³Π°Ρ .fb2»
ΠΠ°ΠΊ ΠΏΠΎΡΠΎΠΌ Π²ΡΡΡΠ½ΠΈΠ»ΠΎΡΡ, Π²Π°ΡΠ° ΠΏΠΎΠ΄ΡΡΠ³Π° ΡΠ΅ΡΠΈΠ»Π° ΠΏΠΎΠ΄Π½ΡΡΡ Π³ΡΠ°Π΄ΡΡ ΠΌΠΈΠ»ΠΎΡΡ ΠΈ ΠΎΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π»Π° Β«ΠΠΎΡΠΈΠΊΠΈΒ» Π½ΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠΎΠΉ Β«ΠΠ½ΠΈΠ³ΠΈΒ», Π³ΡΡΠ±ΠΎ Π½Π°ΡΡΡΠΈΠ² LSP, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ Β«ΠΠ½ΠΈΠ³ΠΈΒ» Π½Ρ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΌΠ΅ΡΡΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Β«Π€ΠΎΡΠΎΒ».
I β ΠΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° (Interface Segregation Principle ΠΈΠ»ΠΈ ISP)
ΠΠ»ΠΈΠ΅Π½ΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ.
ΠΠΎΡ ΡΡΡ Ρ ΠΏΠ°ΠΏΠΎΡΠΊΠ°ΠΌΠΈ ΠΈ ΡΠ°ΠΉΠ»ΠΈΠΊΠ°ΠΌΠΈ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ, Π½ΠΎ Ρ ΠΏΠΎΠΏΡΠΎΠ±ΡΡ β Π½Π΅ ΡΡΠ΄ΠΈΡΠ΅ ΡΡΡΠΎΠ³ΠΎ Π·Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π½Π°ΡΡΠ½ΡΡΠΎΡΡΡ.
ΠΠ°ΠΌ Π½Π°Π΄ΠΎΠ΅Π» ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°ΡΠ΅Π»Ρ ΠΌΡΠ·ΡΠΊΠΈ ΠΈ Π²Ρ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΠΊΠ°ΡΠ°ΡΡ Π½ΠΎΠ²ΡΠΉ, ΡΡΠΏΠ΅ΡΠΌΠΎΠ΄Π½ΡΠΉ ΠΈ Ρ Π°ΠΉΠΏΠΎΠ²ΡΠΉ. ΠΠ½ Π΄Π°ΠΆΠ΅ ΡΠΌΠ΅Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΎΠ±Π»ΠΎΠΆΠΊΡ ΠΌΡΠ·ΡΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π°Π»ΡΠ±ΠΎΠΌΠ° ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΡΡΠ±ΡΠΈΡΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ΅ΡΠ½ΠΈ. ΠΠΎ Π²ΠΎΡ Π±Π΅Π΄Π°, Π΅ΡΠ»ΠΈ Π² ΠΏΠ°ΠΏΠΊΠ΅ Π°Π»ΡΠ±ΠΎΠΌΠ° ΠΎΡΡΡΡΡΡΠ²ΡΡΡ ΡΠ°ΠΉΠ»Ρ Β«cover.jpgΒ» ΠΈ Β«subtitles.txtΒ», ΡΠΎ ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°ΡΠ΅Π»Ρ ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ. Π Π²ΠΎΡ Π²Ρ, ΠΏΡΠΎΠΊΠ»ΠΈΠ½Π°Ρ Π²ΡΠ΅ Π½Π° ΡΠ²Π΅ΡΠ΅, Π½Π°ΡΠΈΠ½Π°Π΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²ΠΎ Π²ΡΠ΅Ρ ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠ°Ρ Ρ Π°Π»ΡΠ±ΠΎΠΌΠ°ΠΌΠΈ ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ Π·Π°Π³Π»ΡΡΠΊΠΈ.
Π’.Π΅., ΠΏΡΠΎΠ²ΠΎΠ΄Ρ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ, ΠΌΡ ΠΎΠ±ΡΠ·Π°Π»ΠΈ ΠΊΠ»Π°ΡΡ Β«ΠΡΠ·ΡΠΊΠ°Β» ΠΈ Π²ΡΠ΅Ρ Π΅Π³ΠΎ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Β«AudioCoverSubtitlesΒ». ΠΡΠΈ ΡΡΠΎΠΌ, ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π°Π»ΡΠ±ΠΎΠΌ Β«Waiting for the SunΒ», Π°Π»ΡΠ±ΠΎΠΌ Β«The best of The DoorsΒ» ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΡΡ Β«Audio+CoverΒ», Π° Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Β«AudioΒ».
ΠΡΠΎ ΠΏΠΎΠ΄Π²ΠΎΠ΄ΠΈΡ Π½Π°Ρ ΠΊ ΠΌΡΡΠ»ΠΈ, ΡΡΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΡΠΎΠ»ΡΡΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Β«AudioCoverSubtitlesΒ» Π½Π° ΡΡΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ Β«AudioΒ», Β«CoverΒ» ΠΈ Β«SubtitlesΒ» ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΌ, Π³Π΄Π΅ ΠΎΠ½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½Ρ.
D β ΠΡΠΈΠ½ΡΠΈΠΏ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (dependency inversion principle ΠΈΠ»ΠΈ DIP)
ΠΠΎΠ΄ΡΠ»ΠΈ Π²Π΅ΡΡ Π½ΠΈΡ ΡΡΠΎΠ²Π½Π΅ΠΉ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π½ΠΈΠΆΠ½ΠΈΡ ΡΡΠΎΠ²Π½Π΅ΠΉ. ΠΠ±Π° ΡΠΈΠΏΠ° ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ.
ΠΠ±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ. ΠΠ΅ΡΠ°Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ.
ΠΠΎΠ΄ΡΠ»Ρ Β«The DoorsΒ», Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡΠ»Ρ Β«Waiting for the SunΒ» (ΠΈ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅), Π·Π°Π²ΠΈΡΡΡ ΠΎΡ Π²Π΅ΡΡ Π½Π΅ΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Β«ΠΡΠ·ΡΠΊΠ°Β», ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ (ΡΠΎ, ΡΡΠΎ Π²Π½ΡΡΡΠΈ Ρ Π½ΠΈΡ ΠΌΡΠ·ΡΠΊΠ°).
ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΌΡΠ·ΡΠΊΠΈ ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠΆΠ°ΡΠΈΡ β Β«Ρ ΠΏΠΎΡΠ΅ΡΡΠΌΠΈΒ» ΠΈ Β«Π±Π΅Π· ΠΏΠΎΡΠ΅ΡΡΒ». ΠΡΠΎ Π΄Π΅ΡΠ°Π»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Β«ΠΡΠ·ΡΠΊΠ°Β» β Π² Π½ΠΈΡ , Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅, Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ°ΠΊΠΈ Π±ΡΡΡ ΠΌΡΠ·ΡΠΊΠ°. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ°ΠΌΠ° Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ Β«ΠΡΠ·ΡΠΊΠ°Β» Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΡΠΈΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ. ΠΠΉ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ, Ρ ΠΏΠΎΡΠ΅ΡΡΠΌΠΈ ΡΠ°ΠΌ ΠΌΡΠ·ΡΠΊΠ° ΠΈΠ»ΠΈ Π±Π΅Π· Π½ΠΈΡ β ΠΎΠ½Π° ΠΊΠ°ΠΊ Π±ΡΠ»Π° ΠΌΡΠ·ΡΠΊΠΎΠΉ, ΡΠ°ΠΊ Π΅ΠΉ ΠΈ ΠΎΡΡΠ°Π΅ΡΡΡ.
ΠΡΠΈΠ½ΡΠΈΠΏΡ SOLID ΡΠΎΡΡΠΎΡΡ ΠΈΠ· 5 ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΠΈΠ΄Π΅ΠΉ ΠΏΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠΈΠ½ΡΠΈΠΏ SOLID, ΡΠ°ΠΌΠ° Π΅Π³ΠΎ ΠΈΠ΄Π΅Ρ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π² 2000 Π³ΠΎΠ΄Ρ Π ΠΎΠ±Π΅ΡΡΠΎΠΌ ΠΠ°ΡΡΠΈΠ½ΠΎΠΌ (ΠΎΠ΄Π½Π°ΠΊΠΎ, ΡΠ°ΠΌΠΎ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΡΠΎΠΌΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ Π±ΡΠ»ΠΈ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΏΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ). ΠΡΠΈΠ½ΡΠΈΠΏΡ, ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅, ΠΊΠ°ΠΊ SOLID Π±ΡΠ»ΠΈ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΡΠΎΡΠΈ, ΡΡΠΎ ΡΠΏΡΡΡΡ Π»ΠΈΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ½ΠΈ Π·Π°Ρ Π²Π°ΡΠΈΠ»ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ².
Π’Π°ΠΊ ΠΆΠ΅, ΡΠΎΠ²ΡΡΡΡ, ΠΏΠΎΡΠ»Π΅ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ (ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ), ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°ΠΌΠΈ SOLID Π² ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ°Ρ .
ΠΡΠΈΠ½ΡΠΈΠΏ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ
ΠΡΠΎΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠ²Π»ΡΠ΅ΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΌ, ΠΈ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ . ΠΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΡΠ»Π΅Π΄ΡΡΡ ΡΡΠΎΠΌΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ, Π½Π΅ Π·Π°Π΄ΡΠΌΡΠ²Π°ΡΡΡ ΠΎΠ± ΡΡΠΎΠΌ, ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ Π·Π½Π°Ρ ΠΎ Π΅Π³ΠΎ ΡΡΡΠ΅ΡΡΠΎΠ²Π°Π²Π°Π½ΠΈΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠΉΠΌΡΡΠ΅ ΠΈΠ΄Π΅Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° ΡΠ΅ΠΉΡΠ°Ρ, ΠΈ Π½Π°ΡΠ½Π΅ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ, Π΄Π΅ΡΠΆΠ° Π΅Ρ Π² Π³ΠΎΠ»ΠΎΠ²Π΅, ΡΡΠΎ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΈΠ·Π±Π°Π²ΠΈΡ Π²Π°Ρ ΠΎΡ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π° ΠΊΠΎΠ΄Π° Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ.
ΠΠ»Π°Π²Π½Π°Ρ ΠΈΠ΄Π΅Ρ, ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ Π½ΠΈΡΡΡ ΠΏΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°, ΠΎΠ½Π° ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Ρ Π·Π°Π΄Π°ΡΡ, ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Ρ.
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΎΠ²Π½ΠΎ ΡΡΠΎΠ»ΡΠΊΠΎ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π»ΠΎΠ³ΠΈΠΊΠΈ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. Π ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ»Π°ΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΌΠ°ΡΡΠ΅ΡΠΎΠΌ Π½Π° Π²ΡΠ΅ ΡΡΠΊΠΈ, Π²ΡΠΏΠΎΠ»Π½ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π½ΠΎΠΏΠ»Π°Π½ΠΎΠ²ΡΡ Π·Π°Π΄Π°Ρ. ΠΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π·Π°Π΄Π°ΡΡ. ΠΠ»Π°ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π½ΠΎ Π²ΡΠ΅ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Ρ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ.
ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠ»ΠΎΡ ΠΎ ΡΠΏΡΠ΅ΡΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°:
Π Π² ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ ΡΡΠΎΡ ΠΊΠ»Π°ΡΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ-ΡΠΎ ΡΠ°ΠΊ:
ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ, Π»ΡΠ±ΠΎΠΉ ΠΈΠ· ΠΊΠ»Π°ΡΡΠΎΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡΠΈ
ΠΠΎΡΠΎΠΌΡ, ΡΠ΅ΠΉΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ΅ΠΌ ΡΡΠΎΡ ΠΊΠ»Π°ΡΡ Ρ ΡΡΡΡΠΎΠΌ Π½ΠΎΠ²ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ.
ΠΡΡΠ³ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΎ ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΡΠ° ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡΡ Π±ΡΠ»Π° Π²ΡΠ½Π΅ΡΠ΅Π½Π° Π² ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ, Π³Π΄Π΅ Π΅ΠΌΡ ΠΈ ΠΌΠ΅ΡΡΠΎ.
ΠΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π° ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠΈΡΠ΅, ΠΏΡΠΎΡΠ΅ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ.
ΠΡΠΈΠ½ΡΠΈΠΏ ΠΡΠΊΡΡΡΠΎΡΡΠΈ/ΠΠ°ΠΊΡΡΡΠΎΡΡΠΈ
ΠΡΠΎΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π³Π»Π°ΡΠΈΡ, ΡΡΠΎ ΠΊΠ»Π°ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΡΠΊΡΡΡΡ ΠΊ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΠΈ Π·Π°ΠΊΡΡΡΡ ΠΊ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π²Π°Ρ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ (Π°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈ Π²Ρ, Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ) ΠΌΠΎΠ³Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΠΏΡΠΈ ΡΡΠΎΠΌ, Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠ΄. Π’ΠΎ Π΅ΡΡΡ, Π²Π°ΡΠΈ ΠΊΠ»Π°ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ°ΠΊΠΈΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΎΠ³ Π΄ΠΎΠΏΠΈΡΠ°ΡΡ ΡΡΠΎ-ΡΠΎ ΡΠ²ΠΎΡ, Π½Π΅ ΠΌΠ΅Π½ΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΊΠΎΠ³Π΄Π°-ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°ΡΠΎΡ Twig, ΡΠΎ Π²Ρ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° ΠΏΠΈΡΠ°Π»ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Ρ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π½Π΅Π³ΠΎ (Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΡΠΈΠ»ΡΡΡΡ Π² ΡΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°ΡΠΎΡ). Π ΠΊΠ°ΠΊ ΡΠ°Π·, ΠΈΠ·-Π·Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠΌΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ, Π²Ρ, Π½Π°ΠΏΠΈΡΠ°Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ (ΠΏΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ), Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°ΡΠΎΡΠ°.
ΠΠΎΠ³Π΄Π° ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°, ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΊ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌ.
ΠΠΎΠ΄ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π΅Π½ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ (Π·Π°ΠΊΡΡΡΡ Π΄Π»Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ), Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ, ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡΠ°ΠΌ-ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π±Π΅Π· Π½ΡΠΆΠ΄Ρ Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. Π’ΠΎ Π΅ΡΡΡ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΈΡΠ°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ Π»ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΌΠΎΠ³ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π±Π΅Π· Π½ΡΠΆΠ΄Ρ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ Π² Π½Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΡΠΎ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»ΡΡΠΎΠΌ ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π°, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΡΡΠΎΠΌΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ.
Π, ΡΡΠΎΠ±Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠΊΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌΠΈ ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΡΠΌΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ, ΡΠΎΠ²Π΅ΡΡΡ ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΌΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΡΡ ΡΡΠ°ΡΡΡ Π½Π° ΡΡΡ ΡΠ΅ΠΌΡ.
ΠΡΠΈΠ½ΡΠΈΠΏ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΠ°ΡΠ±Π°ΡΡ ΠΠΈΡΠΊΠΎΠ²
ΠΡΠΈΠ½ΡΠΈΠΏ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΠ°ΡΠ±Π°ΡΡ ΠΠΈΡΠΊΠΎΠ² (ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΠΊΠ°ΠΊ LISP) ΡΡΠΎ Π²Π°ΠΆΠ½Π°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ, ΠΏΡΠΈΠ΄ΡΠΌΠ°Π½Π½Π°Ρ Π΅ΡΡ Π² Π΄Π°Π»ΡΠΊΠΎΠΌ 1987-ΠΌ. Π― ΠΎΠΏΠΈΡΡ ΡΡΠΎΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π½Π° ΠΎΡΠ½ΠΎΠ²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ, ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π°, Π²ΠΌΠ΅ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Ρ ΠΊΠΎΠ΄ΠΎΠΌ (ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π»Π΅Π³ΡΠ΅ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ, Ρ Π±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ «ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ»).
ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΉ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ, ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΈΠΊΡ ΡΠ°Π±ΠΎΡΡ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. Π’ΠΎ Π΅ΡΡΡ, ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌ Π»ΡΠ±ΡΠΌΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ, ΠΏΡΠΈ ΡΡΠΎΠΌ, ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ Π΄Π°ΠΆΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠΎΠΌ, Π΅ΠΌΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ°Π·Π½ΠΈΡΡ.
ΠΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ: Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΠΌΠ΅Π΅ΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ, ΠΈ Π²Ρ ΠΈΠΌΠ΅Π΅ΡΠ΅ 5 ΡΠ°Π·Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π²ΡΠΈΡ ΡΡΠΎΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ. Π Π²Π°Ρ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ ΡΡΠΎΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ, ΠΏΡΠΈ Π΅Π³ΠΎ Π·Π°ΠΌΠ΅Π½Π΅ Π½Π° Π»ΡΠ±ΠΎΠΉ ΠΈΠ· Π΅Π³ΠΎ «Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠ²», ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΊΠ°ΠΊ ΠΈ ΡΠ°Π½Π΅Π΅.
ΠΠ»Ρ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°, ΠΏΡΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Π² ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ°Ρ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Π²Ρ ΠΎΠ΄Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈ Π²ΡΡ ΠΎΠ΄Π½ΡΡ (ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΡΠΈΠΏΡ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠΈΠ³Π½Π°ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²), ΠΊΠ°ΠΊ ΡΡΠΎ Π±ΡΠ»ΠΎ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅.
ΠΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°
ΠΡΠΈΠ½ΡΠΈΠΏ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
ΠΡΠΎ ΠΌΠΎΠΉ ΡΠ°ΠΌΡΠΉ Π»ΡΠ±ΠΈΠΌΡΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ, ΠΊΠΎΡΠΎΡΡ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π±ΠΠ»ΡΡΡΡ ΡΠΈΡΡΠΎΡΡ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π»Π΅Π³ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ.
ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ. ΠΡΠΈ ΡΡΠΎΠΌ, Π·Π°ΠΌΠ΅Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΈΠΊΠ»ΡΡΠ°Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠ»Ρ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Ρ: ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΉΡΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π° Π½Π΅ ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΎ ΡΠ΅ΠΌ Ρ ΠΈ ΠΏΠΈΡΠ°Π», Π² ΡΠ°Π½Π΅Π΅ ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
Π Π΅Π·ΡΠΌΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ Π»Π°ΠΉΡΠΎΠ²ΠΎ, Π½Π΅ ΠΎΡΠΎΠ±ΠΎ Π½Π°Π³ΡΠΎΠΌΠΎΠΆΠ΄Π°Ρ Π²Π°ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΊΡΡΠΊΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π° ΠΎΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ SOLID Π² PHP, ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΡ Π΅Π³ΠΎ ΡΡΡΠΈ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π½Π°ΡΡΠΈΡΡΡΡ ΠΏΠΈΡΠ°ΡΡ ΠΏΠΎ SOLID-Ρ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠ²Π°ΡΡΡΡ ΠΏΠΈΡΠ°ΡΡ Π²ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΈ Π±ΠΎΠ»ΡΡΠ΅, ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π΄Π΅ΡΠΆΠ° Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΡΡΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΈ ΡΡΠ°ΡΠ°ΡΡΡ ΠΈΡ Π²Π½Π΅Π΄ΡΡΡΡ Π² Π½ΡΠΆΠ½ΡΠ΅ ΠΌΠ΅ΡΡΠ°. ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ, ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ ΡΠΌΠ΅Π½ΠΈΠ΅ ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΏΡΠΈΠ΄ΡΡ ΡΠ°ΠΌΠΎ ΡΠΎΠ±ΠΎΠΉ.
Subscribe to ΠΠ»ΠΎΠ³ php ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°: ΡΡΠ°ΡΡΠΈ ΠΏΠΎ PHP, JavaScript, MySql
Get the latest posts delivered right to your inbox
Π¨ΠΏΠ°ΡΠ³Π°Π»ΠΊΠ° ΠΏΠΎ SOLID-ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°ΠΌ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ Π½Π° PHP
Π’Π΅ΠΌΠ° SOLID-ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΠΈ Π² ΡΠ΅Π»ΠΎΠΌ ΡΠΈΡΡΠΎΡΡ ΠΊΠΎΠ΄Π° Π½Π΅ ΡΠ°Π· ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π»Π°ΡΡ Π½Π° Π₯Π°Π±ΡΠ΅ ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΆΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ ΠΈΠ·ΡΠ΅Π·ΠΆΠ΅Π½Π½Π°Ρ. ΠΠΎ ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π½Π΅ ΡΠ°ΠΊ Π΄Π°Π²Π½ΠΎ ΠΌΠ½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΡ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΎΠ΄Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ IT-ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ, Π³Π΄Π΅ ΠΌΠ΅Π½Ρ ΠΏΠΎΠΏΡΠΎΡΠΈΠ»ΠΈ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°Ρ SOLID Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΈ ΡΠΈΡΡΠ°ΡΠΈΡΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π΅ ΡΠΎΠ±Π»ΡΠ» ΡΡΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΈ ΠΊ ΡΠ΅ΠΌΡ ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π»ΠΎ. Π Π² ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ Ρ ΠΏΠΎΠ½ΡΠ», ΡΡΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ ΠΏΠΎΠ΄ΡΠΎΠ·Π½Π°ΡΠ΅Π»ΡΠ½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ ΡΡΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΈ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π½Π°Π·Π²Π°ΡΡ ΠΈΡ Π²ΡΠ΅, Π½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠ΅ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΡΡΠ°Π»ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠΠΎΡΡΠΎΠΌΡ Ρ ΠΈ ΡΠ΅ΡΠΈΠ» Π΄Π»Ρ ΡΠ΅Π±Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΈ Π΄Π»Ρ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° ΠΎΠ±ΠΎΠ±ΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ SOLID-ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°ΠΌ Π΄Π»Ρ Π΅ΡΡ Π»ΡΡΡΠ΅Π³ΠΎ Π΅Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ. Π‘ΡΠ°ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ, Π΄Π»Ρ Π»ΡΠ΄Π΅ΠΉ ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΠΊΠΎΠΌΡΡΠΈΡ ΡΡ Ρ SOLID-ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°ΠΌΠΈ, ΡΠ°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π΄Π»Ρ Π»ΡΠ΄Π΅ΠΉ Β«ΡΡΠ΅Π²ΡΠΈΡ ΡΠΎΠ±Π°ΠΊΡΒ» Π½Π° SOLID-ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°Ρ .
ΠΠ»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°ΠΌΠΈ ΠΈ Ρ ΠΎΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ²Π΅ΠΆΠΈΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΎ Π½ΠΈΡ ΠΈ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΡΡΠ°Π·Ρ ΠΊ ΡΠΏΠ°ΡΠ³Π°Π»ΠΊΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΠ°ΡΡΠΈ.
Π§ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΊΠΎΠ΅ SOLID-ΠΏΡΠΈΠ½ΡΠΈΠΏΡ? ΠΡΠ»ΠΈ Π²Π΅ΡΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Wikipedia, ΡΡΠΎ:
Π°Π±Π±ΡΠ΅Π²ΠΈΠ°ΡΡΡΠ° ΠΏΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΠΊΠ»Π°ΡΡΠΎΠ² Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ β Single responsibility, Open-closed, Liskov substitution, Interface segregation ΠΈ Dependency inversion.
ΠΡΠΈΠ½ΡΠΈΠΏ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ (Single responsibility)
ΠΡΠ°ΠΊ, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΏΡΠΈΠΌΠ΅ΡΠ° Π²ΠΎΠ·ΡΠΌΡΠΌ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΠΈ ΡΠΈΡΠΎΠΊΠΎΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ β ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΌΠ°Π³Π°Π·ΠΈΠ½ Ρ Π·Π°ΠΊΠ°Π·Π°ΠΌΠΈ, ΡΠΎΠ²Π°ΡΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»ΡΠΌΠΈ.
ΠΡΠΈΠ½ΡΠΈΠΏ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ Π³Π»Π°ΡΠΈΡ β Β«ΠΠ° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΠΎΠ·Π»ΠΎΠΆΠ΅Π½Π° ΠΎΠ΄Π½Π° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡΡΒ». Π’.Π΅. Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ β ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ΅ΡΠ°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π·Π°Π΄Π°ΡΡ β Π½ΠΈ Π±ΠΎΠ»ΡΡΠ΅, Π½ΠΈ ΠΌΠ΅Π½ΡΡΠ΅.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°ΠΊΠ°Π·Π° Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅:
ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ, Π΄Π°Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π΄Π»Ρ 3 ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΉ ΡΠΈΠΏΠΎΠ² Π·Π°Π΄Π°Ρ: ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ°ΠΌΠΈΠΌ Π·Π°ΠΊΠ°Π·ΠΎΠΌ( calculateTotalSum, getItems, getItemsCount, addItem, deleteItem ), ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ°Π·Π°( printOrder, showOrder ) ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ
( load, save, update, delete ).
Π ΡΠ΅ΠΌΡ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ?
ΠΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΡΡΠΎ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ Π²Π½Π΅ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠ΅ΡΠ°ΡΠΈ ΠΈΠ»ΠΈ ΡΠ°Π±ΠΎΡΡ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠ°ΠΌ ΠΊΠ»Π°ΡΡ Π·Π°ΠΊΠ°Π·Π°, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π΅Π³ΠΎ Π½Π΅ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ.
Π Π΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΡΠΎΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π½Π° 3 ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΠΊΠ»Π°ΡΡΠ°, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ
Π±ΡΠ΄Π΅Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΡΠ²ΠΎΠ΅ΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ
Π’Π΅ΠΏΠ΅ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»Π°ΡΡ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ 1 ΠΏΡΠΈΡΠΈΠ½Π° Π΄Π»Ρ Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
ΠΡΠΈΠ½ΡΠΈΠΏ ΠΎΡΠΊΡΡΡΠΎΡΡΠΈ/Π·Π°ΠΊΡΡΡΠΎΡΡΠΈ (Open-closed)
ΠΡΠΈΠ½ΡΠΈΠΏ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΠ°ΡΠ±Π°ΡΡ ΠΠΈΡΠΊΠΎΠ² (Liskov substitution)
ΠΠΎΠΆΠ°Π»ΡΠΉ, ΠΏΡΠΈΠ½ΡΠΈΠΏ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ°ΠΌΡΠ΅ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π·Π°ΡΡΡΠ΄Π½Π΅Π½ΠΈΡ Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ.
ΠΡΠΈΠ½ΡΠΈΠΏ Π³Π»Π°ΡΠΈΡ β Β«ΠΠ±ΡΠ΅ΠΊΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ ΠΈΡ
Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°ΠΌΠΈ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡΒ». Π‘Π²ΠΎΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ Ρ Π±Ρ ΡΡΠΎ ΡΠΊΠ°Π·Π°Π» ΡΠ°ΠΊ β ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ° ΠΊΠ»Π°ΡΡΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌ ΠΈ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΌΠ΅ΡΠΎΠ΄.
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π΄Π»Ρ ΡΡΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π² ΡΠ°ΠΌΠΊΠ°Ρ
Π·Π°Π΄Π°ΡΠΈ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° Ρ Π½Π΅ ΡΠΌΠΎΠ³, Π½ΠΎ Π΅ΡΡΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΠ΅ΠΉ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠΈΠ³ΡΡ ΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΠ»ΠΎΡΠ°Π΄ΠΈ. ΠΠΎΠ΄ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π½ΠΈΠΆΠ΅.
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΡΠ²Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π΅ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΎΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ³ΠΎ ΠΆΠ΄ΡΡ.
ΠΠΎ Π² ΡΡΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°? Π Π°Π·Π²Π΅ Β«ΠΊΠ²Π°Π΄ΡΠ°ΡΒ» Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Β«ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠΌΒ»? Π―Π²Π»ΡΠ΅ΡΡΡ, Π½ΠΎ Π² Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΏΠΎΠ½ΡΡΠΈΡΡ
. Π ΠΏΠΎΠ½ΡΡΠΈΡΡ
ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠ²Π°Π΄ΡΠ°Ρ Π½Π΅ Π΅ΡΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Β«ΠΊΠ²Π°Π΄ΡΠ°ΡΒ» Π½Π΅ ΡΠΎΠ³Π»Π°ΡΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Β«ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΒ».
Β«Π§ΡΠΎ Π΅ΡΡ Π·Π° ΠΏΡΠ΅Π΄- ΠΈ ΠΏΠΎΡΡΡΡΠ»ΠΎΠ²ΠΈΡ?Β» β ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΏΡΠΎΡΠΈΡΠ΅ ΠΡ.
ΠΡΠ²Π΅Ρ: ΠΏΡΠ΅Π΄ΡΡΠ»ΠΎΠ²ΠΈΡ β ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΏΠΎΡΡΡΡΠ»ΠΎΠ²ΠΈΡ β ΡΡΠΎ ΡΠΎ, ΡΡΠΎ, Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ.
ΠΠΎΡΡΠΎΠΌΡ, Π»ΡΡΡΠ΅ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΠΠ ΠΈ Π·Π°Π΄Π°ΡΠΈ ΡΠ°ΡΡΡΡΠ° ΠΏΠ»ΠΎΡΠ°Π΄ΠΈ ΡΠΈΠ³ΡΡΡ Π½Π΅ Π΄Π΅Π»Π°ΡΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ Β«ΠΊΠ²Π°Π΄ΡΠ°ΡΒ» Π½Π°ΡΠ»Π΅Π΄ΡΠ΅Ρ Β«ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΒ», Π° ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΡ ΠΊΠ°ΠΊ 2 ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΡΡΠ½ΠΎΡΡΠΈ:
Π₯ΠΎΡΠΎΡΠΈΠΉ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π΅ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° ΠΠΈΡΠΊΠΎΡ ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈΠ½ΡΡΠΎΠ³ΠΎ Π² ΡΠ²ΡΠ·ΠΈ Ρ ΡΡΠΈΠΌ, ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ Π² ΠΊΠ½ΠΈΠ³Π΅ Π ΠΎΠ±Π΅ΡΡΠ° ΠΠ°ΡΡΠΈΠ½Π° Β«ΠΡΡΡΡΠ°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΒ» Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«ΠΡΠΈΠ½ΡΠΈΠΏ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΠΈΡΠΊΠΎΡ. Π Π΅Π°Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅ΡΒ».
ΠΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° (Interface segregation)
ΠΠ°Π½Π½ΡΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π³Π»Π°ΡΠΈΡ, ΡΡΠΎ Β«ΠΠ½ΠΎΠ³ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π»ΡΡΡΠ΅, ΡΠ΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉΒ»
Π‘ΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠ»Π°ΡΡΡ-ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ/ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π½Π°Π»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎ ΡΠ΅Ρ
ΠΌΠ΅ΡΠΎΠ΄Π°Ρ
, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ, ΡΡΠΎ Π²Π΅Π΄ΡΡ ΠΊ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΠ΅ΡΠ½ΡΠΌΡΡ ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ Ρ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠΌ.
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Π½Π°ΡΠΈ ΡΠΎΠ²Π°ΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠΎΠΌΠΎΠΊΠΎΠ΄, ΡΠΊΠΈΠ΄ΠΊΡ, Ρ Π½ΠΈΡ
Π΅ΡΡΡ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΡΠ΅Π½Π°, ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈ Ρ.Π΄. ΠΡΠ»ΠΈ ΡΡΠΎ ΠΎΠ΄Π΅ΠΆΠ΄Π° ΡΠΎ Π΄Π»Ρ Π½Π΅Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΈΠ· ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° ΡΠ΄Π΅Π»Π°Π½Π°, ΡΠ²Π΅Ρ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ.
ΠΠΏΠΈΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ
ΠΠ°Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅ΠΉΡ ΠΏΠ»ΠΎΡ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΎΠ½ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². Π ΡΡΠΎ, Π΅ΡΠ»ΠΈ Π½Π°Ρ ΠΊΠ»Π°ΡΡ ΡΠΎΠ²Π°ΡΠΎΠ² Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΊΠΈΠ΄ΠΎΠΊ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΌΠΎΠΊΠΎΠ΄ΠΎΠ², Π»ΠΈΠ±ΠΎ Π΄Π»Ρ Π½Π΅Π³ΠΎ Π½Π΅Ρ ΡΠΌΡΡΠ»Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°Π½ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΊΠ½ΠΈΠ³). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² Π½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄Ρ, Π»ΡΡΡΠ΅ ΡΠ°Π·Π±ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅Π»ΠΊΠΈΡ ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ Π½ΡΠΆΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ.
ΠΡΠΈΠ½ΡΠΈΠΏ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (Dependency Invertion)
ΠΡΠΈΠ½ΡΠΈΠΏ Π³Π»Π°ΡΠΈΡ β Β«ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π²Π½ΡΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΡΠΎΡΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ. ΠΠΎΠ΄ΡΠ»ΠΈ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ Π½Π΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ. ΠΠ±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ. ΠΠ΅ΡΠ°Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉΒ». ΠΠ°Π½Π½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ β Β«Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΡΠΎΠΈΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ, Π° Π½Π΅ Π΄Π΅ΡΠ°Π»Π΅ΠΉΒ».
ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΠΏΠ»Π°ΡΡ Π·Π°ΠΊΠ°Π·Π° ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»Π΅ΠΌ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠ»Π°ΡΡ Customer ΡΠ΅ΠΏΠ΅ΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ, Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, Ρ.Π΅. Π΄Π΅ΡΠ°Π»ΠΈ, Π΅ΠΌΡ Π½Π΅ ΡΠ°ΠΊ Π²Π°ΠΆΠ½Ρ.
Π¨ΠΏΠ°ΡΠ³Π°Π»ΠΊΠ°
ΠΠ°Π΄Π΅ΡΡΡ, ΠΌΠΎΡ Β«ΡΠΏΠ°ΡΠ³Π°Π»ΠΊΠ°Β» ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠΌΡ-Π½ΠΈΠ±ΡΠ΄Ρ Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² SOLID ΠΈ Π΄Π°ΡΡ ΡΠΎΠ»ΡΠΎΠΊ ΠΊ ΠΈΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ²ΠΎΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.
ΠΠΎΡΠ΅ΠΌΡ SOLID β Π²Π°ΠΆΠ½Π°Ρ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ°Ρ ΠΌΡΡΠ»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°. Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌΡΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ Ρ ΠΊΠΎΠ΄ΠΎΠΌ
ΠΡΠΈΠ²Π΅Ρ! ΠΠ΅Π½Ρ Π·ΠΎΠ²ΡΡ ΠΠ²Π°Π½, Ρ ΡΠΎΡΡΡΠ΄Π½ΠΈΡΠ°Ρ ΡΠΎ Π»ΡΠ²ΠΎΠ²ΡΠΊΠΈΠΌ ΠΎΡΠΈΡΠΎΠΌ EPAM ΠΊΠ°ΠΊ Solution Architect, Π° ΠΊΠ°ΡΡΠ΅ΡΡ Π² IT Π½Π°ΡΠ°Π» 10 Π»Π΅Ρ Π½Π°Π·Π°Π΄. ΠΠ° ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°ΠΌΠ΅ΡΠΈΠ», ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π»ΡΠ±ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ Π½ΡΠ»Ρ. ΠΠ΄Π½Π°ΠΊΠΎ Π½Π΅ Π²ΡΠ΅ΠΌ ΡΠ΄Π°Π΅ΡΡΡ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ΅ Π΅ΡΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΈ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ ΡΠΏΡΡΡΡ Π³ΠΎΠ΄.
ΠΠΏΠΎΠ»Π½Π΅ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ°Π·ΡΠ°ΡΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠΈΡΡΠ΅ΠΌΡ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ²ΡΡΠ°ΡΡΡΡ ΠΈ Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ. Π£ΡΠΏΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π±ΡΠ΄Π΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΡΠΎΠ³ΠΎ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΡΠΎΡΠΎ Π²Ρ Π΄Π΅ΡΠΆΠΈΡΠ΅ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΠΌ Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ. ΠΠ»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄ΠΈΠ·Π°ΠΉΠ½-ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ, Π»ΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ, Π° Π³Π»Π°Π²Π½ΠΎΠ΅ β ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ SOLID, GRASP ΠΈ DDD.
Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ Ρ ΠΎΡΡ Π°ΠΊΡΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎΠΌ, ΡΡΠΎ SOLID β Π²Π°ΠΆΠ½Π°Ρ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ°Ρ ΠΌΡΡΠ»Π΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ ΠΈ ΡΡΠ΅Π½ΠΈΡΠΎΠ²Π°ΡΡ.
Π― ΠΏΠΎΠΊΠ°ΠΆΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Ρ ΠΊΠΎΠ΄ΠΎΠΌ, Π³Π΄Π΅ Π½Π°ΡΡΡΠ°ΡΡΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ SOLID. ΠΡ Π²ΡΡΡΠ½ΠΈΠΌ, ΠΊ ΠΊΠ°ΠΊΠΈΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡΠΌ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ Π² Π΄ΠΎΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π΅ ΠΈ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ. ΠΠ° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, ΡΡΠ°ΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° ΠΊΠ°ΠΊ back-end, ΡΠ°ΠΊ ΠΈ front-end ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠ°Π·Π½ΡΡ ΡΡΠΎΠ²Π½Π΅ΠΉ.
ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ΅Π½ SOLID
SOLID β Π½Π°Π±ΠΎΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ» Π ΠΎΠ±Π΅ΡΡ ΠΠ°ΡΡΠΈΠ½ Π² 1995 Π³ΠΎΠ΄Ρ. ΠΡ ΠΈΠ΄Π΅Ρ ΡΠΎΡΡΠΎΠΈΡ Π² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΠ·Π±Π΅Π³Π°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π°. ΠΠΎΠ΄ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (Ρ.Π½. Β«ΡΠΏΠ°Π³Π΅ΡΡΠΈ-ΠΊΠΎΠ΄Β») ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎ. ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:
ΠΡΠΈΠ½ΡΠΈΠΏ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ (Single Responsibility Principle)
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ. ΠΡΠΎ Π½Π΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Ρ Π½Π΅Π³ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π»ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅ΡΠΎΠ΄. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ Π·Π°Π΄Π°Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΡΠ΅Π»ΠΈ ΡΡΡΠ΅ΡΡΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ°, ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ½Π΅ΡΡΠΈ Π·Π° ΡΠ°ΠΌΠΊΠΈ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ»Π°ΡΡ User. ΠΠ³ΠΎ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ β ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅: ΠΈΠΌΡ, e-mail ΠΈ ΡΠΈΠΏ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π² ΡΠ΅ΡΠ²ΠΈΡΠ΅.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ hasUnlimitedContentAccess. ΠΠ° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΈΠΏΠ° ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ ΠΎΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π΅ΡΡΡ Π»ΠΈ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΠ½ΡΠ΅Π½ΡΡ. ΠΠΎ ΡΠ°Π·Π²Π΅ Π΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ Π²ΡΠ²ΠΎΠ΄ β ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ ΠΊΠ»Π°ΡcΠ° User?
ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ Ρ ΠΊΠ»Π°ΡΡΠ° User Π΅ΡΡΡ Π΄Π²Π΅ ΡΠ΅Π»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ: ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ ΠΈ Π΄Π΅Π»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄ ΠΎΠ± ΡΡΠΎΠ²Π½Π΅ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΊΠΎΠ½ΡΠ΅Π½ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ. ΠΡΠΎ Π½Π°ΡΡΡΠ°Π΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏ Single Responsibility.
ΠΠΎΡΠ΅ΠΌΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° hasUnlimitedContentAccess Π² ΠΊΠ»Π°ΡΡΠ΅ User ΠΈΠΌΠ΅Π΅Ρ Π½Π΅Π³Π°ΡΠΈΠ²Π½ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π·Π° ΡΠΈΠΏΠΎΠΌ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ Β«ΡΠ°ΡΠΏΠ»ΡΠ²Π°Π΅ΡΡΡΒ» ΠΏΠΎ Π²ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΡΠΎΠΌΠ΅ ΠΊΠ»Π°ΡΡΠ° User ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΊΠ»Π°ΡΡΡ MediaLibrary ΠΈ Player, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΈΡ ΠΆΠ΅ Π΄Π°Π½Π½ΡΡ ΡΠΎΠΆΠ΅ Π±ΡΠ΄ΡΡ ΡΠ΅ΡΠ°ΡΡ, ΡΡΠΎ ΠΈΠΌ Π΄Π΅Π»Π°ΡΡ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»Π°ΡΡ ΡΡΠ°ΠΊΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ ΠΏΠΎ-ΡΠ²ΠΎΠ΅ΠΌΡ. ΠΡΠ»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΎΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π²ΡΡΡΡΠΎΠΈΠ» ΡΠ²ΠΎΠΉ Π½Π°Π±ΠΎΡ ΠΏΡΠ°Π²ΠΈΠ» ΡΠ°Π±ΠΎΡΡ Ρ Π½ΠΈΠΌΠΈ.
Π£Π΄Π°Π»ΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ hasUnlimitedContentAccess Π² ΠΊΠ»Π°ΡΡΠ΅ User ΠΈ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ°ΠΌΠΈ.
ΠΡ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠΎΠ²Π°Π»ΠΈ Π²ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ°ΠΌΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅. ΠΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΏΡΠ°Π²ΠΈΠ»Π°Ρ , ΠΎΠ½ΠΈ ΠΎΡΡΠ°Π½ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ ΠΈ Π½Π΅ Π·Π°ΡΠ΅ΠΏΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅.
Single Responsibility Principle ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΠ²Π½Ρ ΠΊΠ»Π°ΡΡΠΎΠ² β ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΡΠ·ΠΊΠΎΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ.
ΠΡΠΎΠΌΠ΅ SOLID ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΈ Π΄ΡΡΠ³ΠΎΠΉ Π½Π°Π±ΠΎΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ β GRASP. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΅Π³ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΡΡ Ρ SOLID. ΠΡΠ»ΠΈ ΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ Single Responsibility Principle, ΡΠΎ Ρ GRASP ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΡΡ:
ΠΡΠΈΠ½ΠΈΡΠΈΠΏ ΠΎΡΠΊΡΡΡΠΎΡΡΠΈ/Π·Π°ΠΊΡΡΡΠΎΡΡΠΈ (Open/Close Principle)
ΠΠ»Π°ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΡΠΊΡΡΡΡ Π΄Π»Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, Π½ΠΎ Π·Π°ΠΊΡΡΡΡ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΡΠ»ΠΈ Π΅ΡΡΡ ΠΊΠ»Π°ΡΡ, ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΡΠ²Π΅ΡΠ²Π»Π΅Π½ΠΈΠΉ Π»ΠΈΠ±ΠΎ ΡΡΠ΄ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°Π³ΠΎΠ², ΠΈ Π΅ΡΡΡ Π²ΡΡΠΎΠΊΠ°Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ, ΡΡΠΎ ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·ΡΠ°ΡΡΠ°ΡΡ, ΡΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ Π½ΠΎΠ²ΡΠ΅ ΠΎΡΠ²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ°Π³ΠΈ Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΈ ΠΊ Π΅Π³ΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ.
ΠΠ°Π²Π΅ΡΠ½ΠΎΠ΅, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½Π°Ρ Π²ΠΈΠ΄Π΅Π» Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΡΠ΅ΠΏΠΎΡΠΊΠΈ if then else ΠΈΠ»ΠΈ switch. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ if then else, ΠΌΠ΅Π½ΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ°ΠΌ ΠΊΠ»Π°ΡΡ. ΠΠΈΠ±ΠΎ ΠΊΠ»Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°Π³ΠΎΠ² β ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π½ΠΎΠ²ΡΠΉ ΡΠ°Π³ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. Π ΡΡΠΎ Π½Π°ΡΡΡΠ°Π΅Ρ Open/Close Principle.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ° Π±Π΅Π· Π΅Π³ΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΠΌ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΡΠΈΠ³ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° ShapeManger. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠ»ΠΎΡΠ°Π΄Ρ ΡΠΈΠ³ΡΡΡ ΡΠ΅ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½Π° Ρ ΡΠ°ΠΌΠΎΠΉ ΡΠΈΠ³ΡΡΠΎΠΉ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΡΠΈΠ³ΡΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΡΠ²ΠΎΡ ΠΏΠ»ΠΎΡΠ°Π΄Ρ, ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΈΡ ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΈΡ Π² ΠΌΠ΅ΡΠΎΠ΄ getMinArea.
Π’Π΅ΠΏΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ ΠΏΠΎΡΠ²ΡΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠΈΠ³ΡΡΡ, Π²ΡΠ΅, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, β ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ IShape. Π ΠΊΠ»Π°ΡΡ ShapeManager ΡΡΠ°Π·Ρ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΈΡ Π±Π΅Π· Π²ΡΡΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ.
Π ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊ ΡΠΈΠ³ΡΡΠ°ΠΌ? Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠ°Ρ Single Responsibility Principle. Π’ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Β«Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΡΒ» (Strategy): ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡ ΠΎΠΆΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΈΡ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΠΊΠ»ΡΡΡ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² Inversion of Control ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠ»Π°ΡΡ, Π½ΡΠΆΠ΄Π°ΡΡΠΈΠΉΡΡ Π² Π½ΠΈΡ , ΠΏΠΎΠ»ΡΡΠΈΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΠ°Π³ΠΎΠ²Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π΄Π°Π½Π½ΡΡ . ΠΡΠ»ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π³ΠΎΠ² ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ, Π½Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΌΠ΅Π½ΡΡΡ ΠΊΠ»Π°ΡΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½-ΠΏΠ°ΡΡΠ΅Ρ Β«ΠΠΎΠ½Π²Π΅ΠΉΠ΅ΡΒ» (Pipeline)
Π’Π΅ΠΏΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΌΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ. Π‘Π°ΠΌ ΠΊΠ»Π°ΡΡ ImageProcessor ΠΎΡΡΠ°Π΅ΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΡΠΌ. ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΡΡΠΎ Π΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΈΡΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ImageProcessor, ΠΈΠ½Π°ΡΠ΅ ΡΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΡΠ΅ΠΌ Π½ΡΠΆΠ½ΡΠ΅ Π½Π°ΠΌ ΠΌΠ΅ΡΠΎΠ΄Ρ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ pipeMethods.
ΠΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ². Π Π°Π½Π΅Π΅ ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ»ΠΈ Π½ΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΡΡΠΌΠΎ Π² ImageProcessor, ΠΈΠ·-Π·Π° ΡΠ΅Π³ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½ΠΎΠ²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ΅ΡΠΎΠ΄ highlightLetters ΡΡΠ΅Π±ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π±ΠΎΠ»ΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² β Π±ΠΎΠ»ΡΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. Π‘Π΅ΠΉΡΠ°Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ PipeMethod ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ.
ΠΠΎΡΠ»Π΅ ΡΠ°ΠΊΠΎΠΉ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π²ΡΠ΅ ΠΎΡΠ΅Π½Ρ Π»Π΅Π³ΠΊΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ°ΠΊΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ° ΠΊΠΎΠ΄Π° ΠΌΠΎΡΠΈΠ²ΠΈΡΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΊΠΎΠ² ΠΏΠΈΡΠ°ΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡΠΎΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Ρ ΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌΠΈ.
ΠΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠ΄ΠΈΠ½ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ fixQuality, Π³Π΄Π΅ Π±Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ»ΠΎΡΡ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±Π°Π»Π°Π½ΡΠ° ΡΠ²Π΅ΡΠΎΠ², ΠΈ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ Π² ΡΠ°ΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½Π°Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΈΠ»ΡΡΡΠ°.
ΠΠ΅ΡΠΎΡΡΠ½ΠΎ, Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π±Ρ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ fixQuality ΡΠ°Π±ΠΎΡΠ°Π» Π±Ρ Ρ ΠΎΡΠΎΡΠΎ, Π½ΠΎ Π΄Π»Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ½ Π±Ρ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π» Π²ΠΎΠ²ΡΠ΅. ΠΠΌΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΡΠΎΡΠΎ ΠΏΡΠΎΠ³ΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΡΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅.
ΠΡΠΈΠ½ΡΠΈΠΏΡ GRASP, ΠΎΠ±ΡΠΈΠ΅ Ρ Open/Close Principle:
ΠΡΠΈΠ½ΡΠΈΠΏ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΠΈΡΠΊΠΎΠ² (Liskov Substitution Principle)
ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Π΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ.
ΠΡΠ»ΠΈ ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΡΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π½Π°ΡΡΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΡΡ Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ²-ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ².
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ²:
ΠΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π½ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ β ΠΠΎΠ΅Π·Π΄.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠΎΠ΅Π·Π΄ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ΅Π½ΡΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠ΅Π³ΠΎ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ, ΡΠΎ turn ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π±ΡΠ΄Π΅Ρ Π½Π°ΡΡΡΠ°ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΠΈΡΠΊΠΎΠ².
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΄Π²Π° ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΊΠ»Π°ΡΡΠ°: FreeDirectionalVehicle β Π±ΡΠ΄Π΅Ρ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΈ BidirectionalVehicle β Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΏΠ΅ΡΠ΅Π΄ ΠΈ Π½Π°Π·Π°Π΄. Π’Π΅ΠΏΠ΅ΡΡ Π²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π±ΡΠ΄ΡΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π»ΠΈΡΡ ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΌΠΎΠ³ΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ»Π°ΡΡ-ΠΏΠΎΡΠΎΠΌΠΎΠΊ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ Π΄ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
Π ΡΡΠΎΠΉ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ ΠΌΡ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Logger ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ TcpLogger, Ρ.ΠΊ. Π΄ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ openConnection ΠΈ closeConnection. ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΠΌΡ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌ 2 Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡ Π½Π° Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° log, ΡΡΠΎ ΡΠ°ΠΊΠΆΠ΅ Π½Π°ΡΡΡΠ°Π΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΠΈΡΠΊΠΎΠ².
Π§ΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ Π²ΡΡΠ΅, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ openConnection ΠΈ closeConnection ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌΠΈ. Π ΠΌΠ΅ΡΠΎΠ΄Π΅ log ΠΊΠ»Π°ΡΡΠ° TcpLogger ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΠ΅ΠΌ Π·Π°ΠΏΠΈΡΡ Π»ΠΎΠ³ΠΎΠ² Π² ΡΠ°ΠΉΠ». Π‘ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎΡΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΆΠ΄ΡΡ ΠΌΠΈΠ½ΡΡΡ) Π±ΡΠ΄Π΅ΠΌ ΠΎΡΠΊΡΡΠ²Π°ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ°ΠΉΠ» Ρ Π»ΠΎΠ³Π°ΠΌΠΈ ΠΈ Π·Π°ΠΊΡΡΠ²Π°ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΏΡΠ΅ΠΆΠ΄Π΅, ΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΡΡΡΠ°, ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΈΠ»ΠΈ Π²ΡΠ΅ Π»ΠΎΠ³ΠΈ. ΠΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ»Π° Π·Π°Π²Π΅ΡΡΠ΅Π½Π° Π°Π²Π°ΡΠΈΠΉΠ½ΠΎ, ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π»ΠΎΠ³ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π΅Π΅ Π·Π°ΠΏΡΡΠΊΠ°.
ΠΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° (Interface Segregation Principle)
ΠΡΡΡΠ΅, ΠΊΠΎΠ³Π΄Π° Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², ΡΠ΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠΈΠΉ. ΠΠΌΠ΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π΅ΡΡΡ ΡΠΈΡΠΊ ΠΏΠΎΠΏΠ°ΡΡΡ Π² ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΉ ΠΊΠ»Π°ΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠ΅ΡΠΎΠ΄. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ ΡΠ°ΠΉΠ»Π° ΠΌΡ ΡΠΈΡΠ°Π΅ΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ, ΠΌΠ΅ΡΠΎΠ΄ Connect Π»ΠΈΡΠ½ΠΈΠΉ. Π Π°Π·Π΄Π΅Π»ΠΈΠΌ ΠΎΠ±ΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ IDataSource:
Π’Π΅ΠΏΠ΅ΡΡ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ.
ΠΡΠΈΠ½ΡΠΈΠΏ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (Dependency Inversion Principle)
ΠΠ°Π½Π½ΡΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠΉ:
ΠΠ°Ρ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ UserService ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄Π΅ΡΠ°Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ΅Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ: localStorage, fetch ΠΈ Date. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠ»ΠΎΡ ΡΠ΅ΠΌ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ fetch ΡΠ΅ΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅Π»Π°Π΅Ρ HTTP-Π·Π°ΠΏΡΠΎΡΡ, ΡΠΎ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ UserService. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΊΡΡΡΡ ΡΠ΅ΡΡΠ°ΠΌΠΈ.
ΠΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ Π½Π°ΡΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄Π° getUser ΠΌΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ User, Π° Π½Π΅ Π΅Π³ΠΎ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ β ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ IUser.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²Π½ΡΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ UserService.
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΠΌ, ΠΊΠΎΠ΄ ΡΡΠ°Π» Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΡΠΎΡΠ΅, Π΅Π³ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ. Π’Π΅ΠΏΠ΅ΡΡ Π²Π·Π³Π»ΡΠ½Π΅ΠΌ Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ICache ΠΈ IRemoteService.
ΠΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ Π²ΡΠ°ΠΏΠ΅ΡΡ Π½Π°Π΄ localStorage ΠΈ fetch. ΠΠ°ΠΆΠ½ΡΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠΌ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΌΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ localStorage ΠΈ fetch Π½Π°ΠΏΡΡΠΌΡΡ. ΠΡ Π²ΡΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΌΠΈ Π΄Π»Ρ Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌΠΈ. LocalStorage ΠΈ fetch Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡΡΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, Π΅ΡΠ»ΠΈ ΡΠ°ΠΌ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΠ»Ρ ΡΠ΅ΡΡΠΎΠ² ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ mocks ΠΈΠ»ΠΈ stubs, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΌΠ΅Π½ΡΡ localStorage ΠΈΠ»ΠΈ fetch, ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΡ ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ.
ΠΠΎΡ ΠΎΠΆΠΈΠΉ ΠΏΡΠΈΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΈ Π΄Π»Ρ Π΄Π°ΡΡ: Π΅ΡΠ»ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ, ΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· LocalStorageCache Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π½ΠΎΠ²ΡΡ Π΄Π°ΡΡ. ΠΡΠ»ΠΈ ΠΆΠ΅ Π΄Π»Ρ ΡΠ΅ΡΡΠΎΠ² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π΄Π°ΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π΅Π΅ Π½ΡΠΆΠ½ΠΎ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°.
ΠΡΠ²ΠΎΠ΄Ρ
ΠΡΠΎ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΡΠΎ Ρ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΠΌ ΡΠΈΡΡΠ΅ΠΌΡ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π΅Ρ Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ. ΠΠ°ΠΆΠ½ΠΎ Π²ΡΠ΅Π³Π΄Π° Π΄Π΅ΡΠΆΠ°ΡΡ ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΠΌ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΡΠΈΡ, Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΡΡ , Π±ΡΠ΄Π΅Ρ ΡΡΠΎΠΈΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄ΠΎΡΠΎΠ³ΠΎ.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠ°ΡΡΠΎ. Π§ΡΠΎΠ±Ρ ΠΈΡ ΠΈΠ·Π±Π΅Π³Π°ΡΡ, ΠΈ Π±ΡΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡ, ΡΠΎ Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌ Π»Π°Π²ΠΈΠ½ΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ΄Π½ΠΈΠΌΠΈ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΏΡΠΎΡΡΡΡ ΡΠ°ΠΊΠΈΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ SOLID
Π Π² Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅: ΠΎΡΡΠ°-ΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π»Ρ SOLID, Π ΠΎΠ±Π΅ΡΡΠ° ΠΠ°ΡΡΠΈΠ½Π°, Π½Π΅Π±Π΅Π·ΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ Π½Π°ΡΡΠΎΡΡΠ΅ΠΉ ΡΠΎΠΊ-Π·Π²Π΅Π·Π΄ΠΎΠΉ Π² ΠΌΠΈΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΠ. ΠΠ° Π΅Π³ΠΎ ΠΊΠ½ΠΈΠ³Π°Ρ ΡΠΆΠ΅ Π²ΡΡΠΎΡΠ»ΠΎ Π½Π΅ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ ΡΡΠΏΠ΅ΡΡΡΠΏΠ΅ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ². Β«Clean CodeΒ» ΠΈ Β«Clean CoderΒ» β Π΄Π²Π΅ Π΅Π³ΠΎ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π²ΡΡΠΎΡΠ°ΠΉΡΠΈΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌ Π² ΠΈΠ½Π΄ΡΡΡΡΠΈΠΈ. ΠΡΠΌΠ°Ρ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π²Π°Ρ ΡΠΆΠ΅ ΡΡΠΏΠ΅Π»ΠΈ ΠΏΡΠΈΡΠΈΡΠ°ΡΡ Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄Π½Ρ ΠΈΠ· Π½ΠΈΡ , Π° Π΅ΡΠ»ΠΈ Π½Π΅Ρ, ΡΠΎ Ρ Π²Π°Ρ Π΅ΡΡΡ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎΠΉ ΡΠ°Π½Ρ ΠΏΡΠΎΠΊΠ°ΡΠ°ΡΡ ΡΠ²ΠΎΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°.