ΠΡΠΈΠ½ΡΠΈΠΏ Π½Π° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π°ΡΠ° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ,
ΠΊΠΎΠ΅ΡΠΎ ΡΡΡΠΎ Π΅ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π½Π° Π΅Π΄ΠΈΠ½Π½Π°ΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΡΠΈΠ²ΠΎΡΡ β ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π΅ΡΡΠ΅Π½ Π·Π° ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π²ΡΠΏΡΠΎΡ ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π΅ΡΠ²Π΅Π½ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° ΠΈΠ½ΡΠ΅ΡΠ²Ρ Π·Π° ΡΠ°Π±ΠΎΡΠ° Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡ.
ΠΡΡΠ²ΠΎΡΠΎ ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΎ Π·Π°ΠΏΠΎΠ·Π½Π°Π½ΡΡΠ²ΠΎ Ρ ΡΠΎΠ·ΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π±Π΅ΡΠ΅ Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΠΏΡΡΠ²Π°ΡΠ° Π³ΠΎΠ΄ΠΈΠ½Π°, ΠΊΠΎΠ³Π°ΡΠΎ Π½ΠΈ Π·Π°Π²Π΅Π΄Π΅ Π² Π³ΠΎΡΠ°ΡΠ°, Π·Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΎΡ Π»ΠΈΡΠΈΠ½ΠΊΠΈΡΠ΅ ΡΡΡΠ΄Π΅Π½ΡΠΈ β ΠΈΡΡΠΈΠ½ΡΠΊΠΈ ΡΡΡΠ΄Π΅Π½ΡΠΈ.
Π Π³ΠΎΡΠ°ΡΠ° Π½ΠΈ ΡΠ°Π·Π΄Π΅Π»ΠΈΡ Π° Π½Π° Π³ΡΡΠΏΠΈ ΠΏΠΎ 8-9 ΡΠΎΠ²Π΅ΠΊΠ° ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Ρ Π° ΡΡΡΡΠ΅Π·Π°Π½ΠΈΠ΅ β ΠΊΠΎΡ Π³ΡΡΠΏΠ° ΠΏΠΎ-Π±ΡΡΠ·ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΈΠ΅ Π±ΡΡΠΈΠ»ΠΊΠ° Π²ΠΎΠ΄ΠΊΠ°, ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, ΡΠ΅ ΠΏΡΡΠ²ΠΈΡΡ ΡΠΎΠ²Π΅ΠΊ ΠΎΡ Π³ΡΡΠΏΠ°ΡΠ° Π½Π°Π»ΠΈΠ²Π° Π²ΠΎΠ΄ΠΊΠ° Π² ΡΠ°ΡΠ°ΡΠ°, Π²ΡΠΎΡΠΈΡΡ Ρ ΠΈΠ·ΠΏΠΈΠ²Π°, Π° ΡΡΠ΅ΡΠΈΡΡ Π·Π°ΠΊΡΡΠ²Π°. ΠΠ·Π²ΡΡΡΠΈΠ» ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° ΡΡΠ°ΡΡΠ½ΠΈΠΊ Π·Π°ΡΡΠ°Π²Π° Π² ΠΊΡΠ°Ρ Π½Π° ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° Π½Π° Π³ΡΡΠΏΠ°ΡΠ°.
Π‘Π»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° Π±Π΅ΡΠ΅ ΠΊΡΠ°ΡΠ΅Π½ Π½Π° ΡΡΠΈ, ΠΈ Π±Π΅ΡΠ΅ Π΄ΠΎΠ±ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° SRP.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ 1. ΠΠ΄ΠΈΠ½Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ.
ΠΡΠΈΡΠΈΠ°Π»Π½ΠΎΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π½Π° Π΅Π΄ΠΈΠ½Π½Π°ΡΠ° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ (SRP) ΠΊΠ°Π·Π²Π°, ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ ΠΎΠ±Π΅ΠΊΡ ΠΈΠΌΠ° ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ ΠΈ ΠΏΡΠΈΡΠΈΠ½Π° Π·Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Π½Π΅ ΠΈ ΡΠ°Π·ΠΈ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ Π΅ ΡΠ°ΠΌΠΎ Π΅Π΄Π½Π°.
ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΎΠ±Π΅ΠΊΡ Β«ΠΠ°ΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΒ» (Tippler).
ΠΠ° Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° SRP, ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΡΠΌΠ΅ Π·Π°Π΄ΡΠ»ΠΆΠ΅Π½ΠΈΡΡΠ° Π½Π° ΡΡΠΈΠΌΠ°:
- ΠΠ΄ΠΈΠ½ Π½Π°Π»ΠΈΠ²Π° (PourOperation)
- ΠΠ΄ΠΈΠ½ ΠΈΠ·ΠΏΠΈΠ²Π° (DrinkUpOperation)
- ΠΠ΄ΠΈΠ½ Π·Π°ΠΊΡΡΠ²Π° (TakeBiteOperation)
ΠΡΠ΅ΠΊΠΈ ΠΎΡ ΡΡΠ°ΡΡΠ½ΠΈΡΠΈΡΠ΅ Π² ΠΏΡΠΎΡΠ΅ΡΠ° Π΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ΅Π½ Π·Π° Π΅Π΄Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ°, ΡΠΎΠ΅ΡΡ ΠΈΠΌΠ° Π΅Π΄Π½Π° Π°ΡΠΎΠΌΠ°ΡΠ½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ β Π΄Π° ΠΈΠ·ΠΏΠΈΠ΅, Π΄Π° Π½Π°Π»Π΅Π΅ ΠΈΠ»ΠΈ Π΄Π° Π·Π°ΠΊΡΡΠ²Π°.
ΠΠ°ΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠΈΡΡ, ΠΎΡ ΡΠ²ΠΎΡ ΡΡΡΠ°Π½Π°, Π΅ ΡΠ°ΡΠ°Π΄Π° Π·Π° Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ:
Ρlass Tippler {
//...
void Act(){
_pourOperation.Do() // Π½Π°Π»Π΅ΠΉ
_drinkUpOperation.Do() // ΠΈΠ·ΠΏΠΈΠΉ
_takeBiteOperation.Do() // Π·Π°ΠΊΡΡΠΊΠ°
}
}
ΠΠΠ©Π?
Π§ΠΎΠ²Π΅ΠΊ-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡ ΠΏΠΈΡΠ΅ ΠΊΠΎΠ΄ Π·Π° ΡΠΎΠ²Π΅ΠΊ-ΠΌΠ°ΠΉΠΌΡΠ½Π°, Π° ΡΠΎΠ²Π΅ΠΊ-ΠΌΠ°ΠΉΠΌΡΠ½Π° Π΅ Π½Π΅Π±ΡΠ΅ΠΆΠ΅Π½, Π³Π»ΡΠΏΠ°Π² ΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π±ΡΡΠ·Π° Π·Π° Π½ΡΠΊΡΠ΄Π΅. Π’ΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°ΠΏΠΎΠΌΠ½ΠΈ ΠΈ ΡΠ°Π·Π±Π΅ΡΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 3β7 ΡΠ΅ΡΠΌΠΈΠ½Π° Π² Π΅Π΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π° Π²ΡΠ΅ΠΌΠ΅.
Π ΡΠ»ΡΡΠ°Ρ Π½Π° Π½Π°ΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠΈΡ, ΡΠ΅Π·ΠΈ ΡΠ΅ΡΠΌΠΈΠ½ΠΈ ΡΠ° ΡΡΠΈ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π°ΠΊΠΎ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΊΠΎΠ΄Π° Π² Π΅Π΄Π½Π° Π΄ΡΠ»Π³Π° ΠΏΠΎΡΠ΅Π΄ΠΈΡΠ°, Π² Π½Π΅Π³ΠΎ ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΠ²ΡΡ ΡΡΡΠ΅, ΡΠ°ΡΠΈ, Π±ΠΎΠΉ ΠΈ Π±Π΅Π·ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠΏΠΎΡΠΎΠ²Π΅ Π·Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°. Π Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΡΠ΅ Π±ΡΠ΄Π΅ Π² ΡΡΠ»ΠΎΡΠΎ Π½Π° Π΅Π΄ΠΈΠ½ ΠΌΠ΅ΡΠΎΠ΄. Π‘ΠΈΠ³ΡΡΠ΅Π½ ΡΡΠΌ, ΡΠ΅ ΡΡΠ΅ Π²ΠΈΠΆΠ΄Π°Π»ΠΈ ΡΠ°ΠΊΡΠ² ΠΊΠΎΠ΄ Π² ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΡΠ° ΡΠΈ. ΠΠ΅ Π΅ Π½Π°ΠΉ-Ρ
ΡΠΌΠ°Π½Π½ΠΎΡΠΎ ΠΈΠ·ΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π·Π° ΠΏΡΠΈΡ
ΠΈΠΊΠ°ΡΠ°.
ΠΡ Π΅Π΄Π½Π° ΡΡΡΠ°Π½Π°, ΡΠΎΠ²Π΅ΠΊΡΡ-ΠΎΠ±Π΅Π·ΡΠ½Π° Π΅ Π·Π°ΡΠ²ΠΎΡΠ΅Π½ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ ΠΎΡ ΡΠ΅Π°Π»Π½ΠΈΡ ΡΠ²ΡΡ Π² ΡΡΠ·Π½Π°Π½ΠΈΠ΅ΡΠΎ ΡΠΈ. Π ΡΠ²ΠΎΠ΅ΡΠΎ Π²ΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΡΠ±Π»ΡΡΠΊΠ²Π°, Π΄Π° ΡΡΠ±ΠΈΡΠ° Π½ΠΎΠ²ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ΠΎΡ ΡΡΡ ΠΈ Π΄Π° Π³ΠΈ ΡΠ°Π·Π³Π»ΠΎΠ±ΡΠ²Π° ΠΏΠΎ ΡΡΡΠΈΡ Π½Π°ΡΠΈΠ½. ΠΡΠ΅Π΄ΡΡΠ°Π²Π΅ΡΠ΅ ΡΠΈ ΡΡΠ°ΡΠ° ΠΌΠΎΠ΄Π΅Π» Π½Π° ΠΊΠΎΠ»Π°. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΠ΅ ΠΊΠ°ΠΊ ΠΎΡΠ²Π°ΡΡΡΠ΅ Π²ΡΠ°ΡΠ°ΡΠ°, ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠ΅ ΠΎΠ±ΡΠΈΠ²ΠΊΠ°ΡΠ° Π½Π° Π²ΡΠ°ΡΠ°ΡΠ° ΠΈ Π²ΠΈΠΆΠ΄Π°ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈΡΠ΅ Π½Π° ΡΡΡΠΊΠ»ΠΎΠ΄ΡΡΠΏΠ°ΡΠΊΠΈΡΠ΅, Π² ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠΌΠ° Π·ΡΠ±ΡΠ°ΡΠΈ ΠΊΠΎΠ»Π΅Π»Π°. ΠΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΠΊΠΎΠ»Π°ΡΠ° Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, Π² Π΅Π΄ΠΈΠ½ "Π»ΠΈΡΡΠ²Π°Π½" ΡΠΎΡΠΌΠ°Ρ. ΠΠ°ΠΉ-ΠΌΠ°Π»ΠΊΠΎΡΠΎ "ΡΠΎΠ²Π΅ΠΊΡΡ-ΠΎΠ±Π΅Π·ΡΠ½Π°" Π½Π΅ ΠΌΠΎΠΆΠ΅.
ΠΠ°ΡΠΎΠ²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠΈΡΠ΅ ΡΠ΅ΡΡΠΎ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠ° ΡΠ»ΠΎΠΆΠ½ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π½Π° Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΠ»ΠΎΠΆΠ½ΠΈ ΠΈ ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠΈ ΠΏΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½Π°ΡΠΈΠ½ΠΈ: Π² ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈ ΠΊΠΎΠ»ΠΈ β Π²ΡΠ·Π΄ΡΡ ΠΎΠ²ΠΎΠ΄ΡΡ ΠΈΠ·Π»ΠΈΠ·Π° Π²ΡΠ°ΡΠ°ΡΠ°, Π° Π² ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ β ΠΏΠΎΠ²ΡΠ΅Π΄Π° Π² Π΅Π»Π΅ΠΊΡΡΠΎΠ½ΠΈΠΊΠ°ΡΠ° Π½Π° ΠΊΠ»ΡΡΠ°Π»ΠΊΠ°ΡΠ° Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ° Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ, ΠΊΠΎΠ΅ΡΠΎ Π·Π°ΡΡΡΠ΄Π½ΡΠ²Π° ΡΠ΅ΠΌΠΎΠ½ΡΠ°.
Π’Π°ΠΊΠ° ΡΠ΅, SRP β ΡΠΎΠ²Π° Π΅ ΠΏΡΠΈΠ½ΡΠΈΠΏ, ΠΊΠΎΠΉΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠ²Π° ΠΠΠ Π΄Π° ΡΠ΅ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠ°, Ρ.Π΅. ΠΊΡΠ΄Π΅ Π΄Π° ΡΠ΅ Π½Π°ΡΠ΅ΡΡΠ°Π΅ Π»ΠΈΠ½ΠΈΡ Π½Π° ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅.
Π’ΠΎΠΉ ΠΊΠ°Π·Π²Π°, ΡΠ΅ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π½Π° "ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΠΈΡΠ΅", Ρ.Π΅. ΡΠΏΠΎΡΠ΅Π΄ Π·Π°Π΄Π°ΡΠΈΡΠ΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ.
ΠΠ΅ΠΊΠ° ΡΠ΅ Π²ΡΡΠ½Π΅ΠΌ ΠΊΡΠΌ ΠΏΠΈΡΠ½ΠΈΡΠ°ΡΠ° ΠΈ ΠΏΠ»ΡΡΠΎΠ²Π΅ΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΡΠΎΠ²Π΅ΠΊΡΡ-ΠΎΠ±Π΅Π·ΡΠ½Π° ΠΏΡΠΈ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠ°Π½Π΅:
- ΠΠΎΠ΄ΡΡ ΡΡΠ°Π½Π° ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ½ΠΈ Π½Π° Π²ΡΡΠΊΠΎ Π½ΠΈΠ²ΠΎ
- ΠΠΎΠ΄ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ (Π²ΡΠ΅ΠΊΠΈ ΠΏΠΈΡΠ΅ ΠΎΡΠ΄Π΅Π»Π΅Π½ Π΅Π»Π΅ΠΌΠ΅Π½Ρ)
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ ΡΠ΅ΡΡΠ²Π°Π½Π΅ ΡΠ΅ ΠΎΠΏΡΠΎΡΡΡΠ²Π° β ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΠΎ-ΠΎΠΏΡΠΎΡΡΠ΅Π½ Π΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΡΡ, ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ Π΅ Π΄Π° Π³ΠΎ ΡΠ΅ΡΡΠ²Π°ΡΠ΅
- ΠΠΎΡΠ²ΡΠ²Π° ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΠΎΡΡ Π½Π° ΠΊΠΎΠ΄Π° β ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°ΠΌΠ΅Π½ΡΡΠ΅ DrinkUpOperation Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, Π² ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΈΡΠ½ΠΈΡΠ°ΡΠ° ΠΈΠ·Π»ΠΈΠ²Π° ΡΠ΅ΡΠ½ΠΎΡΡ ΠΏΠΎΠ΄ ΠΌΠ°ΡΠ°ΡΠ°. ΠΠ»ΠΈ Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° Π½Π° Π½Π°Π»ΠΈΠ²Π°Π½Π΅ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, Π² ΠΊΠΎΡΡΠΎ ΡΠΌΠ΅ΡΠ²Π°ΡΠ΅ Π²ΠΈΠ½ΠΎ ΠΈ Π²ΠΎΠ΄Π° ΠΈΠ»ΠΈ Π²ΠΎΠ΄ΠΊΠ° ΠΈ Π±ΠΈΡΠ°. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π±ΠΈΠ·Π½Π΅Ρ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π°, Π±Π΅Π· Π΄Π° Π΄ΠΎΠΊΠΎΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ΄Π° Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° Tippler.Act.
- ΠΡ ΡΠ΅Π·ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ³Π»ΠΎΠ±ΠΈΡΠ΅ ΡΠ΄ΡΠ΅Π½Π°ΡΠ° (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠ°ΠΌΠΎ TakeBitOperation), ΠΠ»ΠΊΠΎΡ ΠΎΠ»ΠΈΠΊΠ° (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠ°ΠΌΠΎ DrinkUpOperation Π½Π°ΠΏΡΡΠΊΠΎ ΠΎΡ Π±ΡΡΠΈΠ»ΠΊΠ°ΡΠ°) ΠΈ Π΄Π° Π·Π°Π΄ΠΎΠ²ΠΎΠ»ΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈ Π±ΠΈΠ·Π½Π΅Ρ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ.
(ΠΠΉ, ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΠ΅ ΡΠΎΠ²Π° Π²Π΅ΡΠ΅ Π΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡΡ OCP ΠΈ Π½Π°ΡΡΡΠΈΡ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠΎΠ·ΠΈ ΠΏΠΎΡΡ)
Π, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, ΠΌΠΈΠ½ΡΡΠΈΡΠ΅:
- Π©Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠΈΠΏΠΎΠ²Π΅.
- ΠΠΈΡΠ½ΠΈΡΠ°ΡΠ° Π·Π° ΠΏΡΡΠ²ΠΈ ΠΏΡΡ ΡΠ΅ ΠΏΠΈΠ΅ Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°ΡΠ° ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π±ΠΈ ΠΌΠΎΠ³ΡΠ»
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ 2. ΠΠ΄Π½Π°ΠΊΠ²Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΎΡΡ.
ΠΠΎΠ·Π²ΠΎΠ»Π΅ΡΠ΅, Π³ΠΎΡΠΏΠΎΠ΄Π°! ΠΠ»Π°ΡΡΡ Π½Π° ΠΏΠΈΡΠ½ΠΈΡΠΈΡΠ΅ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π°ΡΠ° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ β ΡΠΎΠΉ ΠΏΠΈΠ΅! Π ΠΈΠ·ΠΎΠ±ΡΠΎ, ΠΏΠΎΠ½ΡΡΠΈΠ΅ΡΠΎ "ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ" Π΅ ΠΊΡΠ°ΠΉΠ½ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΎ. ΠΡΠΊΠΎΠΉ Π΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ΅Π½ Π·Π° ΡΡΠ΄Π±Π°ΡΠ° Π½Π° ΡΠΎΠ²Π΅ΡΠ΅ΡΡΠ²ΠΎΡΠΎ, Π° Π½ΡΠΊΠΎΠΉ Π΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ΅Π½ Π·Π° Π²Π΄ΠΈΠ³Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±ΡΡΠ½Π°ΡΠΈ Π½Π° ΠΏΠΎΠ»ΡΡΠ° ΠΏΠΈΠ½Π³Π²ΠΈΠ½ΠΈ.
ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΄Π²Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΏΠΈΡΠ½ΠΈΡΠ°ΡΠ°. ΠΡΡΠ²Π°ΡΠ°, ΠΏΠΎΡΠΎΡΠ΅Π½Π° ΠΏΠΎ-Π³ΠΎΡΠ΅, ΡΡΠ΄ΡΡΠΆΠ° ΡΡΠΈ ΠΊΠ»Π°ΡΠ° β Π½Π°Π»ΠΈΠ²Π°ΠΌ, ΠΏΠΈΡ ΠΈ Ρ Π°ΠΏΠ²Π°ΠΌ.
ΠΡΠΎΡΠ°ΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½Π° ΠΏΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° "ΠΠ°ΠΏΡΠ΅Π΄ ΠΈ ΡΠ°ΠΌΠΎ Π½Π°ΠΏΡΠ΅Π΄" ΠΈ ΡΡΠ΄ΡΡΠΆΠ° ΡΡΠ»Π°ΡΠ° Π»ΠΎΠ³ΠΈΠΊΠ° Π² ΠΌΠ΅ΡΠΎΠ΄Π° Act:
//ΠΠ΅ ΡΡΠ°ΡΡΡΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π° ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΡΡΡΠ΅ ΡΡΠ΅ΡΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π½ΡΠΊΡ
Ρlass BrutTippler {
//...
void Act(){
// Π½Π°Π»ΠΈΠ²Π°Π΅ΠΌ
if(!_hand.TryDischarge(from:_bottle, to:_glass, size:_glass.Capacity))
throw new OverdrunkException();
// Π²ΡΠΏΠΈΠ²Π°Π΅ΠΌ
if(!_hand.TryDrink(from: _glass, size: _glass.Capacity))
throw new OverdrunkException();
//ΠΠ°ΠΊΡΡΡΠ²Π°Π΅ΠΌ
for(int i = 0; i< 3; i++){
var food = _foodStore.TakeOrDefault();
if(food==null)
throw new FoodIsOverException();
_hand.TryEat(food);
}
}
}Π Π΄Π²Π°ΡΠ° ΡΠ΅Π·ΠΈ ΠΊΠ»Π°ΡΠ°, ΠΎΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° Π²ΡΠ½ΡΠ΅Π½ Π½Π°Π±Π»ΡΠ΄Π°ΡΠ΅Π», ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎ ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π°ΡΠ° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ "Π΄Π° ΠΏΠΈΡΡ".
ΠΠΎΠ½ΡΡΠ·!
Π’ΠΎΠ³Π°Π²Π° Π²Π»ΠΈΠ·Π°ΠΌΠ΅ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΈ Π½Π°ΡΡΠ°Π²Π°ΠΌΠ΅ Π΄ΡΡΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° SRP β ΠΡΠΈΠ½ΡΠΈΠΏ Π½Π° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π°ΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΡΠΈΠ²ΠΎΡΡ (Single Changeability Principle).
SCP Π³Π»Π°ΡΠΈ, ΡΠ΅ "ΠΠΎΠ΄ΡΠ»ΡΡ ΠΈΠΌΠ° ΡΠ°ΠΌΠΎ Π΅Π΄Π½Π° ΠΏΡΠΈΡΠΈΠ½Π° Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅". Π’ΠΎΠ΅ΡΡ "ΠΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΡΠ° Π΅ ΠΏΡΠΈΡΠΈΠ½Π°ΡΠ° Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅".
(ΠΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΠ΅ Ρ ΠΎΡΠ°ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΈΠ·ΠΌΠΈΡΠ»ΠΈΠ»ΠΈ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΡΠ° Π±ΠΈΠ»ΠΈ ΡΠ²Π΅ΡΠ΅Π½ΠΈ Π² ΡΠ΅Π»Π΅ΠΏΠ°ΡΠΈΡΠ½ΠΈΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ Π½Π° ΡΠΎΠ²Π΅ΠΊΠ°-ΠΎΠ±Π΅Π·ΡΠ½Π°)
Π‘Π΅Π³Π° Π²ΡΠΈΡΠΊΠΎ ΡΠΈ ΠΈΠ΄Π²Π° Π½Π° ΠΌΡΡΡΠΎΡΠΎ. ΠΡΠ΄Π΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΠΌΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΈΡΠ΅ Π·Π° Π½Π°Π»ΠΈΠ²Π°Π½Π΅, ΠΏΠΈΠ΅Π½Π΅ ΠΈ Ρ Π°ΠΏΠ²Π°Π½Π΅, Π° Π² ΡΠ°ΠΌΠ°ΡΠ° ΠΏΠΈΡΠ½ΠΈΡΠ° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌ ΡΠ°ΠΌΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΈ ΡΡΡΡΠ°Π²Π° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π° ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈΠΌ Ρ Π°ΠΏΠ²Π°Π½Π΅ΡΠΎ ΠΏΡΠ΅Π΄ΠΈ ΠΏΠΈΠ΅Π½Π΅ΡΠΎ ΠΈΠ»ΠΈ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° ΡΠΎΡΡ.
Π ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° "ΠΠ°ΠΏΡΠ΅Π΄ ΠΈ ΡΠ°ΠΌΠΎ Π½Π°ΠΏΡΠ΅Π΄", Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ β ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ ΡΠ°ΠΌΠΎ Π² ΠΌΠ΅ΡΠΎΠ΄Π° Act. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ΅ΡΠΈΠ²Π½ΠΎ ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π² ΡΠ»ΡΡΠ°ΠΉ, ΡΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΈ ΡΡΠ΄ΠΊΠΎ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ, Π½ΠΎ ΡΠ΅ΡΡΠΎ Π·Π°Π²ΡΡΡΠ²Π° Ρ ΡΠΆΠ°ΡΠ½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΏΠΎ 500 ΡΠ΅Π΄Π° Π² Π²ΡΠ΅ΠΊΠΈ, ΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ if-ΠΎΠ²Π΅, ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΠΎ Π·Π° Π²Π»ΠΈΠ·Π°Π½Π΅ΡΠΎ Π½Π° Π ΡΡΠΈΡ Π² ΠΠΠ’Π.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ 3. ΠΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
ΠΠΈΡΠ½ΠΈΡΠΈΡΠ΅ ΡΠ΅ΡΡΠΎ Π½Π΅ ΡΠ°Π·Π±ΠΈΡΠ°Ρ Π·Π°ΡΠΎ ΡΠ° ΡΠ΅ ΡΡΠ±ΡΠ΄ΠΈΠ»ΠΈ Π² ΡΡΠΆΠ΄Π° ΠΊΠ²Π°ΡΡΠΈΡΠ° ΠΈΠ»ΠΈ ΠΊΡΠ΄Π΅ Π΅ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈΡΡ ΠΈΠΌ ΡΠ΅Π»Π΅ΡΠΎΠ½. ΠΡΠ΅ΠΌΠ΅ Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π° Π»ΠΎΠ³ΠΈΡΠΎΠ²ΠΊΠ°.
ΠΠ΅ΠΊΠ° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Π»ΠΎΠ³ΠΈΡΠΎΠ²ΠΊΠ°ΡΠ° Ρ ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° Π½Π°Π»ΠΈΠ²Π°Π½Π΅:
class PourOperation: IOperation{
PourOperation(ILogger log /*....*/){/*...*/}
//...
void Do(){
_log.Log($"ΠΡΠ΅Π΄ΠΈ Π½Π°Π»ΠΈΠ²Π°Π½Π΅ Ρ {_hand} ΠΈ {_bottle}");
//ΠΠΎΠ³ΠΈΠΊΠ° Π½Π° Π½Π°Π»ΠΈΠ²Π°Π½Π΅ΡΠΎ...
_log.Log($"Π‘Π»Π΅Π΄ Π½Π°Π»ΠΈΠ²Π°Π½Π΅ Ρ {_hand} ΠΈ {_bottle}");
}
}ΠΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠ°ΠΉΡΠ΅ Ρ Π² PourOperation, Π½ΠΈΠ΅ ΠΏΠΎΡΡΡΠΏΠΈΡ ΠΌΠ΅ ΠΌΡΠ΄ΡΠΎ ΠΎΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΡΠ° ΠΈ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»Π°ΡΠΈΡΡΠ°, Π½ΠΎ ΡΠ΅Π³Π° ΠΈΠΌΠ°ΠΌΠ΅ Π·Π°ΡΡΡΠ΄Π½Π΅Π½ΠΈΠ΅ Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠΈΠ²ΠΎΡΡ. ΠΡΠ²Π΅Π½ ΡΠ°ΠΌΠ°ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ, ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° ΡΡΠ°Π²Π° ΠΈ ΡΠ°ΠΌΠΎΡΠΎ Π»ΠΎΠ³ΠΈΡΠ°Π½Π΅. Π©Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π·Π΄Π΅Π»ΠΈΠΌ ΠΈ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ Π»ΠΎΠ³Π΅Ρ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° Π½Π°Π»ΠΈΠ²Π°Π½Π΅:
interface IPourLogger{
void LogBefore(IHand, IBottle){}
void LogAfter(IHand, IBottle){}
void OnError(IHand, IBottle, Exception){}
}
class PourOperation: IOperation{
PourOperation(IPourLogger log /*....*/){/*...*/}
//...
void Do(){
_log.LogBefore(_hand, _bottle);
try{
//... Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠ°
_log.LogAfter(_hand, _bottle);
}
catch(exception e){
_log.OnError(_hand, _bottle, e)
}
}
}ΠΠ½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΈΡΡ ΡΠΈΡΠ°ΡΠ΅Π» ΡΠ΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈ, ΡΠ΅ LogAfter, LogBefore ΠΈ OnError ΡΡΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ ΠΏΠΎΠΎΡΠ΄Π΅Π»Π½ΠΎ ΠΈ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ Ρ ΠΏΡΠ΅Π΄Ρ ΠΎΠ΄Π½ΠΈΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ ΡΡΠΈ ΠΊΠ»Π°ΡΠ°: PourLoggerBefore, PourLoggerAfter ΠΈ PourErrorLogger.
Π ΠΊΠ°ΡΠΎ ΡΠΈ ΡΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π·Π° ΠΏΠΈΡΠ½ΠΈΡΠ°ΡΠ° ΡΠ° ΡΡΠΈ β ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Π΄Π΅Π²Π΅Ρ ΠΊΠ»Π°ΡΠ° Π·Π° Π»ΠΎΠ³ΠΈΡΠ°Π½Π΅. Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΡΠ΅Π»ΠΈΡΡ ΠΏΠΈΡΠ½ΠΈΡΠ° ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ 14 (!!!) ΠΊΠ»Π°ΡΠ°.
Π₯ΠΈΠΏΠ΅ΡΠ±ΠΎΠ»Π°? ΠΠ°Π»ΠΊΠΎ Π²Π΅ΡΠΎΡΡΠ½ΠΎ! Π§ΠΎΠ²Π΅ΠΊ-ΠΌΠ°ΠΉΠΌΡΠ½Π° Ρ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½Π° Π³ΡΠ°Π½Π°ΡΠ° ΡΠ΅ ΡΠ°Π·Π΄ΡΠΎΠ±ΠΈ βΠ½Π°Π»ΠΈΠ²Π°ΡΠ΅Π»Ρβ Π½Π° Π³ΡΠ°ΡΠΈΠ½, ΡΠ°ΡΠ°, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ Π½Π° Π½Π°Π»ΠΈΠ²Π°Π½Π΅, ΡΡΠ»ΡΠ³Π° Π·Π° ΠΏΠΎΠ΄Π°Π²Π°Π½Π΅ Π½Π° Π²ΠΎΠ΄Π°, ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠΎΠ΄Π΅Π» Π½Π° ΡΠ±Π»ΡΡΡΠΊ Π½Π° ΠΌΠΎΠ»Π΅ΠΊΡΠ»ΠΈ ΠΈ ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΠΊΠ²Π°ΡΡΠ°Π» ΡΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° ΡΠ°Π·ΠΏΠ»Π΅ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅ Π±Π΅Π· Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ. Π ΠΏΠΎΠ²ΡΡΠ²Π°ΠΉΡΠ΅ β ΡΠΎΠΉ Π½ΡΠΌΠ° Π΄Π° ΡΠΏΡΠ΅.
Π’ΠΎΡΠ½ΠΎ Π² ΡΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ Ρ ΠΎΡΠ° ΡΡΠΈΠ³Π°Ρ Π΄ΠΎ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΡΠΎ, ΡΠ΅ SRP β ΡΠΎΠ²Π° ΡΠ° ΠΏΡΠΈΠΊΠ°Π·ΠΊΠΈ ΠΎΡ ΡΠΎΠ·ΠΎΠ²ΠΈΡΠ΅ ΠΊΡΠ°Π»ΡΡΠ²Π° ΠΈ ΠΎΡΠΈΠ²Π°Ρ Π΄Π° ΡΡΠΊΠ°Ρ ΡΠΏΠ°Π³Π΅ΡΠΈ...
β¦ ΡΠ°ΠΊΠ° ΠΈ Π½Π΅ ΡΠ°Π·Π±ΡΠ°Π»ΠΈ Π·Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ΅ΡΠΎΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° SRP:
Β«ΠΡΠΈΠ½ΡΠΈΠΏΡΡ Π½Π° Π΅Π΄ΠΈΠ½Π½Π°ΡΠ° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ Π³Π»Π°ΡΠΈ, ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π΅ΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π½Π° Π΅Π΄Π½ΠΎ ΠΌΡΡΡΠΎΒ«. ΠΈΠ»ΠΈ βΠ’ΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ Π·Π°Π΅Π΄Π½ΠΎ, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π½Π° Π΅Π΄Π½ΠΎ ΠΌΡΡΡΠΎ.β
ΠΠ½Π°ΡΠ΅ ΠΊΠ°Π·Π°Π½ΠΎ, Π°ΠΊΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΌΠ΅ Π»ΠΎΠ³ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ°, ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΠΌΠ΅ ΡΠΎΠ²Π° Π½Π° Π΅Π΄Π½ΠΎ ΠΌΡΡΡΠΎ.
Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ β ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²ΡΠΈΡΠΊΠΈ ΠΎΠ±ΡΡΠ½Π΅Π½ΠΈΡ ΠΏΠΎ SRP, ΠΊΠΎΠΈΡΠΎ Π±ΡΡ Π° ΠΏΠΎ-Π³ΠΎΡΠ΅, Π³ΠΎΠ²ΠΎΡΠ΅Ρ Π° Π·Π° ΡΠΎΠ²Π°, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π·ΡΡΠΏΠ²Π°ΠΌΠ΅ ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠ΅ ΡΠ΅ ΡΠ°Π·ΡΡΠΏΠ²Π°Ρ, ΡΠΎΠ΅ΡΡ Π½Π°Π»Π°Π³Π°ΡΠ΅ Β«ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ³ΠΎΡΠ΅Β» Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° ΠΎΠ±Π΅ΠΊΡΠ°, Π° ΡΠ΅Π³Π° Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π²Π΅ΡΠ΅ ΠΈ Π·Π° Β«ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ΄ΠΎΠ»ΡΒ». Π‘ Π΄ΡΡΠ³ΠΈ Π΄ΡΠΌΠΈ, SRP Π½Π΅ ΡΠ°ΠΌΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π° Β«Π΄Π° ΡΠ΅ Π΄ΡΠΎΠ±ΠΈ, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠ΅ Π΄ΡΠΎΠ±ΠΈΒ», Π½ΠΎ ΠΈ Π΄Π° Π½Π΅ ΡΠ΅ ΠΏΡΠ΅ΠΊΠ°Π»ΡΠ²Π°ΠΌΠ΅ β Β«Π΄Π° Π½Π΅ ΡΠ°Π·Π΄ΡΠΎΠ±ΠΈΠΌ ΡΠ²ΡΡΠ·Π°Π½ΠΈ Π½Π΅ΡΠ°Β». Π’ΠΎΠ²Π° Π΅ Π²Π΅Π»ΠΈΠΊΠ°ΡΠ° Π±ΠΈΡΠΊΠ° Π½Π° Π±ΡΡΡΠ½Π°ΡΠ° Π½Π° ΠΠΊΠΊΠ°ΠΌ Ρ ΡΠΎΠ²Π΅ΠΊΠ°-ΠΌΠ°ΠΉΠΌΡΠ½Π°!
Π‘Π΅Π³Π° Π½Π° ΠΏΠΈΡΠ½ΠΈΡΠ°ΡΠ° Π±ΠΈ ΡΡΡΠ±Π²Π°Π»ΠΎ Π΄Π° ΡΡΠ°Π½Π΅ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ. ΠΡΠ²Π΅Π½ ΡΠ΅ Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΠ°Π·Π΄ΡΠΎΠ±ΡΠ²Π° Π»ΠΎΠ³Π΅ΡΠ° IPourLogger Π½Π° ΡΡΠΈ ΠΊΠ»Π°ΡΠ°, ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΡΠΎ Π΄Π° ΠΎΠ±Π΅Π΄ΠΈΠ½ΠΈΠΌ Π²ΡΠΈΡΠΊΠΈ Π»ΠΎΠ³Π΅ΡΠΈ Π² Π΅Π΄ΠΈΠ½ ΡΠΈΠΏ:
class OperationLogger{
public OperationLogger(string operationName){
/*..*/}
public void LogBefore(object[] args){
/*...*/}
public void LogAfter(object[] args){
/*..*/}
public void LogError(object[] args, exception e){
/*..*/}
}Π Π°ΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ΅ΡΠ²ΡΡΡΠΈ ΡΠΈΠΏ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, Π²Π΅ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ Π»ΠΎΠ³ΠΈΡΠ°Π½Π΅ Π·Π° Π½Π΅Π³ΠΎ. Π ΠΊΠΎΠ΄ΡΡ Π½Π° ΡΠ°ΠΌΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΅ ΡΠΈΡΡ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½ ΠΎΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅Π½ ΡΡΠΌ.
Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π° ΠΈΠΌΠ°ΠΌΠ΅ 5 ΠΊΠ»Π°ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ΡΠ°Π²Π°Ρ Π·Π°Π΄Π°ΡΠ°ΡΠ° ΠΏΠΎ ΠΈΠ·ΠΏΠΈΠ²Π°Π½Π΅:
- ΠΠΏΠ΅ΡΠ°ΡΠΈΡ Π½Π°Π»ΠΈΠ²Π°Π½Π΅
- ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈΠ·ΠΏΠΈΠ²Π°Π½Π΅
- ΠΠΏΠ΅ΡΠ°ΡΠΈΡ Π·Π°ΡΠΆΠ΄Π°Π½Π΅
- ΠΠΎΠ³ΠΈΡΠ°Ρ ΠΌΠΎΠ΄ΡΠ»
- Π€Π°ΡΠ°Π΄ Π½Π° ΠΏΠΈΡΠ½Π΄Π΅ΡΠΎ
ΠΡΠ΅ΠΊΠΈ ΠΎΡ ΡΡΡ Π΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ΅Π½ ΡΡΡΠΎΠ³ΠΎ Π·Π° Π΅Π΄Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ ΠΈ ΠΈΠΌΠ° Π΅Π΄Π½Π° ΠΏΡΠΈΡΠΈΠ½Π° Π·Π° ΠΏΡΠΎΠΌΡΠ½Π°. ΠΡΠΈΡΠΊΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° ΡΠ° Π² Π±Π»ΠΈΠ·ΠΎΡΡ.
ΠΡΠΈΠΌΠ΅Ρ ΠΎΡ ΡΠ΅Π°Π»Π½ΠΈΡ ΠΆΠΈΠ²ΠΎΡ
ΠΠ΄ΠΈΠ½ Π΄Π΅Π½ ΠΏΠΈΡΠ΅Ρ ΠΌΠ΅ ΡΡΠ»ΡΠ³Π° Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π½Π° B2B ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ. Π ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΡΡ GOD Ρ 200 ΡΠ΅Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅:
- ΠΡΠΈΠ΄ΠΈ Π² 1Π‘ ΠΈ ΡΡΠ·Π΄Π°ΠΉ Π°ΠΊΠ°ΡΠ½Ρ
- Π‘ ΡΠΎΠ·ΠΈ Π°ΠΊΠ°ΡΠ½Ρ ΠΎΡΠΈΠ΄ΠΈ Π² ΠΌΠΎΠ΄ΡΠ»Π° Π·Π° ΠΏΠ»Π°ΡΠ°Π½ΠΈΡ ΠΈ Π³ΠΎ ΡΡΠ·Π΄Π°ΠΉ ΡΠ°ΠΌ
- ΠΡΠΎΠ²Π΅ΡΠΈ ΠΈ ΡΠ΅ ΡΠ²Π΅ΡΠΈ, ΡΠ΅ Π°ΠΊΠ°ΡΠ½Ρ Ρ ΡΠΎΠ·ΠΈ Π°ΠΊΠ°ΡΠ½Ρ Π½Π΅ Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Π» Π½Π° Π³Π»Π°Π²Π½ΠΈΡ ΡΡΡΠ²ΡΡ
- Π‘ΡΠ·Π΄Π°ΠΉ Π½ΠΎΠ² Π°ΠΊΠ°ΡΠ½Ρ
- ΠΠΎΠ±Π°Π²ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΡΠ° Π² ΠΌΠΎΠ΄ΡΠ»Π° Π·Π° ΠΏΠ»Π°ΡΠ°Π½ΠΈΡ ΠΈ Π½ΠΎΠΌΠ΅Ρ 1Π‘ Π² ΡΡΠ»ΡΠ³Π°ΡΠ° Π·Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΎΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΡΠ°
- ΠΠΎΠ±Π°Π²ΠΈ Π² ΡΠ°Π·ΠΈ ΡΠ°Π±Π»ΠΈΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π°ΠΊΠ°ΡΠ½ΡΠ°
- Π‘ΡΠ·Π΄Π°ΠΉ Π½ΠΎΠΌΠ΅Ρ Π½Π° ΡΠΎΡΠΊΠ° Π·Π° ΡΠΎΠ·ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ Π² ΡΡΠ»ΡΠ³Π°ΡΠ° Π·Π° ΡΠΎΡΠΊΠΈ. ΠΡΠ΅Π΄Π°ΠΉ Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ»ΡΠ³Π° Π½ΠΎΠΌΠ΅Ρ Π½Π° Π°ΠΊΠ°ΡΠ½Ρ 1Π‘.
Π Π² ΡΠΎΠ·ΠΈ ΡΠΏΠΈΡΡΠΊ ΠΈΠΌΠ°ΡΠ΅ ΠΎΡΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 10 Π±ΠΈΠ·Π½Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠΆΠ°ΡΠ½Π° Π²Π·Π°ΠΈΠΌΠ½Π° ΡΠ²ΡΡΠ·Π°Π½ΠΎΡΡ. ΠΠ±Π΅ΠΊΡΡΡ Π°ΠΊΠ°ΡΠ½Ρ Π±Π΅ΡΠ΅ Π½ΡΠΆΠ΄Π΅Π½ ΠΏΠΎΡΡΠΈ ΠΎΡ Π²ΡΠΈΡΠΊΠΈ. ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡΡ Π½Π° ΡΠΎΡΠΊΠ°ΡΠ° ΠΈ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π±ΡΡ Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π² ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°ΡΠ° ΠΎΡ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡΡΠ°.
Π‘Π»Π΅Π΄ ΡΠ°Ρ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ ΡΡΠΏΡΡ ΠΌΠ΅ Π΄Π° ΠΎΡΠ΄Π΅Π»ΠΈΠΌ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½ΠΈΡ ΠΊΠΎΠ΄ ΠΈ Π½ΡΠΊΠΎΠΈ Π½ΡΠ°Π½ΡΠΈ Π½Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π°ΠΊΠ°ΡΠ½ΡΠ° Π² ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ/ΠΊΠ»Π°ΡΠΎΠ²Π΅. ΠΠ΅ΡΠΎΠ΄ΡΡ God ΡΡΠ°Π½Π° ΠΏΠΎ-Π»Π΅ΠΊ, Π½ΠΎ ΠΎΡΡΠ°Π½Π°Ρ Π° 100 ΡΠ΅Π΄Π° ΠΊΠΎΠ΄, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΈΡΠΊΠ°Ρ Π° Π΄Π° ΡΠ΅ ΡΠ°Π·ΠΏΠ»ΠΈΡΠ°Ρ.
Π‘Π°ΠΌΠΎ ΡΠ»Π΅Π΄ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π΄Π½ΠΈ ΠΎΡΡΠ·Π½Π°Ρ ΠΌΠ΅, ΡΠ΅ ΡΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠΎΠ·ΠΈ "ΠΎΠ±Π»Π΅ΠΊΡΠ΅Π½ΠΈΡ" ΠΌΠ΅ΡΠΎΠ΄ β ΠΈ Π΅ Π±ΠΈΠ·Π½Π΅Ρ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ. Π ΡΠ΅ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ Π±Π΅ΡΠ΅ Π΄ΠΎΡΡΠ° ΡΠ»ΠΎΠΆΠ½ΠΎ. Π ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠΏΠΈΡΡΡ Π΄Π° ΡΠ°Π·Π΄Π΅Π»ΠΈΠΌ ΡΠΎΠ·ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π½Π° ΠΏΠ°ΡΡΠ΅ΡΠ° ΡΠ΅ Π½Π°ΡΡΡΠΈ SRP, Π° Π½Π΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ.
Π€ΠΎΡΠΌΠ°Π»ΠΈΠ·ΡΠΌ.
ΠΠΎΠΉΠ΄Π΅ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΠΎΡΡΠ°Π²ΠΈΠΌ Π½Π°ΡΠ΅ΡΠΎ ΠΏΠΈΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠ°Π½Π°. ΠΠ·ΡΡΠΈΠ²Π°ΠΉ ΡΡΠ»Π·ΠΈΡΠ΅ β ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΠ΅ ΡΠ΅ Π²ΡΡΠ½Π΅ΠΌ ΠΏΡΠΈ Π½Π΅Π³ΠΎ Π½ΡΠΊΠΎΠΉ Π΄Π΅Π½. Π ΡΠ΅Π³Π° ΡΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Π·Π½Π°Π½ΠΈΡΡΠ° ΠΎΡ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ.
Π€ΠΎΡΠΌΠ°Π»ΠΈΠ·ΡΠΌ 1. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° SRP
- Π Π°Π·Π΄Π΅Π»ΡΠΉΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ ΡΠ°ΠΊΠ°, ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΡΡΡ Π΄Π° Π΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ΅Π½ Π·Π° Π½Π΅ΡΠΎ Π΅Π΄Π½ΠΎ.
- ΠΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΡΠ° ΡΠ΅ ΡΠ°Π·ΡΠΈΡΡΠΎΠ²Π° ΠΊΠ°ΡΠΎ βΠΏΡΠΈΡΠΈΠ½Π° Π·Π° ΠΏΡΠΎΠΌΡΠ½Π°β. Π’ΠΎΠ΅ΡΡ, Π²ΡΠ΅ΠΊΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΈΠΌΠ° ΡΠ°ΠΌΠΎ Π΅Π΄Π½Π° ΠΏΡΠΈΡΠΈΠ½Π° Π·Π° ΠΏΡΠΎΠΌΡΠ½Π°, Π² ΡΠ΅ΡΠΌΠΈΠ½ΠΈ Π½Π° Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ°.
- ΠΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ. ΠΡΠΎΠΌΠ΅Π½ΡΠ΅ΠΌΠΈΡΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ Π±Π»ΠΈΠ·ΠΎ Π΄ΠΎ Π²Π°Ρ.
Π€ΠΎΡΠΌΠ°Π»ΠΈΠ·ΡΠΌ 2. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ Π·Π° ΡΠ°ΠΌΠΎΠΎΡΠ΅Π½ΠΊΠ°.
ΠΠ΅ ΡΡΠΌ ΡΡΠ΅ΡΠ°Π» Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΈ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° SRP. ΠΠΎ ΠΈΠΌΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ:
1) ΠΠ°Π΄Π°ΠΉΡΠ΅ ΡΠΈ Π²ΡΠΏΡΠΎΡ β ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠ°Π²ΠΈ ΡΠΎΠ·ΠΈ ΠΊΠ»Π°Ρ/ΠΌΠ΅ΡΠΎΠ΄/ΠΌΠΎΠ΄ΡΠ»/ΡΡΠ»ΡΠ³Π°. Π’ΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈΡΠ΅ Π½Π° Π½Π΅Π³ΠΎ Ρ ΠΏΡΠΎΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅. (Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ )
ΠΎΠ±ΡΡΠ½Π΅Π½ΠΈΡ
ΠΡΠ΅ ΠΏΠ°ΠΊ ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈ ΠΏΡΠΎΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅
2) ΠΠΎΡΠΈΠ³ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π΄Π°Π΄Π΅Π½ Π±ΡΠ³ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΡ Π·Π°ΡΡΠ³Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ Π±ΡΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅/ΠΊΠ»Π°ΡΠΎΠ²Π΅. Π ΠΈΠ΄Π΅Π°Π»Π½ΠΈΡ ΡΠ»ΡΡΠ°ΠΉ β Π΅Π΄ΠΈΠ½.
ΠΎΠ±ΡΡΠ½Π΅Π½ΠΈΡ
Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΡΠ° (Π·Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° ΠΈΠ»ΠΈ Π±ΡΠ³Π°) Π΅ ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠ°Π½Π° Π² Π΅Π΄ΠΈΠ½ ΡΠ°ΠΉΠ»/ΠΊΠ»Π°Ρ, Π²ΠΈΠ΅ ΡΠΎΡΠ½ΠΎ Π·Π½Π°Π΅ΡΠ΅ ΠΊΡΠ΄Π΅ Π΄Π° ΡΡΡΡΠΈΡΠ΅ ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΠΎΠΏΡΠ°Π²ΡΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: ΡΡΠ½ΠΊΡΠΈΡ Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π° Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΡΠΎΠΌΡΠ½Π° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎ Π² Π»ΠΎΠ³Π΅ΡΠ°. ΠΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΎΠ±ΠΈΠΊΠ°Π»ΡΡΠ΅ ΡΠ΅Π»ΠΈΡ ΠΎΡΡΠ°Π½Π°Π» ΠΊΠΎΠ΄.
ΠΡΡΠ³ ΠΏΡΠΈΠΌΠ΅Ρ β Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π½ΠΎΠ² UI ΠΊΠΎΠ½ΡΡΠΎΠ», ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅. ΠΠΊΠΎ ΡΠΎΠ²Π° Π²ΠΈ ΠΏΡΠΈΠ½ΡΠΆΠ΄Π°Π²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ 10 ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡΠΈ ΠΈ 15 ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠΎΡΠ° β ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΠ΅ ΡΡΠ΅ βΠΏΡΠ΅Π΄ΡΠΎΠ±ΠΈΠ»ΠΈβ.
3) ΠΠΊΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΡΠ°Π±ΠΎΡΡΡ ΠΏΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ, Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΠ° Π·Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΠΏΡΠΈ ΡΠ»ΠΈΠ²Π°Π½Π΅ β ΡΠΎΠ΅ΡΡ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΠ° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡΠΈ ΡΠ°ΠΉΠ»/ΠΊΠ»Π°Ρ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ β Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π°.
ΠΎΠ±ΡΡΠ½Π΅Π½ΠΈΡ
ΠΠΊΠΎ ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ βΠΠ·Π»Π΅ΠΉΡΠ΅ Π²ΠΎΠ΄ΠΊΠ°ΡΠ° ΠΏΠΎΠ΄ ΠΌΠ°ΡΠ°ΡΠ°β ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π΄ΠΎΠΊΠΎΡΠ½Π΅ΡΠ΅ Π΄ΠΎ Π»ΠΎΠ³Π΅ΡΠ°, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° Π·Π° ΠΏΠΈΠ΅Π½Π΅ ΠΈ ΠΈΠ·Π»ΠΈΠ²Π°Π½Π΅ β ΡΠΎΠ³Π°Π²Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΠ΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΠΈΡΠ΅ ΡΠ° ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈ ΠΊΡΠΈΠ²ΠΎ. Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΠΎΠ²Π° Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΡΡΠ°ΡΠ°Π΅ΠΌ Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΠΌ ΡΠΎΠ·ΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π».
4) ΠΡΠΈ ΡΡΠΎΡΠ½ΡΠ²Π°Ρ Π²ΡΠΏΡΠΎΡ Π·Π° Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° (ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ) Π²ΠΈΠ΅ ΠΈΠ·Π»ΠΈΠ·Π°ΡΠ΅ ΡΡΡΠΎΠ³ΠΎ Π² Π΅Π΄ΠΈΠ½ ΠΊΠ»Π°Ρ/ΡΠ°ΠΉΠ» ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠ°ΠΌΠΎ ΠΎΡ ΡΠ°ΠΌ.
ΠΎΠ±ΡΡΠ½Π΅Π½ΠΈΡ
Π€ΡΠ½ΠΊΡΠΈΠΈΡΠ΅, ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° ΠΈΠ»ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ ΡΠ° ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ, Π²ΡΠ΅ΠΊΠΈ Π² Π΅Π΄Π½ΠΎ ΠΌΡΡΡΠΎ, Π° Π½Π΅ ΡΠ°Π·ΠΏΡΡΡΠ½Π°ΡΠΈ Ρ ΡΠ»Π°Π³ΠΎΠ²Π΅ ΠΈΠ· ΡΡΠ»ΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π½Π° ΠΊΠΎΠ΄Π°.
5) ΠΠΌΠ΅Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π΅ ΡΡΠ½ΠΎ.
ΠΎΠ±ΡΡΠ½Π΅Π½ΠΈΡ
ΠΠ°ΡΠΈΡΡ ΠΊΠ»Π°Ρ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ΅Π½ Π·Π° Π½Π΅ΡΠΎ Π΅Π΄Π½ΠΎ, ΠΈ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΡΠ° Π΅ ΠΎΡΡΠ°Π·Π΅Π½Π° Π² ΠΈΠΌΠ΅ΡΠΎ ΠΌΡ.
AllManagersManagerService β Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π΅ God-ΠΊΠ»Π°Ρ.
LocalPayment β Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π½Π΅.
Π€ΠΎΡΠΌΠ°Π»ΠΈΠ·ΡΠΌ 3. ΠΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° βΠΠΊΠΊΠ°ΠΌ-ΠΏΡΡΠ²ΠΎβ.
Π Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½Π΅ΡΠΎ, ΡΠΎΠ²Π΅ΠΊ-ΠΎΠ±Π΅Π·ΡΠ½Π° Π½Π΅ Π·Π½Π°Π΅ ΠΈ Π½Π΅ ΡΡΠ²ΡΡΠ²Π° Π²ΡΠΈΡΠΊΠΈ Π½ΡΠ°Π½ΡΠΈ Π½Π° ΡΠ΅ΡΠ°Π²Π°Π½Π°ΡΠ° Π·Π°Π΄Π°ΡΠ° ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ Π³ΡΠ΅ΡΠΊΠ°. ΠΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ:
- ΠΠ° ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ ΠΏΡΠ΅ΠΊΠ°Π»Π΅Π½ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΠΉΠΊΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΠΈ
- ΠΠ° ΡΠ΅ ΡΠ°Π·ΡΡΠΏΠΈ, ΡΠ°Π·Π΄Π΅Π»ΡΠΉΠΊΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅
- ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΡΠ°
ΠΠ°ΠΆΠ½ΠΎ Π΅ Π΄Π° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎΡΠΎ: "ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ Π΄Π° Π³ΡΠ΅ΡΠΈΡΠ΅ Π² Π³ΠΎΠ»ΡΠΌΠΎΡΠΎ", ΠΈΠ»ΠΈ "Π½Π΅ ΡΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΈ - Π½Π΅ ΡΠ°Π·ΡΡΠΏΠ²Π°ΠΉΡΠ΅". ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ Π²Π°ΡΠΈΡΡ ΠΊΠ»Π°Ρ ΡΡΠ΄ΡΡΠΆΠ° Π΄Π²Π΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΠΈ - ΡΠΎΠΉ Π²ΡΠ΅ ΠΎΡΠ΅ Π΅ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ Π½Π° Π΄Π²Π΅ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ ΠΊΠΎΠ΄. Π‘ΡΠ±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΡΠΊΠ»Π΅Π½ΠΈ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΈ Π² ΡΠ°ΡΠ°, Π·Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ, Π΅ ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠ°Π·ΠΌΠ°Π·Π°Π½ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π² Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°ΠΉΠ»Π° ΠΈ Π»ΠΈΠΏΡΠ°ΡΠ° Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ ΠΊΠΎΠ΄.
ΠΡΠ΅ΠΌΠ΅ Π΅ Π΄Π° ΠΏΡΠΈΠΊΠ»ΡΡΠΈΠΌ
ΠΠ±Ρ Π²Π°ΡΡΡ Π½Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° SRP Π½Π΅ ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π° Π΄ΠΎ ΠΠΠ ΠΈ SOLID. Π’ΠΎΠΉ Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌ Π·Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ, ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ»Π°ΡΠΎΠ²Π΅, ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ ΠΈ ΡΡΠ»ΡΠ³ΠΈ. Π’ΠΎΠΉ Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌ ΠΊΠ°ΠΊΡΠΎ Π·Π° "figax-figax-ΠΈ-Π²-ΠΏΡΠΎΠ΄", ΡΠ°ΠΊΠ° ΠΈ Π·Π° "ΡΠΎΠΊΠ΅Ρ-ΡΠ°ΠΉΠ½Ρ" ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΏΡΠ°Π²Π΅ΠΉΠΊΠΈ ΡΠ²Π΅ΡΠ° ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π΄ΠΎΠ±ΡΡ Π½Π°Π²ΡΡΠΊΡΠ΄Π΅. ΠΠΊΠΎ ΠΏΠΎΠΌΠΈΡΠ»ΠΈΡΠ΅, ΡΠΎΠ²Π° Π΅ Π΅Π΄Π²Π° Π»ΠΈ Π½Π΅ ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π½Π° ΡΡΠ»Π°ΡΠ° ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈΡ. ΠΠ°ΡΠΈΠ½ΠΎΡΡΡΠΎΠ΅Π½Π΅ΡΠΎ, ΡΠΏΡΠ°Π²Π»Π΅Π½ΡΠΊΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΈ ΠΈΠ·ΠΎΠ±ΡΠΎ Π²ΡΠΈΡΠΊΠΈ ΡΠ»ΠΎΠΆΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ - ΡΠ΅ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Ρ ΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ, Π° "Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎΡΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅" Π»ΠΈΡΠ°Π²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΎΡ Π³ΡΠ²ΠΊΠ°Π²ΠΎΡΡ, "ΠΏΡΠ΅ΠΊΠ°Π»ΡΠ²Π°Π½Π΅ΡΠΎ Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ΡΠΎ" - ΠΎΡ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡ, Π° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡΠ΅ Π³ΡΠ°Π½ΠΈΡΠΈ - ΠΎΡ ΡΠ°Π·ΡΠΌ ΠΈ Π΄ΡΡΠ΅Π²Π½ΠΎ ΡΠΏΠΎΠΊΠΎΠΉΡΡΠ²ΠΈΠ΅.
SRP Π½Π΅ Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ ΠΎΡ ΠΏΡΠΈΡΠΎΠ΄Π°ΡΠ° ΠΈ Π½Π΅ Π΅ ΡΠ°ΡΡ ΠΎΡ ΡΠΎΡΠ½ΠΈΡΠ΅ Π½Π°ΡΠΊΠΈ. Π’ΠΎΠΉ ΠΏΡΠΎΠΈΠ·ΡΠΈΡΠ° ΠΎΡ Π½Π°ΡΠΈΡΠ΅ Π±ΠΈΠΎΠ»ΠΎΠ³ΠΈΡΠ½ΠΈ ΠΈ ΠΏΡΠΈΡ ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ. Π’ΠΎΠ²Π° Π΅ ΠΏΡΠΎΡΡΠΎ Π½Π°ΡΠΈΠ½ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» ΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠΎΠ²Π΅ΡΠΊΠΈΡ ΠΌΠΎΠ·ΡΠΊ. Π’ΠΎΠΉ Π½ΠΈ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊ Π΄Π° Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΡΠ΅ΠΌ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°. ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½Π°ΡΠ° ΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΊΠ° ΠΈΠ·ΠΈΡΠΊΠ²Π°ΡΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΈ ΡΠΌΠ΅Π½ΠΈΡ Π·Π° ΡΠ΅Π»Π΅ΠΏΠ°ΡΠΈΡ, Π½ΠΎ ΡΠ΅ Π½Π°Π΄ΡΠ²Π°ΠΌ, ΡΠ΅ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΠΌΠ°Π»ΠΊΠΎ ΡΠ°Π·ΡΠ΅ΠΉΠ²Π° Π΄ΠΈΠΌΠ°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
