ΠΡΠΈΠ½ΡΠΈΠΏ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΠ½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ, ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΡΡΡΠΎ ΠΊΠ°ΡΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΠ½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ,
ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΎΡΠ΅ ΠΊΠ°ΡΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π½Π° Π΅Π΄Π½Π°ΠΊΠ²Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΎΡΡ - ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Ρ
Π»ΡΠ·Π³Π°Π² ΡΠΎΠ²Π΅ΠΊ Π·Π° ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΈ ΡΠΎΠ»ΠΊΠΎΠ²Π° Π½Π΅ΡΠ²Π΅Π½ Π²ΡΠΏΡΠΎΡ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ²Ρ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡ.
ΠΡΡΠ²ΠΎΡΠΎ ΠΌΠΈ ΠΏΠΎ-ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΎ Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ Ρ ΡΠΎΠ·ΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΡΠ°Π½Π° Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΠΏΡΡΠ²Π°ΡΠ° Π³ΠΎΠ΄ΠΈΠ½Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΌΠ»Π°Π΄ΠΈΡΠ΅ ΠΈ Π·Π΅Π»Π΅Π½ΠΈΡΠ΅ Π±ΡΡ Π° ΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈ Π² Π³ΠΎΡΠ°ΡΠ°, Π·Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΡΡ ΠΎΡ Π»Π°ΡΠ²ΠΈΡΠ΅ ΡΡΠ΅Π½ΠΈΡΠΈ - ΠΈΡΡΠΈΠ½ΡΠΊΠΈ ΡΡΠ΅Π½ΠΈΡΠΈ.
Π Π³ΠΎΡΠ°ΡΠ° Π½ΠΈ ΡΠ°Π·Π΄Π΅Π»ΠΈΡ Π° Π½Π° Π³ΡΡΠΏΠΈ ΠΎΡ ΠΏΠΎ 8-9 ΡΠΎΠ²Π΅ΠΊΠ° ΠΈ ΡΠ΅ ΡΡΡΡΠ΅Π·Π°Π²Π°Ρ ΠΌΠ΅ - ΠΊΠΎΡ Π³ΡΡΠΏΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΈΠ΅ Π½Π°ΠΉ-Π±ΡΡΠ·ΠΎ Π±ΡΡΠΈΠ»ΠΊΠ° Π²ΠΎΠ΄ΠΊΠ°, ΠΏΡΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠ΅ ΠΏΡΡΠ²ΠΈΡΡ ΠΎΡ Π³ΡΡΠΏΠ°ΡΠ° Π½Π°Π»ΠΈΠ²Π° Π²ΠΎΠ΄ΠΊΠ° Π² ΡΠ°ΡΠ°, Π²ΡΠΎΡΠΈΡΡ Ρ ΠΈΠ·ΠΏΠΈΠ²Π°, Π° ΡΡΠ΅ΡΠΈΡΡ ΠΈΠΌΠ° Π»Π΅ΠΊΠ° Π·Π°ΠΊΡΡΠΊΠ°. Π£ΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π΅ Π·Π°Π²ΡΡΡΠΈΠ»ΠΎ ΡΠ²ΠΎΡΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΡΠ΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π° Π² ΠΊΡΠ°Ρ Π½Π° ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° Π½Π° Π³ΡΡΠΏΠ°ΡΠ°.
Π‘Π»ΡΡΠ°ΡΡ, Π² ΠΊΠΎΠΉΡΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° Π΅ ΠΊΡΠ°ΡΠ΅Π½ Π½Π° ΡΡΠΈ, Π΅ Π΄ΠΎΠ±ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° SRP.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ 1. ΠΠ΄ΠΈΠ½ΠΈΡΠ½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ.
ΠΡΠΈΡΠΈΠ°Π»Π½Π°ΡΠ° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡ Π½Π° ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π½Π° Π΅Π΄ΠΈΠ½Π½Π°ΡΠ° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ (SRP) Π³Π»Π°ΡΠΈ, ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ ΡΡΠ±Π΅ΠΊΡ ΠΈΠΌΠ° ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ ΠΈ ΠΏΡΠΈΡΠΈΠ½Π° Π·Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Π½Π΅ ΠΈ ΠΈΠΌΠ° ΡΠ°ΠΌΠΎ Π΅Π΄Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ.
ΠΠΎΠΌΠΈΡΠ»Π΅ΡΠ΅ Π·Π° ΠΎΠ±Π΅ΠΊΡΠ° βΠΠΈΡΡβ (Π‘Π°ΠΌΠΎΡΠ²Π°Π»).
ΠΠ° Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π½Π° SRP, ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΠΌ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΡΠΈ:
- ΠΠ΄ΠΈΠ½ ΠΈΠ·Π»ΠΈΠ²Π° (PourOperation)
- ΠΠ΄Π½ΠΎ ΠΏΠΈΠ΅Π½Π΅ (DrinkUpOperation)
- Π§ΠΎΠ²Π΅ΠΊ ΠΈΠΌΠ° Π·Π°ΠΊΡΡΠΊΠ° (TakeBiteOperation)
ΠΡΠ΅ΠΊΠΈ ΠΎΡ ΡΡΠ°ΡΡΠ½ΠΈΡΠΈΡΠ΅ Π² ΠΏΡΠΎΡΠ΅ΡΠ° Π΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ΅Π½ Π·Π° Π΅Π΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ°, ΡΠΎΠ΅ΡΡ ΠΈΠΌΠ° Π΅Π΄Π½Π° Π°ΡΠΎΠΌΠ½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ - Π΄Π° ΠΏΠΈΠ΅, Π΄Π° Π½Π°Π»Π΅Π΅ ΠΈΠ»ΠΈ Π΄Π° Ρ Π°ΠΏΠ½Π΅.
ΠΡ ΡΠ²ΠΎΡ ΡΡΡΠ°Π½Π° Π΄ΡΠΏΠΊΠ°ΡΠ° Π·Π° ΠΏΠΈΠ΅Π½Π΅ Π΅ ΡΠ°ΡΠ°Π΄Π° Π·Π° ΡΠ΅Π·ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ:
Ρlass Tippler {
//...
void Act(){
_pourOperation.Do() // Π½Π°Π»ΠΈΡΡ
_drinkUpOperation.Do() // Π²ΡΠΏΠΈΡΡ
_takeBiteOperation.Do() // Π·Π°ΠΊΡΡΠΈΡΡ
}
}
ΠΠ°ΡΠΎ?
Π§ΠΎΠ²Π΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡ ΠΏΠΈΡΠ΅ ΠΊΠΎΠ΄ Π·Π° ΡΠΎΠ²Π΅ΠΊΠ°-ΠΌΠ°ΠΉΠΌΡΠ½Π°, Π° ΡΠΎΠ²Π΅ΠΊΡΡ-ΠΌΠ°ΠΉΠΌΡΠ½Π° Π΅ Π½Π΅Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π΅Π½, Π³Π»ΡΠΏΠ°Π² ΠΈ Π²ΠΈΠ½Π°Π³ΠΈ Π±ΡΡΠ·Π°. Π’ΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΡΡΠΆΠΈ ΠΈ ΡΠ°Π·Π±ΠΈΡΠ° ΠΎΠΊΠΎΠ»ΠΎ 3 - 7 ΡΠ΅ΡΠΌΠΈΠ½Π° Π½Π°Π²Π΅Π΄Π½ΡΠΆ.
Π ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΏΠΈΡΠ½ΠΈΡΠ° ΠΈΠΌΠ° ΡΡΠΈ ΠΎΡ ΡΠ΅Π·ΠΈ ΡΠ΅ΡΠΌΠΈΠ½ΠΈ. ΠΠΊΠΎ ΠΎΠ±Π°ΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΊΠΎΠ΄Π° Ρ Π΅Π΄ΠΈΠ½ Π»ΠΈΡΡ, ΡΠΎΠ³Π°Π²Π° ΡΠΎΠΉ ΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ° ΡΡΡΠ΅, ΠΎΡΠΈΠ»Π°, Π±ΠΈΡΠΊΠΈ ΠΈ Π±Π΅Π·ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠΏΠΎΡΠΎΠ²Π΅ Π·Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°. Π Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΡΠ΅ Π±ΡΠ΄Π΅ Π² ΡΡΠ»ΠΎΡΠΎ Π½Π° Π΅Π΄ΠΈΠ½ ΠΌΠ΅ΡΠΎΠ΄. Π‘ΠΈΠ³ΡΡΠ΅Π½ ΡΡΠΌ, ΡΠ΅ ΡΡΠ΅ Π²ΠΈΠΆΠ΄Π°Π»ΠΈ ΡΠ°ΠΊΡΠ² ΠΊΠΎΠ΄ Π² ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΡΠ° ΡΠΈ. ΠΠ΅ Π΅ Π½Π°ΠΉ-Ρ
ΡΠΌΠ°Π½Π½ΠΈΡΡ ΡΠ΅ΡΡ Π·Π° ΠΏΡΠΈΡ
ΠΈΠΊΠ°ΡΠ°.
ΠΡ Π΄ΡΡΠ³Π° ΡΡΡΠ°Π½Π°, ΡΠΎΠ²Π΅ΠΊΡΡ-ΠΌΠ°ΠΉΠΌΡΠ½Π° Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ Π΄Π° ΡΠΈΠΌΡΠ»ΠΈΡΠ° ΠΎΠ±Π΅ΠΊΡΠΈ ΠΎΡ ΡΠ΅Π°Π»Π½ΠΈΡ ΡΠ²ΡΡ Π² Π³Π»Π°Π²Π°ΡΠ° ΡΠΈ. ΠΡΠ² Π²ΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠΈ ΡΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΡΠ±Π»ΡΡΠΊΠ²Π°, Π΄Π° ΡΠ³Π»ΠΎΠ±ΡΠ²Π° Π½ΠΎΠ²ΠΈ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΈ ΠΎΡ ΡΡΡ ΠΈ Π΄Π° Π³ΠΈ ΡΠ°Π·Π³Π»ΠΎΠ±ΡΠ²Π° ΠΏΠΎ ΡΡΡΠΈΡ Π½Π°ΡΠΈΠ½. ΠΡΠ΅Π΄ΡΡΠ°Π²Π΅ΡΠ΅ ΡΠΈ ΡΡΠ°Ρ ΠΌΠΎΠ΄Π΅Π» ΠΊΠΎΠ»Π°. ΠΡΠ² Π²Π°ΡΠ΅ΡΠΎ Π²ΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ Π²ΡΠ°ΡΠ°ΡΠ°, Π΄Π° ΡΠ°Π·Π²ΠΈΠ΅ΡΠ΅ ΡΠ°ΠΏΠΈΡΠ΅ΡΠΈΡΡΠ° Π½Π° Π²ΡΠ°ΡΠ°ΡΠ° ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ°ΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈΡΠ΅ Π·Π° ΠΏΠΎΠ²Π΄ΠΈΠ³Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ°, Π²ΡΡΡΠ΅ Π² ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠΌΠ° Π·ΡΠ±Π½ΠΈ ΠΊΠΎΠ»Π΅Π»Π°. ΠΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΠΌΠ°ΡΠΈΠ½Π°ΡΠ° Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, Π² Π΅Π΄ΠΈΠ½ "ΡΠΏΠΈΡΡΠΊ". ΠΠΎΠ½Π΅ βΡΠΎΠ²Π΅ΠΊΡΡ-ΠΌΠ°ΠΉΠΌΡΠ½Π°β Π½Π΅ ΠΌΠΎΠΆΠ΅.
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Ρ ΠΎΡΠ°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠΈ ΡΠ°Π·Π»Π°Π³Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΈΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π½Π° Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΠ»ΠΎΠΆΠ½ΠΈ ΠΈ ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΡΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ°Π·Π»ΠΎΠΆΠ΅Π½ ΠΏΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½Π°ΡΠΈΠ½ΠΈ: Π² ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ Π²ΡΠ·Π΄ΡΡ ΠΎΠ²ΠΎΠ΄ΡΡ Π²Π»ΠΈΠ·Π° Π²ΡΠ² Π²ΡΠ°ΡΠ°ΡΠ°, Π° Π² ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΡΠ΅ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ ΠΏΠΎΠ²ΡΠ΅Π΄Π° Π² Π΅Π»Π΅ΠΊΡΡΠΎΠ½ΠΈΠΊΠ°ΡΠ° Π½Π° ΠΊΠ»ΡΡΠ°Π»ΠΊΠ°ΡΠ° ΠΏΡΠ΅ΡΠΈ Π½Π° Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠΈ ΡΠ΅ΠΌΠΎΠ½Ρ.
Π‘Π΅Π³Π°, SRP Π΅ ΠΏΡΠΈΠ½ΡΠΈΠΏ, ΠΊΠΎΠΉΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠ²Π° ΠΠΠ Π΄Π° ΡΠ΅ ΡΠ°Π·Π»ΠΎΠΆΠΈ, ΡΠΎΠ΅ΡΡ ΠΊΡΠ΄Π΅ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Π½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡ.
Π’ΠΎΠΉ ΠΊΠ°Π·Π²Π°, ΡΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΡΠ°Π·Π»ΠΎΠΆΠΈ ΡΠΏΠΎΡΠ΅Π΄ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π½Π° ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° βΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΡΠ°β, ΡΠΎΠ΅ΡΡ ΡΠΏΠΎΡΠ΅Π΄ Π·Π°Π΄Π°ΡΠΈΡΠ΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ.
ΠΠ° ΡΠ΅ ββΠ²ΡΡΠ½Π΅ΠΌ ΠΊΡΠΌ ΠΏΠΈΠ΅Π½Π΅ΡΠΎ ΠΈ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΠΎΠ²Π΅ΠΊΡΡ-ΠΌΠ°ΠΉΠΌΡΠ½Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π·Π»Π°Π³Π°Π½Π΅ΡΠΎ:
- ΠΠΎΠ΄ΡΡ ΡΡΠ°Π½Π° ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ΅Π½ Π½Π° Π²ΡΡΠΊΠΎ Π½ΠΈΠ²ΠΎ
- ΠΠΎΠ΄ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠ° Π½Π°Π²Π΅Π΄Π½ΡΠΆ (Π²ΡΠ΅ΠΊΠΈ ΠΏΠΈΡΠ΅ ΠΎΡΠ΄Π΅Π»Π΅Π½ Π΅Π»Π΅ΠΌΠ΅Π½Ρ)
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π΅ ΠΎΠΏΡΠΎΡΡΠ΅Π½ΠΎ - ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΠΎ-ΠΏΡΠΎΡΡ Π΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΡΡ, ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ ΡΠ΅ ΡΠ΅ΡΡΠ²Π°
- ΠΠΎΡΠ²ΡΠ²Π° ΡΠ΅ ΡΡΡΡΠ°Π²Π½ΠΎΡΡΡΠ° Π½Π° ΠΊΠΎΠ΄Π° - ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ DrinkUpOperation Π΄ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΏΡΠΈ ΠΊΠΎΡΡΠΎ ΠΏΠΈΡΠ½ΠΈΡΠ° ΠΈΠ·Π»ΠΈΠ²Π° ΡΠ΅ΡΠ½ΠΎΡΡ ΠΏΠΎΠ΄ ΠΌΠ°ΡΠ°ΡΠ°. ΠΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Π΅ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° ΠΏΠΎ Π½Π°Π»ΠΈΠ²Π°Π½Π΅ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΏΡΠΈ ΠΊΠΎΡΡΠΎ ΡΠΌΠ΅ΡΠ²Π°ΡΠ΅ Π²ΠΈΠ½ΠΎ ΠΈ Π²ΠΎΠ΄Π° ΠΈΠ»ΠΈ Π²ΠΎΠ΄ΠΊΠ° ΠΈ Π±ΠΈΡΠ°. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π±ΠΈΠ·Π½Π΅Ρ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π²ΡΠΈΡΠΊΠΎ, Π±Π΅Π· Π΄Π° Π΄ΠΎΠΊΠΎΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ΄Π° Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° Π’ΠΈΠΏΠΏΠ»Π΅Ρ.ΠΠΊΡ.
- ΠΡ ΡΠ΅Π·ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ³ΡΠ½Π΅ΡΠ΅ Π»Π°ΠΊΠΎΠΌΠ½ΠΈΠΊΠ° (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠ°ΠΌΠΎ TakeBitOperation), ΠΠ»ΠΊΠΎΡ ΠΎΠ»ΠΈΠΊ (ΡΠ°ΠΌΠΎ Ρ ΡΠΏΠΎΡΡΠ΅Π±Π° DrinkUpOperation Π½Π°ΠΏΡΠ°Π²ΠΎ ΠΎΡ Π±ΡΡΠΈΠ»ΠΊΠ°ΡΠ°) ΠΈ ΠΎΡΠ³ΠΎΠ²Π°ΡΡΡ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈ Π±ΠΈΠ·Π½Π΅Ρ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ.
(Π, ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΠ΅ ΡΠΎΠ²Π° Π²Π΅ΡΠ΅ Π΅ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π½Π° OCP ΠΈ Π°Π· Π½Π°ΡΡΡΠΈΡ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠ°Π·ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ)
Π, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, ΠΌΠΈΠ½ΡΡΠΈΡΠ΅:
- Π©Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠΈΠΏΠΎΠ²Π΅.
- ΠΠΈΡΠ½ΠΈΡΠ°ΡΠ° ΠΏΠΈΠ΅ Π·Π° ΠΏΡΡΠ²ΠΈ ΠΏΡΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°ΡΠ° ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΈΠ½Π°ΡΠ΅ Π±ΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈΠ».
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ 2. ΠΠ΄ΠΈΠ½Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΎΡΡ.
ΠΠΎΠ·Π²ΠΎΠ»Π΅ΡΠ΅, Π³ΠΎΡΠΏΠΎΠ΄Π°! ΠΠ»Π°ΡΡΡ ΠΏΠΎ ΠΏΠΈΠ΅Π½Π΅ ΡΡΡΠΎ Π½ΠΎΡΠΈ Π΅Π΄Π½Π° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ - ΡΠΎΠΉ ΠΏΠΈΠ΅! Π ΠΊΠ°ΡΠΎ ΡΡΠ»ΠΎ Π΄ΡΠΌΠ°ΡΠ° βΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡβ Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π΅ΡΡΠ½ΠΎ ΠΏΠΎΠ½ΡΡΠΈΠ΅. ΠΡΠΊΠΎΠΉ Π΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ΅Π½ Π·Π° ΡΡΠ΄Π±Π°ΡΠ° Π½Π° ΡΠΎΠ²Π΅ΡΠ΅ΡΡΠ²ΠΎΡΠΎ ΠΈ Π½ΡΠΊΠΎΠΉ Π΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ΅Π½ Π·Π° ΠΎΡΠ³Π»Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΈΠ½Π³Π²ΠΈΠ½ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ Π±ΡΡ Π° ΠΏΡΠ΅ΠΎΠ±ΡΡΠ½Π°ΡΠΈ Π½Π° ΠΏΠΎΠ»ΡΡΠ°.
ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΄Π²Π΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΡ Π½Π° ΠΏΠΎΠΈΠ»ΠΊΠ°ΡΠ°. ΠΡΡΠ²ΠΈΡΡ, ΡΠΏΠΎΠΌΠ΅Π½Π°Ρ ΠΏΠΎ-Π³ΠΎΡΠ΅, ΡΡΠ΄ΡΡΠΆΠ° ΡΡΠΈ ΠΊΠ»Π°ΡΠ° - Π½Π°Π»ΠΈΠ²Π°Π½Π΅, Π½Π°ΠΏΠΈΡΠΊΠ° ΠΈ Π·Π°ΠΊΡΡΠΊΠ°.
ΠΡΠΎΡΠΈΡΡ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ ΡΡΠ΅Π· ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° βΠΠ°ΠΏΡΠ΅Π΄ ΠΈ ΡΠ°ΠΌΠΎ Π½Π°ΠΏΡΠ΅Π΄β ΠΈ ΡΡΠ΄ΡΡΠΆΠ° ΡΡΠ»Π°ΡΠ° Π»ΠΎΠ³ΠΈΠΊΠ° Π² ΠΌΠ΅ΡΠΎΠ΄Π° Π°ΠΊΡ:
//ΠΠ΅ ΡΡΠ°ΡΡΡΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π° ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΡΡΡΠ΅ ΡΡΠ΅ΡΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π½ΡΠΊΡ
Ρ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 - ΠΏΡΠΈΠ½ΡΠΈΠΏΡΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΠ½Π°ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΎΡΡ.
SCP Π·Π°ΡΠ²ΡΠ²Π°, ΡΠ΅ "ΠΠ΄ΠΈΠ½ ΠΌΠΎΠ΄ΡΠ» ΠΈΠΌΠ° Π΅Π΄Π½Π° ΠΈ ΡΠ°ΠΌΠΎ Π΅Π΄Π½Π° ΠΏΡΠΈΡΠΈΠ½Π° Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ". Π’ΠΎΠ΅ΡΡ, βΠΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΡΠ° Π΅ ΠΏΡΠΈΡΠΈΠ½Π° Π·Π° ΠΏΡΠΎΠΌΡΠ½Π°β.
(ΠΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΠ΅ ΠΌΠΎΠΌΡΠ΅ΡΠ°ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΈΠ·ΠΌΠΈΡΠ»ΠΈΠ»ΠΈ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΡΠ° Π±ΠΈΠ»ΠΈ ΡΠ²Π΅ΡΠ΅Π½ΠΈ Π² ΡΠ΅Π»Π΅ΠΏΠ°ΡΠΈΡΠ½ΠΈΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ Π½Π° ΡΠΎΠ²Π΅ΠΊΠ°-ΠΌΠ°ΠΉΠΌΡΠ½Π°)
Π‘Π΅Π³Π° Π²ΡΠΈΡΠΊΠΎ ΡΠΈ ΠΈΠ΄Π²Π° Π½Π° ΠΌΡΡΡΠΎΡΠΎ. ΠΡΠ΄Π΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΈΡΠ΅ Π·Π° Π½Π°Π»ΠΈΠ²Π°Π½Π΅, ΠΏΠΈΠ΅Π½Π΅ ΠΈ Π»Π΅ΠΊΠ° Π·Π°ΠΊΡΡΠΊΠ°, Π½ΠΎ Π² ΡΠ°ΠΌΠ°ΡΠ° ΠΏΠΎΠΈΠ»ΠΊΠ° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌ ΡΠ°ΠΌΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΈ ΡΡΡΡΠ°Π²Π° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΡΠΎ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈΠΌ Π·Π°ΠΊΡΡΠΊΠ°ΡΠ° ΠΏΡΠ΅Π΄ΠΈ ΠΏΠΈΠ΅Π½Π΅ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ΅ΡΠ΅Π½Π΅ΡΠΎ Π½Π° ΡΠΎΡΡ.
ΠΡΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° βΠΠ°ΠΏΡΠ΅Π΄ ΠΈ ΡΠ°ΠΌΠΎ Π½Π°ΠΏΡΠ΅Π΄β Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ ΡΠ°ΠΌΠΎ Π² ΠΌΠ΅ΡΠΎΠ΄Π° Π°ΠΊΡ. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌΠΎ ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ° ΠΌΠ°Π»ΠΊΠΎ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈ ΡΡΠ΄ΠΊΠΎ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ, Π½ΠΎ ΡΠ΅ΡΡΠΎ Π·Π°Π²ΡΡΡΠ²Π° Ρ ΡΠΆΠ°ΡΠ½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΎΡ 500 ΡΠ΅Π΄Π° Π²ΡΠ΅ΠΊΠΈ, Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈΠ·ΡΠ°Π·ΠΈ Π°ΠΊΠΎ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π ΡΡΠΈΡ Π΄Π° ΡΠ΅ ΠΏΡΠΈΡΡΠ΅Π΄ΠΈΠ½ΠΈ ΠΊΡΠΌ ΠΠΠ’Π.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ 3. ΠΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅.
ΠΠΈΠ΅ΡΠΈΡΠ΅ ΡΠ΅ΡΡΠΎ Π½Π΅ ΡΠ°Π·Π±ΠΈΡΠ°Ρ Π·Π°ΡΠΎ ΡΠ° ΡΠ΅ ΡΡΠ±ΡΠ΄ΠΈΠ»ΠΈ Π² ΡΡΠΆΠ΄ Π°ΠΏΠ°ΡΡΠ°ΠΌΠ΅Π½Ρ ΠΈΠ»ΠΈ ΠΊΡΠ΄Π΅ Π΅ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈΡΡ ΠΈΠΌ ΡΠ΅Π»Π΅ΡΠΎΠ½. ΠΡΠ΅ΠΌΠ΅ Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ.
ΠΠ΅ΠΊΠ° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Π΄Π° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°ΠΌΠ΅ Ρ ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΈΠ·Π»ΠΈΠ²Π°Π½Π΅:
class PourOperation: IOperation{
PourOperation(ILogger log /*....*/){/*...*/}
//...
void Do(){
_log.Log($"Before pour with {_hand} and {_bottle}");
//Pour business logic ...
_log.Log($"After pour with {_hand} and {_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{
//... business logic
_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 ΡΠ΅Π΄Π° Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅:
- ΠΡΠΈΠ΄Π΅ΡΠ΅ Π½Π° 1C ΠΈ ΡΡΠ·Π΄Π°ΠΉΡΠ΅ Π°ΠΊΠ°ΡΠ½Ρ
- Π‘ ΡΠΎΠ·ΠΈ Π°ΠΊΠ°ΡΠ½Ρ ΠΎΡΠΈΠ΄Π΅ΡΠ΅ Π² ΠΌΠΎΠ΄ΡΠ»Π° Π·Π° ΠΏΠ»Π°ΡΠ°Π½Π΅ ΠΈ Π³ΠΎ ΡΡΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΌ
- ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Π΄Π°Π»ΠΈ Π½Π° Π³Π»Π°Π²Π½ΠΈΡ ΡΡΡΠ²ΡΡ Π½Π΅ Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ Π°ΠΊΠ°ΡΠ½Ρ Ρ ΡΠ°ΠΊΡΠ² Π°ΠΊΠ°ΡΠ½Ρ
- Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ² Π°ΠΊΠ°ΡΠ½Ρ
- ΠΠΎΠ±Π°Π²Π΅ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΡΠ° Π² ΠΌΠΎΠ΄ΡΠ»Π° Π·Π° ΠΏΠ»Π°ΡΠ°Π½Π΅ ΠΈ Π½ΠΎΠΌΠ΅ΡΠ° 1c ΠΊΡΠΌ ΡΡΠ»ΡΠ³Π°ΡΠ° Π·Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΎΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΡΠ°
- ΠΠΎΠ±Π°Π²Π΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π°ΠΊΠ°ΡΠ½ΡΠ° ΠΊΡΠΌ ΡΠ°Π·ΠΈ ΡΠ°Π±Π»ΠΈΡΠ°
- Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠΌΠ΅Ρ Π½Π° ΡΠΎΡΠΊΠ° Π·Π° ΡΠΎΠ·ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ Π² ΡΡΠ»ΡΠ³Π°ΡΠ° Π·Π° ΡΠΎΡΠΊΠΈ. ΠΡΠ΅Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° ΡΠΌΠ΅ΡΠΊΠ°ΡΠ° ΡΠΈ Π² 1c Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ»ΡΠ³Π°.
Π Π² ΡΠΎΠ·ΠΈ ΡΠΏΠΈΡΡΠΊ ΠΈΠΌΠ°ΡΠ΅ ΠΎΡΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 10 Π±ΠΈΠ·Π½Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠΆΠ°ΡΠ½Π° ΡΠ²ΡΡΠ·Π°Π½ΠΎΡΡ. ΠΠΎΡΡΠΈ Π²ΡΠ΅ΠΊΠΈ ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ ΠΎΠ±Π΅ΠΊΡΠ° Π½Π° Π°ΠΊΠ°ΡΠ½ΡΠ°. ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΡ Π½ΠΎΠΌΠ΅Ρ Π½Π° ΡΠΎΡΠΊΠ°ΡΠ° ΠΈ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π±ΡΡ Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ ΠΏΡΠΈ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°ΡΠ° ΠΎΡ ΠΎΠ±Π°ΠΆΠ΄Π°Π½ΠΈΡΡΠ°.
Π‘Π»Π΅Π΄ Π΅Π΄ΠΈΠ½ ΡΠ°Ρ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ ΡΡΠΏΡΡ ΠΌΠ΅ Π΄Π° ΡΠ°Π·Π΄Π΅Π»ΠΈΠΌ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½ΠΈΡ ΠΊΠΎΠ΄ ΠΈ Π½ΡΠΊΠΎΠΈ ΠΎΡ Π½ΡΠ°Π½ΡΠΈΡΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π°ΠΊΠ°ΡΠ½Ρ Π² ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ/ΠΊΠ»Π°ΡΠΎΠ²Π΅. ΠΠ΅ΡΠΎΠ΄ΡΡ Π½Π° ΠΠΎΠ³ Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΏΠΎ-Π»Π΅ΡΠ΅Π½, Π½ΠΎ Π±ΡΡ Π° ΠΎΡΡΠ°Π½Π°Π»ΠΈ 100 ΡΠ΅Π΄Π° ΠΊΠΎΠ΄, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΈΡΠΊΠ°Ρ Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ°Π·ΠΏΠ»Π΅ΡΠ΅Π½ΠΈ.
Π‘Π°ΠΌΠΎ ΡΠ»Π΅Π΄ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π΄Π½ΠΈ ΡΡΠ°Π½Π° ΡΡΠ½ΠΎ, ΡΠ΅ ΡΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠΎΠ·ΠΈ βΠ»Π΅ΠΊβ ΠΌΠ΅ΡΠΎΠ΄ Π΅ Π±ΠΈΠ·Π½Π΅Ρ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ. Π ΡΠ΅ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΅ Π΄ΠΎΡΡΠ° ΡΠ»ΠΎΠΆΠ½ΠΎ. Π ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠΏΠΈΡΡΡ Π΄Π° ΡΠ΅ ΡΠ°Π·Π±ΠΈΠ΅ ΡΠΎΠ·ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π½Π° ΠΏΠ°ΡΡΠ΅ΡΠ° ΡΠ΅ Π½Π°ΡΡΡΠΈ SRP, Π° Π½Π΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΡΠΎ.
Π€ΠΎΡΠΌΠ°Π»ΠΈΠ·ΡΠΌ.
ΠΡΠ΅ΠΌΠ΅ Π΅ Π΄Π° ΠΎΡΡΠ°Π²ΠΈΠΌ Π½Π°ΡΠΈΡ ΠΏΠΈΡΠ½ΠΈΡΠ° Π½Π° ΠΌΠΈΡΠ°. ΠΠ·ΡΡΠΈΠΉ ΡΡΠ»Π·ΠΈΡΠ΅ ΡΠΈ - ΡΡΡ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ ΡΠ΅ ΡΠ΅ Π²ΡΡΠ½Π΅ΠΌ ΠΊΡΠΌ Π½Π΅Π³ΠΎ Π½ΡΠΊΠΎΠΉ Π΄Π΅Π½. Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° ΡΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Π·Π½Π°Π½ΠΈΡΡΠ° ΠΎΡ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ.
Π€ΠΎΡΠΌΠ°Π»ΠΈΠ·ΡΠΌ 1. ΠΠ΅ΡΠΈΠ½ΠΈΡΠΈΡ Π½Π° SRP
- Π Π°Π·Π΄Π΅Π»Π΅ΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ ΡΠ°ΠΊΠ°, ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΡΡΡ Π΄Π° ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π·Π° Π΅Π΄Π½ΠΎ Π½Π΅ΡΠΎ.
- ΠΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΡΠ° ΠΎΠ·Π½Π°ΡΠ°Π²Π° βΠΏΡΠΈΡΠΈΠ½Π° Π·Π° ΠΏΡΠΎΠΌΡΠ½Π°β. Π’ΠΎΠ΅ΡΡ, Π²ΡΠ΅ΠΊΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΈΠΌΠ° ΡΠ°ΠΌΠΎ Π΅Π΄Π½Π° ΠΏΡΠΈΡΠΈΠ½Π° Π·Π° ΠΏΡΠΎΠΌΡΠ½Π°, ΠΎΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ°.
- ΠΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ°. ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΈΡΠ°Ρ. ΠΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ° Π½Π°Π±Π»ΠΈΠ·ΠΎ.
Π€ΠΎΡΠΌΠ°Π»ΠΈΠ·ΡΠΌ 2. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ Π·Π° ΡΠ°ΠΌΠΎΠΏΡΠΎΠ²Π΅ΡΠΊΠ°.
ΠΠ΅ Π²ΠΈΠ΄ΡΡ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° SRP. ΠΠΎ ΠΈΠΌΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ:
1) ΠΠ°ΠΏΠΈΡΠ°ΠΉΡΠ΅ ΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠ°Π²ΠΈ ΡΠΎΠ·ΠΈ ΠΊΠ»Π°Ρ/ΠΌΠ΅ΡΠΎΠ΄/ΠΌΠΎΠ΄ΡΠ»/ΡΡΠ»ΡΠ³Π°. ΡΡΡΠ±Π²Π° Π΄Π° ΠΌΡ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈΡΠ΅ Ρ ΠΏΡΠΎΡΡΠ° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡ. ( ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠΈ
ΠΎΠ±ΡΡΠ½Π΅Π½ΠΈΡ
ΠΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΎΠ±Π°ΡΠ΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈ ΠΏΡΠΎΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅
2) ΠΠΎΡΠΈΠ³ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π³ΡΠ΅ΡΠΊΠ° ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΡ Π·Π°ΡΡΠ³Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ Π±ΡΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅/ΠΊΠ»Π°ΡΠΎΠ²Π΅. Π ΠΈΠ΄Π΅Π°Π»Π½ΠΈΡ ΡΠ»ΡΡΠ°ΠΉ - Π΅Π΄ΠΈΠ½.
ΠΎΠ±ΡΡΠ½Π΅Π½ΠΈΡ
Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΡΠ° (Π·Π° ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ»ΠΈ Π³ΡΠ΅ΡΠΊΠ°) Π΅ ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠ°Π½Π° Π² Π΅Π΄ΠΈΠ½ ΡΠ°ΠΉΠ»/ΠΊΠ»Π°Ρ, Π²ΠΈΠ΅ Π·Π½Π°Π΅ΡΠ΅ ΡΠΎΡΠ½ΠΎ ΠΊΡΠ΄Π΅ Π΄Π° ΡΡΡΡΠΈΡΠ΅ ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°ΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: ΡΡΠ½ΠΊΡΠΈΡΡΠ° Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π·Π° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΡΠΎΠΌΡΠ½Π° ΡΠ°ΠΌΠΎ Π½Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΎΡΠ°. ΠΡΠΌΠ° Π½ΡΠΆΠ΄Π° Π΄Π° ΠΌΠΈΠ½Π°Π²Π°ΡΠ΅ ΠΏΡΠ΅Π· ΠΎΡΡΠ°Π½Π°Π»Π°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΠΊΠΎΠ΄Π°.
ΠΡΡΠ³ ΠΏΡΠΈΠΌΠ΅Ρ Π΅ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ² UI ΠΊΠΎΠ½ΡΡΠΎΠ», ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅. ΠΠΊΠΎ ΡΠΎΠ²Π° Π²ΠΈ ΠΏΡΠΈΠ½ΡΠΆΠ΄Π°Π²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ 10 ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠ° ΠΈ 15 ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠΎΡΠ°, ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΠ΅ ΠΏΡΠ΅ΠΊΠ°Π»ΡΠ²Π°ΡΠ΅.
3) ΠΠΊΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΡΠ°Π±ΠΎΡΡΡ Π²ΡΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ, ΡΠΎΠ³Π°Π²Π° Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΠ° ΠΎΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ Π½Π° ΡΠ»ΠΈΠ²Π°Π½Π΅, Ρ.Π΅. Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΠ° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡΠΈ ΡΠ°ΠΉΠ»/ΠΊΠ»Π°Ρ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π°.
ΠΎΠ±ΡΡΠ½Π΅Π½ΠΈΡ
ΠΠΊΠΎ ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π½ΠΎΠ²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ βΠΠ°Π»Π΅ΠΉΡΠ΅ Π²ΠΎΠ΄ΠΊΠ° ΠΏΠΎΠ΄ ΠΌΠ°ΡΠ°ΡΠ°β ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°ΡΠ΅Π³Π½Π΅ΡΠ΅ Π΄ΡΡΠ²ΠΎΡΠ΅ΠΊΠ°ΡΠ°, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° Π·Π° ΠΏΠΈΠ΅Π½Π΅ ΠΈ Π½Π°Π»ΠΈΠ²Π°Π½Π΅, ΡΠΎΠ³Π°Π²Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΠ΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΠΈΡΠ΅ ΡΠ° ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈ ΠΊΡΠΈΠ²ΠΎ. Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΠΎΠ²Π° Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΠΌΠ΅ Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΠΌ ΡΠ°Π·ΠΈ ΡΠΈΡΡΠ°.
4) ΠΠΎΠ³Π°ΡΠΎ Π²ΠΈ Π±ΡΠ΄Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ ΡΡΠΎΡΠ½ΡΠ²Π°Ρ Π²ΡΠΏΡΠΎΡ ΠΎΡΠ½ΠΎΡΠ½ΠΎ Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° (ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ), Π²ΠΈΠ΅ Π²Π»ΠΈΠ·Π°ΡΠ΅ ΡΡΡΠΎΠ³ΠΎ Π² Π΅Π΄ΠΈΠ½ ΠΊΠ»Π°Ρ/ΡΠ°ΠΉΠ» ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠ°ΠΌΠΎ ΠΎΡ ΡΠ°ΠΌ.
ΠΎΠ±ΡΡΠ½Π΅Π½ΠΈΡ
Π€ΡΠ½ΠΊΡΠΈΠΈΡΠ΅, ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° ΠΈΠ»ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ ΡΠ° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎ, Π²ΡΡΠΊΠ° Π½Π° Π΅Π΄Π½ΠΎ ΠΌΡΡΡΠΎ, Π° Π½Π΅ ΡΠ°Π·ΠΏΡΡΡΠ½Π°ΡΠΈ Ρ ΡΠ»Π°Π³ΠΎΠ²Π΅ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΊΠΎΠ΄Π°.
5) ΠΠ°ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π΅ ΡΡΠ½ΠΎ.
ΠΎΠ±ΡΡΠ½Π΅Π½ΠΈΡ
ΠΠ°ΡΠΈΡΡ ΠΊΠ»Π°Ρ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ΅Π½ Π·Π° Π΅Π΄Π½ΠΎ Π½Π΅ΡΠΎ ΠΈ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΡΠ° Π΅ ΠΎΡΡΠ°Π·Π΅Π½Π° Π² ΠΈΠΌΠ΅ΡΠΎ ΠΌΡ
AllManagersManagerService - Π½Π°ΠΉ-Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΊΠ»Π°Ρ ΠΠΎΠ³
LocalPayment - Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π½Π΅
Π€ΠΎΡΠΌΠ°Π»ΠΈΠ·ΡΠΌ 3. ΠΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Occam-first.
Π Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΡΠΎΠ²Π΅ΠΊΡΡ-ΠΌΠ°ΠΉΠΌΡΠ½Π° Π½Π΅ Π·Π½Π°Π΅ ΠΈ Π½Π΅ ΡΡΠ΅ΡΠ° Π²ΡΠΈΡΠΊΠΈ ΡΡΠ½ΠΊΠΎΡΡΠΈ Π½Π° ΡΠ΅ΡΠ°Π²Π°Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ Π³ΡΠ΅ΡΠΊΠ°. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ ΠΏΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½Π°ΡΠΈΠ½ΠΈ:
- ΠΠ°ΠΏΡΠ°Π²Π΅ΡΠ΅ ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ ΡΠ²ΡΡΠ΄Π΅ Π³ΠΎΠ»Π΅ΠΌΠΈ, ΠΊΠ°ΡΠΎ ΠΎΠ±Π΅Π΄ΠΈΠ½ΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΠΈ
- ΠΡΠ΅ΡΠΎΡΠΌΡΠ»ΠΈΡΠ°Π½Π΅ ΡΡΠ΅Π· ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π΅Π΄Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅
- ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ
ΠΠ°ΠΆΠ½ΠΎ Π΅ Π΄Π° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎΡΠΎ: βΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ Π΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π³ΠΎΠ»ΡΠΌΠ° Π³ΡΠ΅ΡΠΊΠ°β ΠΈΠ»ΠΈ βΠ°ΠΊΠΎ Π½Π΅ ΡΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΈ, Π½Π΅ Π³ΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠΉΡΠ΅β. ΠΠΊΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π°ΡΠΈΡΡ ΠΊΠ»Π°Ρ ΡΡΠ΄ΡΡΠΆΠ° Π΄Π²Π΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΠΈ, ΡΠΎΠ³Π°Π²Π° ΡΠΎΠΉ Π²ΡΠ΅ ΠΎΡΠ΅ Π΅ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ Π½Π° Π΄Π²Π΅ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ ΠΊΠΎΠ΄. Π‘Π³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°ΡΠ° ΠΎΡ ΠΏΠ°ΡΡΠ΅ΡΠ° ΡΡΡΠΊΠ»ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΅ ΠΏΠΎ-ΡΡΡΠ΄Π½ΠΎ ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠ°Π·ΠΏΡΡΡΠ½Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π² Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°ΠΉΠ»Π° ΠΈ Π»ΠΈΠΏΡΠ°ΡΠ° Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ ΠΊΠΎΠ΄.
ΠΡΠ΅ΠΌΠ΅ Π΅ Π΄Π° Π³ΠΎ Π½Π°ΡΠ΅ΡΠ΅ΠΌ Π΄Π΅Π½
ΠΠ±Ρ Π²Π°ΡΡΡ Π½Π° SRP Π½Π΅ ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π° Π΄ΠΎ OOP ΠΈ SOLID. ΠΡΠΈΠ»Π°Π³Π° ΡΠ΅ Π·Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ, ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ»Π°ΡΠΎΠ²Π΅, ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΌΠΈΠΊΡΠΎΡΡΠ»ΡΠ³ΠΈ ΠΈ ΡΡΠ»ΡΠ³ΠΈ. ΠΡΠΈΠ»Π°Π³Π° ΡΠ΅ ΠΊΠ°ΠΊΡΠΎ Π·Π° βfigax-figax-and-prodβ, ΡΠ°ΠΊΠ° ΠΈ Π·Π° βrocket-scienceβ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ°Π²ΠΈ ΡΠ²Π΅ΡΠ° ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π΄ΠΎΠ±ΡΡ Π½Π°Π²ΡΡΠΊΡΠ΄Π΅. ΠΠΊΠΎ ΡΠ΅ Π·Π°ΠΌΠΈΡΠ»ΠΈΡΠ΅, ΡΠΎΠ²Π° Π΅ ΠΏΠΎΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π½Π° ΡΡΠ»ΠΎΡΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΡΡΠ²ΠΎ. ΠΠ°ΡΠΈΠ½Π½ΠΎΡΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΡΡΠ²ΠΎ, ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ Π²ΡΡΡΠ½ΠΎΡΡ Π²ΡΠΈΡΠΊΠΈ ΡΠ»ΠΎΠΆΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΡΠ° ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ΠΈ ΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΠΈ βΠ½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎΡΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π΅β Π»ΠΈΡΠ°Π²Π° Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠΈΡΠ΅ ΠΎΡ Π³ΡΠ²ΠΊΠ°Π²ΠΎΡΡ, βΡΠ²ΡΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π΅ΡΠΎβ Π»ΠΈΡΠ°Π²Π° Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠΈΡΠ΅ ΠΎΡ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡ, Π° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡΠ΅ Π³ΡΠ°Π½ΠΈΡΠΈ Π³ΠΈ Π»ΠΈΡΠ°Π²Π°Ρ ΠΎΡ ΡΠ°Π·ΡΠΌ ΠΈ ΡΠΏΠΎΠΊΠΎΠΉΡΡΠ²ΠΈΠ΅.
SRP Π½Π΅ Π΅ ΠΈΠ·ΠΌΠΈΡΠ»Π΅Π½ΠΎ ΠΎΡ ΠΏΡΠΈΡΠΎΠ΄Π°ΡΠ° ΠΈ Π½Π΅ Π΅ ΡΠ°ΡΡ ΠΎΡ ΡΠΎΡΠ½Π°ΡΠ° Π½Π°ΡΠΊΠ°. Π’ΠΎΠΉ ΠΈΠ·Π»ΠΈΠ·Π° ΠΎΡ Π½Π°ΡΠΈΡΠ΅ Π±ΠΈΠΎΠ»ΠΎΠ³ΠΈΡΠ½ΠΈ ΠΈ ΠΏΡΠΈΡ ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ.Π’ΠΎΠ²Π° Π΅ ΠΏΡΠΎΡΡΠΎ Π½Π°ΡΠΈΠ½ Π΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΠΌΠ΅ ΠΈ ΡΠ°Π·Π²ΠΈΠ²Π°ΠΌΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΌΠΎΠ·ΡΠΊΠ° Π½Π° ΡΠΎΠ²Π΅ΠΊΠ°-ΠΌΠ°ΠΉΠΌΡΠ½Π°. Π’ΠΎΠΉ Π½ΠΈ ΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊ Π΄Π° ΡΠ°Π·Π»ΠΎΠΆΠΈΠΌ Π΅Π΄Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΡΠΈΠ³ΠΈΠ½Π°Π»Π½Π°ΡΠ° ΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΊΠ° ΠΈΠ·ΠΈΡΠΊΠ²Π° Π΄ΠΎΡΡΠ° ΡΠ΅Π»Π΅ΠΏΠ°ΡΠΈΡ, Π½ΠΎ ΡΠ΅ Π½Π°Π΄ΡΠ²Π°ΠΌ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π΄Π° ΠΈΠ·ΡΠΈΡΡΠΈ ΡΠ°ΡΡ ΠΎΡ Π΄ΠΈΠΌΠ½Π°ΡΠ° Π·Π°Π²Π΅ΡΠ°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com