Feature toggling Ρ‡Ρ‚ΠΎ это

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ feature toggle ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΌΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΡ‘Ρ€ΠΆΠ΅ΠΉ ΠΈ Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡƒΡ‰ΠΈΡ… Π²Π΅Ρ‚ΠΎΠΊ?

Допустим, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΈΡ‡Ρƒ, Π½ΠΎ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° понравится ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ, ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ способ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎ Π΅Ρ‘ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ. Или ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π½Π°Π΄ Π½ΠΎΠ²ΠΎΠΉ большой Ρ„ΠΈΡ‡Π΅ΠΉ ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ монстр-ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². Или просто хочСтся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ сайта Π»Π΅Π³ΠΊΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ. Как ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ всС эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚ΠΎΠΌ.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ†ΠΈΠΊΠ»Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ вашСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ длятся ΠΏΠΎ Π΄Π²Π΅ Π½Π΅Π΄Π΅Π»ΠΈ, Π° рСализация Π½ΠΎΠ²ΠΎΠΉ Ρ„ΠΈΡ‡ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ 3 мСсяца Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд, Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ схСмы дСйствий:

ИспользованиС feature switcher-ΠΎΠ² для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ

Вакая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° встрСчаСтся Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ довольно часто ΠΈ Π΅ΡΡ‚ΡŒ изящноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ Π²Π·ΡΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅Π΅ ΠΎΡ‚ описанных Π²Ρ‹ΡˆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² β€” feature toggle ΠΈΠ»ΠΈ feature switcher.

По сути, feature switcher β€” это boolean Ρ„Π»Π°Π³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ хранится Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Ρ‚Π° ΠΈΠ»ΠΈ иная Ρ„ΠΈΡ‡Π° ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого Ρ„Π»Π°Π³Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΎ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ. Удобство использования feature switcher-ΠΎΠ² Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ бизнСс-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π²ΠΎ врСмя runtime Ρ‡Π΅Ρ€Π΅Π· панСль администратора Π±Π΅Π· нСобходимости Π·Π°Π½ΠΎΠ²ΠΎ Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования feature toggle Π½Π° языкС Java:

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ configurationManager β€” это класс, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ feature switcher-Π° ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ Π΅Π³ΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ.

Π’Π°ΠΊΠΆΠ΅, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ feature switcher-ΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ/ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ элСмСнты Π½Π° Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π΅. Для этого придСтся ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„Π»Π°Π³Π° Π² Model ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π° View ΠΊΠ°ΠΊ это ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

ПослС Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ HTML ΠΊΠΎΠ΄Π°:

Π’ΠΈΠ΄Ρ‹ feature switcher-ΠΎΠ²

ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ использования feature switcher-ΠΎΠ² β€” это лишь ΠΎΠ΄ΠΈΠ½ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ случай использования ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ feature switcher-Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ release toggles. ВсСго Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ 3 Ρ€Π°Π·Π½Ρ‹Ρ… Π²ΠΈΠ΄Π° feature switcher-ΠΎΠ²:

Feature toggling Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Feature toggling Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Feature toggling Ρ‡Ρ‚ΠΎ это. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Feature toggling Ρ‡Ρ‚ΠΎ это. Π€ΠΎΡ‚ΠΎ Feature toggling Ρ‡Ρ‚ΠΎ это

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ использования feature toggle-ΠΎΠ²

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ я Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, Π³Π΄Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ feature toggle-Ρ‹, Ρ‚ΠΎ ΠΊΡ€ΠΎΠΌΠ΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Ρ… достоинств ΠΈΡ… использования я Π½Π°Ρ‡Π°Π» Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, связанныС с Π½ΠΈΠΌΠΈ:

РСшСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· описанных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ

ΠŸΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

Π˜Ρ‚ΠΎΠ³ΠΈ

Feature switcher β€” ΠΎΡ‡Π΅Π½ΡŒ простой ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ монструозных ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Π»Π΅Π³ΠΊΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ повСдСния прилоТСния ΠΈΠ»ΠΈ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°Π·Π½ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ feature toggle-ΠΎΠ².

Однако, стоит Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ этот ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСдостатки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΈ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄, поэтому слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ использования этого ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° ΠΈ пСриодичСски ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ feature switcher-ΠΎΠ² ΠΈ ΠΈΡ… Ρ€Π΅Π²ΠΈΠ·ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈ, ΠΊΠ°ΠΊ слСдствиС, ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΎΡ‚ β€œΠΌΡ‘Ρ€Ρ‚Π²ΠΎΠ³ΠΎβ€ ΠΊΠΎΠ΄Π°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Feature toggle

Feature toggling Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Feature toggling Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Feature toggling Ρ‡Ρ‚ΠΎ это. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Feature toggling Ρ‡Ρ‚ΠΎ это. Π€ΠΎΡ‚ΠΎ Feature toggling Ρ‡Ρ‚ΠΎ это

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ» Ρ€Π΅ΠΏΠΊΡƒ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ, ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚ΡƒΡ‚.

ΠŸΡ€Π΅Π΄Ρ‹ΡΡ‚ΠΎΡ€ΠΈΡ

МнС нравится англоязычный подкаст ΠΏΠΎ iOS-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ iPhreaks, ΠΈ Π² ΠΎΠ΄ΠΈΠ½ прСкрасный ΠΌΠΎΠΌΠ΅Π½Ρ‚ я Π½Π°Π±Ρ€Π΅Π» Π½Π° сосСдний Ρ€ΡƒΠ±Π΅Π²Ρ‹ΠΉ подкаст ΠΏΡ€ΠΎ feature toggles. ВсС Π½Π°Ρ‡Π°Π»ΠΎΡΡŒ с Π»Π΅Π³ΠΊΠΎΠ³ΠΎ наброса ΠΏΡ€ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ стоит Ρ€Π΅Π±Π΅ΠΉΡΠΈΡ‚ΡŒ, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ»ΠΎΡΡŒ ΠΏΡ€ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½Π΅ΠΉΡˆΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ вСдСнию Π²Π΅Ρ‚ΠΎΠΊ TBD ΠΈ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΎΡΡŒ feature toggles.

Π‘Π°ΠΌΠΎ знакомство с послСдним ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ стало для мСня Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΡ‚ΠΊΡ€ΠΎΠ²Π΅Π½ΠΈΠ΅ΠΌ. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° скорСС всСго Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ самому ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Ρ„ΠΈΡ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ нСсколько мСсяцСв Π½Π°Π·Π°Π΄, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ это дСлалось с ΠΌΡƒΠΊΠ°ΠΌΠΈ ΠΈ болью, Π° Ρ‚ΡƒΡ‚ ΠΌΠ½Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ„ΠΈΡ‡ ΠΏΠΎ Ρ‰Π΅Π»Ρ‡ΠΊΡƒ ΠΏΠ°Π»ΡŒΡ†Π΅Π², Π΄Π° Π΅Ρ‰Π΅ ΠΈ Π½Π°ΠΎΠ±Π΅Ρ‰Π°Π»ΠΈ A/B тСстирования с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ„ΠΈΡ‡Π°ΠΌΠΈ.

На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд каТСтся, Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΈΡ‡ΠΈ, для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ довольно просто, Π½ΠΎ Ρ‡Π°Ρ‰Π΅ всСго это Π½Π΅ Ρ‚Π°ΠΊ. ΠšΡƒΡ‡Ρƒ Ρ€Π°Π· встрСчался со случаями, ΠΊΠΎΠ³Π΄Π° Ρ„ΠΈΡ‡Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ Π² ΠΊΡƒΡ‡Π΅ мСст, ΠΎΠ½ΠΈ находятся Π½Π° всСх слоях прилоТСния, Π²Π΄ΠΎΠ³ΠΎΠ½ΠΊΡƒ само ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ„ΠΈΡ‡ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ вСсСлыС сайд-эффСкты.

Π’ процСссС ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ Ρ‡ΠΈΡ‚Π°Π» Ρ€Π°Π·Π½Ρ‹Π΅ источники, Π½ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ стал этот пост Π² Π±Π»ΠΎΠ³Π΅ Π€Π°ΡƒΠ»Π΅Ρ€Π°, Ρ‚Π°ΠΌ Π°Π²Ρ‚ΠΎΡ€ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΉ вопрос с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈΠ· js, я ΠΆΠ΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это ΠΊ рСалиям iOS-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, СстСствСнно, Π½ΠΈΡ‡Π΅Π³ΠΎ тСорСтичСски Π½ΠΎΠ²ΠΎΠ³ΠΎ я Π½Π΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π».

ЗабСгая Π²ΠΏΠ΅Ρ€Π΅Π΄, Π½Π°ΠΏΠΈΡˆΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·ΠΆΠ΅ с этой Ρ‚Π΅ΠΌΠΎΠΉ я выступил Π½Π° локальной РамблСровской ΠΊΠΎΠ½Ρ„Π΅ Rambler.iOS, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΈ Π½Π° питСрской Mobius. Надо ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π· Π½Π° послСднСй Π½Π°Ρ€ΠΎΠ΄ принял довольно ΠΏΡ€ΠΎΡ…Π»Π°Π΄Π½ΠΎ, ΠΈ Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ… Π±Ρ‹Π»ΠΎ ΠΈ ΠΏΡ€ΠΎ банально, ΠΈ ΠΏΡ€ΠΎ Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Π½Π΅ Π½Π°Π΄ΠΎ, Π° Ссли Π½Π°Π΄ΠΎ, Ρ‚ΠΎ дСлаСтся просто. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎ скомканный ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»(ΠΌΡ‹ с ΠΊΠΎΠ»Π»Π΅Π³ΠΎΠΉ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΡƒΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠ΄ΠΈΠ½ слот, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ€ΠΎΠ΄ Π½Π΅ скучал, Π²ΠΈΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ слишком Π±ΠΎΠ΄Ρ€ΠΎ) ΠΈ ΠΏΡ€ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ слишком ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ, Π½ΡƒΠΆΠ½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.

ΠŸΡ€ΠΎ просто я Π½Π΅ согласСн(ΠΈΠ½Π°Ρ‡Π΅ Π½Π΅ встрСчался Π±Ρ‹ ΠΊΠΎΠ΄ Π³Π΄Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ„ΠΈΡ‡ΠΈ Ρ€Π°Π·ΠΌΠ°Π·Π°Π½ΠΎ ΠΏΠΎ всСму ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ), Π° Π²ΠΎΡ‚ нСдостаток ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΡŽ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ. ΠšΡ‚ΠΎ ΡƒΠΆΠ΅ устал Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π»ΡΠ½ΡƒΡ‚ΡŒ сразу Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° github.

ВСория

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Π΅ΡΡ‚ΡŒ нСсколько основных ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ²:

ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ„ΠΈΡ‡

Π’ Ρ‚ΠΎΠΌ самом постС ΠΈΠ· Π±Π»ΠΎΠ³Π° Π€Π°ΡƒΠ»Π΅Ρ€Π°, довольно Π΄ΠΎΠ»Π³ΠΎ Ρ€Π°ΡΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ с Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Π’Π΅Π½Π½Π°, я ΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΡƒ Ρ€ΠΎΠ²Π½ΠΎ Π΄Π²Π΅: статичСскиС ΠΈ динамичСскиС. ИмСнно эти Ρ€ΠΎΠ²Π½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ для Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π² ΠΏΠ»Π°Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

БтатичСскиС

К статичСским относим Ρ„ΠΈΡ‡ΠΈ, ΠΎ состоянии, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ΠΈ ΠΎΠΏΠΈΡ€Π°ΡŽΡ‚ΡΡ, извСстно Π·Π°Ρ€Π°Π½Π΅Π΅. НапримСр Π½Π°ΠΌ Π½Π°Π΄ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π² зависимости ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° экрана, ΠΈΠ»ΠΈ ΠΎΡ‚ вСрсии ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, ΠΈΠ»ΠΈ ΠΎΡ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π° прилоТСния. Π’ΠΎ всСх случаях ΠΊ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ создания модуля ΡƒΠΆΠ΅ извСстно состояниС, ΠΈΠ»ΠΈ ΠΎΠ½ΠΎ мСняСтся снаруТи ΠΈ сам ΠΌΠΎΠ΄ΡƒΠ»ΡŒ выступаСт Π² пассивной Ρ€ΠΎΠ»ΠΈ. Π”Π°Π»Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ двумя способами: ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ снаруТи Π½Π΅ΠΊΠΈΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³, ΠΈΠ»ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ настраиваСм зависимости(Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ подставляСм in-Memory Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ вмСсто CoreData). Π’ этом случаС класс получаСтся самодостаточным ΠΈ Π΅ΠΌΡƒ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π½ΡƒΠΆΠ΅Π½ для опрСдСлСния собствСнного повСдСния.

ДинамичСскиС

Π’ΡƒΡ‚ находятся Ρ„ΠΈΡ‡ΠΈ, ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΌ состоянии ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π°ΠΌ всСгда Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это состояниС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ мноТСство Ρ€Π°Π· Π·Π° врСмя ΠΆΠΈΠ·Π½ΠΈ нашСго ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. НапримСр ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π΄ΠΈΠ·Π΅ΠΉΠ±Π»ΠΈΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ, Ссли Π΅ΡΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ соСдинСниС, ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, Ссли Π΅ΡΡ‚ΡŒ. Π’Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΏΠΎ ΠΏΡ€ΠΈΠ½ΡΡ‚ΠΈΡŽ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для этого зависимости Π² сам класс.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

И Π½Π°ΠΊΠΎΠ½Π΅Ρ† ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹! Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся ΠΊΠ°ΠΊ это всС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄ΠΈΡ‚ΡŒ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π½Π°ΠΏΠΈΡˆΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ» для вас Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ со всСм ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» использован Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ….

Для простоты понимания ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΊΠ°ΠΊΠΎΠΉ Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ MVC + FeatureService, для принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΡΡ‚ΠΈ динамичСских Ρ„ΠΈΡ‡. Π’ΠΎΡ‚ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΏΠΎΠ΅Ρ…Π°Π»ΠΈ!

БтатичСскиС

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1 (ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°)

Как Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄ΠΈΡ‚ΡŒ Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ:

Π’ΡƒΡ‚ всС довольно просто, Π½Π°ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³, ΠΌΡ‹ Π΅Π³ΠΎ сохранили Π² свойство, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, просто смотрим Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ свойства.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2 (Настройка зависимостСй)

Π£ нас Π΅ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ‡ΠΊΠ°, Π³Π΄Π΅ ΠΌΡ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ список постов, Ρ‚ΡƒΠ΄Π° ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ΄ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ Ρ€Π΅ΠΊΠ»Π°ΠΌΡƒ. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ сам Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π³Ρ€ΡƒΠ·ΠΈΡ‚, Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ всС Π΄Π°Π½Π½Ρ‹Π΅ Ρƒ своих ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ²:

ΠœΡ‹ просим Π΄Π°Π½Π½Ρ‹Π΅ Ρƒ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° статСй ΠΈ Ρƒ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° новостСй, Ссли Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅Ρ‚, ΠΌΡ‹ просто Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ, всС довольно просто:

Как ΠΈ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС мСсто управлСния Ρ„ΠΈΡ‡Π΅ΠΉ находится Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»ΠΎΠΌ модуля, Π΄Π° Π΅Ρ‰Π΅ Π² случаС с зависимостями Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π½ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Π½ΠΈ мСста вСтвлСния, всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ само.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3 (БСрвис настроСк)

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π·Π°Ρ…ΠΎΠ΄Π΅ Π½Π° экран Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΠΊΡ€Π°Π½Π½ΡƒΡŽ Ρ€Π΅ΠΊΠ»Π°ΠΌΡƒ, Π½ΠΎ Π½Π΅ Ρ‡Π°Ρ‰Π΅ Ρ€Π°Π·Π° Π² сутки.

FeatureServiceViewController.m:

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ обращаСтся ΠΊ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ сСрвису Π·Π° этими знаниями ΠΈ дСйствуСт Π² соотвСтствии с ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠΌ. Как выглядит сСрвис Π²Π½ΡƒΡ‚Ρ€ΠΈ:

FeatureServiceImplementation.m

БСрвис содСрТит Π² сСбС всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ зависиомти для принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Иногда Π΅ΠΌΡƒ Ρ‚Π°ΠΊΠΆΠ΅ трСбуСтся ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠ· ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°.

Π•Ρ‰Π΅ большС подробностСй

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ посмотрСли Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ прСимущСства Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сразу Π½Π΅ Π±Ρ€ΠΎΡΠ°ΡŽΡ‚ΡΡ Π² Π³Π»Π°Π·Π°. Π’ особСнности это касаСтся динамичСских Ρ„ΠΈΡ‡.

ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π² VC

ΠœΠ΅ΡΡ‚ΠΎ вСтвлСния

Π•ΡΡ‚ΡŒ нСсколько ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π΅Ρ€Π΅Ρ‡ΡŒ

Π˜Π·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Π°Ρ инкапсуляция

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ТСланию ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ всСгда, Π½ΠΎ Π½Π΅ стоит Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ„ΠΈΡ‡Ρƒ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠΉ:

ЗависимыС Ρ„ΠΈΡ‡ΠΈ

Π’ ΠΈΠ΄Π΅Π°Π»Π΅ Π»ΡƒΡ‡ΡˆΠ΅ Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ зависимых Ρ„ΠΈΡ‡, Π½ΠΎ Π² случаС, Ссли этого Π½Π΅ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ, Π½Π°Π΄ΠΎ ΡΡ‚Π°Ρ€Π°Ρ‚ΡŒΡΡ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ зависмости. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° зависимых Ρ„ΠΈΡ‡ ΠΌΠΎΠΆΠ½ΠΎ привСсти Π°Π²ΠΈΠ°Ρ€Π΅ΠΆΠΈΠΌ ΠΈ настройки связанныС с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Если Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π°Π²ΠΈΠ°Ρ€Π΅ΠΆΠΈΠΌ, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‡Ρ‚ΠΎ Π² Π½ΠΈΡ… Π²Ρ‹Π±Ρ€Π°Π½ΠΎ.

Feature toggling Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Feature toggling Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Feature toggling Ρ‡Ρ‚ΠΎ это. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Feature toggling Ρ‡Ρ‚ΠΎ это. Π€ΠΎΡ‚ΠΎ Feature toggling Ρ‡Ρ‚ΠΎ это

Π§Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ?

Π˜Ρ‚ΠΎΠ³ΠΈ

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ довольно простой, Π½ΠΎ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΎΠ½ Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ мноТСство Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ с ΠΎΠ΄Π½ΠΎΠΉ стороны Π»Π΅ΠΆΠ°Ρ‚ Π½Π° повСрхности, ΠΊΠΎΠ³Π΄Π° Π½Π° Π½ΠΈΡ… ΡΠΌΠΎΡ‚Ρ€ΠΈΡˆΡŒ, Π½ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π±Ρ‹Ρ‚ΡŒ Π²ΠΎ врСмя Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π― Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Π» Π½Π΅Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅ особо Π½Π΅ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°ΡΡΡŒ, Π½ΠΎ знакомство с подробностями Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΡƒΠ»ΠΎΠΆΠΈΠ»ΠΎ Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΈΡ‡ΠΈ ΠΈ Ρ‚ΠΎ ΠΎΡ‚ Ρ‡Π΅Π³ΠΎ стоит ΠΏΡ€ΠΎΠ΄ΠΎΡΡ‚Π΅Ρ€Π΅Ρ‡ΡŒΡΡ.

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΌΠ½Π΅ Π² коммСнтариях ΠΈΠ»ΠΈ ΠΌΠ½Π΅ Π² twitter, Ρ‡Ρ‚ΠΎ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅. Π‘ΡƒΠ΄Ρƒ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚Π΅Π»Π΅Π½ Π·Π° Ρ„ΠΈΠ΄Π±Π΅ΠΊ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ feature toggle ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΌΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΡ‘Ρ€ΠΆΠ΅ΠΉ ΠΈ Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡƒΡ‰ΠΈΡ… Π²Π΅Ρ‚ΠΎΠΊ?

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ†ΠΈΠΊΠ»Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ вашСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ длятся ΠΏΠΎ Π΄Π²Π΅ Π½Π΅Π΄Π΅Π»ΠΈ, Π° рСализация Π½ΠΎΠ²ΠΎΠΉ Ρ„ΠΈΡ‡ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ 3 мСсяца Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд, Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ схСмы дСйствий:

ИспользованиС feature switcher-ΠΎΠ² для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ

Вакая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° встрСчаСтся Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ довольно часто ΠΈ Π΅ΡΡ‚ΡŒ изящноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ Π²Π·ΡΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅Π΅ ΠΎΡ‚ описанных Π²Ρ‹ΡˆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² β€” feature toggle ΠΈΠ»ΠΈ feature switcher.

По сути, feature switcher β€” это boolean Ρ„Π»Π°Π³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ хранится Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Ρ‚Π° ΠΈΠ»ΠΈ иная Ρ„ΠΈΡ‡Π° ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого Ρ„Π»Π°Π³Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΎ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ. Удобство использования feature switcher-ΠΎΠ² Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ бизнСс-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π²ΠΎ врСмя runtime Ρ‡Π΅Ρ€Π΅Π· панСль администратора Π±Π΅Π· нСобходимости Π·Π°Π½ΠΎΠ²ΠΎ Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования feature toggle Π½Π° языкС Java:

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ configurationManager β€” это класс, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ feature switcher-Π° ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ Π΅Π³ΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ.

Π’Π°ΠΊΠΆΠ΅, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ feature switcher-ΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ/ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ элСмСнты Π½Π° Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π΅. Для этого придСтся ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„Π»Π°Π³Π° Π² Model ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π° View ΠΊΠ°ΠΊ это ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

ПослС Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ HTML ΠΊΠΎΠ΄Π°:

Π’ΠΈΠ΄Ρ‹ feature switcher-ΠΎΠ²

ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ использования feature switcher-ΠΎΠ² β€” это лишь ΠΎΠ΄ΠΈΠ½ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ случай использования ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ feature switcher-Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ release toggles. ВсСго Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ 3 Ρ€Π°Π·Π½Ρ‹Ρ… Π²ΠΈΠ΄Π° feature switcher-ΠΎΠ²:

Feature toggling Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Feature toggling Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Feature toggling Ρ‡Ρ‚ΠΎ это. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Feature toggling Ρ‡Ρ‚ΠΎ это. Π€ΠΎΡ‚ΠΎ Feature toggling Ρ‡Ρ‚ΠΎ это

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ использования feature toggle-ΠΎΠ²

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ я Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, Π³Π΄Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ feature toggle-Ρ‹, Ρ‚ΠΎ ΠΊΡ€ΠΎΠΌΠ΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Ρ… достоинств ΠΈΡ… использования я Π½Π°Ρ‡Π°Π» Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, связанныС с Π½ΠΈΠΌΠΈ:

РСшСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· описанных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ

ΠŸΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

Π˜Ρ‚ΠΎΠ³ΠΈ

Feature switcher β€” ΠΎΡ‡Π΅Π½ΡŒ простой ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ монструозных ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Π»Π΅Π³ΠΊΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ повСдСния прилоТСния ΠΈΠ»ΠΈ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°Π·Π½ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ feature toggle-ΠΎΠ².

Однако, стоит Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ этот ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСдостатки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΈ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄, поэтому слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ использования этого ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° ΠΈ пСриодичСски ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ feature switcher-ΠΎΠ² ΠΈ ΠΈΡ… Ρ€Π΅Π²ΠΈΠ·ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈ, ΠΊΠ°ΠΊ слСдствиС, ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΎΡ‚ β€œΠΌΡ‘Ρ€Ρ‚Π²ΠΎΠ³ΠΎβ€ ΠΊΠΎΠ΄Π°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Ротация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ (feature toggling) 22 января 2013, 17:40

Один ΠΈΠ· самых распространСнных способов ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ (ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½ΠΎΠΉ) Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ – ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ вСрсий ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π²Π΅Ρ‚ΠΎΠΊ. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… Π²Π΅Ρ‚ΠΎΠΊ конкрСтная функция разрабатываСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ…, Π° ΠΏΠΎΡ‚ΠΎΠΌ интСгрируСтся Π² основной Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°. Π’Π°ΠΊΠΎΠΉ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ называСтся Β«Feature BranchΒ» (Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ), см. Ρ‚ΡƒΡ‚

ΠŸΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: Π΄Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ ΠΊΠΎΠ΄Π°, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Π² изоляции Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°, ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π΄ΠΊΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ. ΠŸΡ€ΠΈ этом ΡƒΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ всС прСимущСства, связанныС с Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ. Π§Π΅ΠΌ дольшС Π²Π΅Ρ‚ΠΊΠ° ΠΎΡ‚Π΄Π΅Π»Π΅Π½Π° ΠΎΡ‚ основного Ρ†ΠΈΠΊΠ»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ риск накапливаСтся ΠΈΠ·-Π·Π° откладывания ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Π² основной Ρ†ΠΈΠΊΠ» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ каТСтся Π»ΠΈ насмСшкой ситуация, ΠΊΠΎΠ³Π΄Π° приходится сразу ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, сдСланныС Π·Π° ΠΏΠ°Ρ€Ρƒ мСсяцСв?

Π£ΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ достаточно Π΄ΠΎΠ»Π³ΠΎΠΌ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ – рСгулярно ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ всС измСнСния, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ Π² основном Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅. Но Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚. БпСциалисты, занятыС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ основного ΠΏΠΎΡ‚ΠΎΠΊΠ°, практичСски Π½Π΅ Π½Π°Π±Π»ΡŽΠ΄Π°ΡŽΡ‚ ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π½Π°Π±Π»ΡŽΠ΄Π°ΡŽΡ‚ Ρ‚ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, которая вСдСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅. Если Π² основном ΠΏΠΎΡ‚ΠΎΠΊΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³, Ρ‚ΠΎ Π΅Π³ΠΎ придСтся Π·Π°Π½ΠΎΡΠΈΡ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈΡ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ проводится ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° событий, происходящих Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π²Π΅Ρ‚ΠΊΠ°Ρ….

Если спСциалисты, занятыС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ, Π±ΡƒΠ΄ΡƒΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ прямо Π² Π½Π΅ΠΉ, это Π±ΡƒΠ΄Π΅Ρ‚ лишь ΠΎΡΠ»ΠΎΠΆΠ½ΡΡ‚ΡŒ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ слияния ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ситуациям, ΠΊΠΎΠ³Π΄Π° Π½Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ Π²Π΅Ρ‚ΠΊΠΈ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ Π½Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ всСго Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° с нуля. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΠ²ΠΎΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ слоТных ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² слияния (merge conflict). Π Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ, Π½ΠΎ ΠΎΠ½ откладываСтся ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ отмСняСтся. Вас Π·Π°Π²Π°Π»ΠΈΠ²Π°Π΅Ρ‚ тСхничСский Π΄ΠΎΠ»Π³.

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² послСднСС врСмя Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ обсуТдаСтся – Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π² основной Π»ΠΈΠ½ΠΈΠΈ сразу всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прилоТСния. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ извСстСн ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ «стволовая Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Β» (trunk-based development), ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ см. Ρ‚ΡƒΡ‚. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆ, Ссли Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ всСми Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹ΠΌΠΈ функциями ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π° Π΄ΠΎ Π΄Π°Ρ‚Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π΅Π»ΠΈΠ·Π°. Но Ссли Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ всСх Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π΄ΠΎ блиТайшСго Ρ€Π΅Π»ΠΈΠ·Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‚ΠΎ Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ приходится ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ – Π° Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ обсуТдСния ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся «Ротация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉΒ» (Feature Toggle). Π‘ΠΌ. Ρ‚ΡƒΡ‚.

ΠŸΡ€ΠΎΡΡ‚Π°Ρ ротация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ°ΠΌΡƒΡŽ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Ρ€ΠΎΡ‚Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ просто ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΈ ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ интСрфСйсС Π²Ρ…ΠΎΠ΄Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ для использования Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Для этого задСйствуСм Π² шаблонС простой условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€.

Π§Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ для обСспСчСния простых ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ Π² Π»ΠΎΠ³ΠΈΠΊΠ΅ прилоТСния.

Π’ случаС внСсСния Π±ΠΎΠ»Π΅Π΅ слоТных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, Π² ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ накоплСнию Ρ†Π΅Π»ΠΎΠ³ΠΎ ΠΊΠ»ΡƒΠ±ΠΊΠ° условных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ просочатся Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΠ³ΠΎΠ»ΠΎΠΊ Π±Π°Π·Ρ‹ ΠΊΠΎΠ΄Π°. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Ссли эти условия сохранятся Π² Π±Π°Π·Π΅ ΠΊΠΎΠ΄Π° Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»Π³ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ обслуТиваСмыС ΠΈΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΡˆΠ»ΠΈ Ρ€Π΅Π»ΠΈΠ·, Π»ΠΈΠ±ΠΎ останутся Π² ΠΊΠΎΠ΄Π΅ просто Π½Π° всякий случай, Ρ‚ΠΎ Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ просто ΡƒΡ‚ΠΎΠ½Π΅Ρ‚ Π² условных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ…. Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€ΠΎΡ‚Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

ΠŸΡ€ΠΈ нСобходимости Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ наслСдованиС ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉΡΡ ΠΊΠΎΠ΄ спСцифичной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ. Π’ случаС нСобходимости Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΊΠΎΠ΄Π΅ Π±Ρ‹Π»ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ.

Π’Π°ΠΊ, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ‚ΠΎΡ‡ΠΊΡƒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ наслСдования.

Π’Ρƒ ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ.

Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ наш ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для внСдрСния зависимостСй (см. http://martinfowler.com/articles/injection.html), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΉ Π² нашСм случаС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ-спСцифичной ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Рассмотрим, ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² Spring MVC.

Один Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ Ρ„Π°ΠΉΠ»Ρ‹ applicationContext-$.xml с опрСдСлСниями Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ-спСцифичных управляСмых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (Π±ΠΈΠ½ΠΎΠ²). Но Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуациях Π½Π°ΠΌ придСтся ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ со списками Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² – Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, со списками ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ². Если ΠΏΡ€ΠΎΠ΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ список Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ-спСцифичном контСкстном Ρ„Π°ΠΉΠ»Π΅, Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ слоТности с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΊΠΎΠ΄Π°.

Π›ΡƒΡ‡ΡˆΠ΅ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ список Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ applicationContext.xml. Если понадобится Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‡ΠΈΠΊ, Ρ‚ΠΎ ΠΌΡ‹ смоТСм занСсти Π΄Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² основной список, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ-спСцифичном контСкстном Ρ„Π°ΠΉΠ»Π΅, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½ΡƒΠ»Π΅Π²ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ (см. wiki) Π² основном контСкстном Ρ„Π°ΠΉΠ»Π΅.

Аннотации

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ-ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹ (ΠΎΠ½ΠΈ ΠΆΠ΅ β€” Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π±Π΅Π· элСмСнтов) для Π½Π°ΡˆΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π°ΠΌ Π½Π΅ придСтся ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ Π² XML-Ρ„Π°ΠΉΠ»Π°Ρ…. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ для указания Ρ‚ΠΎΠ³ΠΎ, Π½ΡƒΠΆΠ΅Π½ Π»ΠΈ Π½Π°ΠΌ Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π•Ρ‰Π΅ Π½Π°ΠΌ понадобится ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ (custom) Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ TypeFilter, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Π½Π°ΡˆΡƒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ. ВсС это дСлаСтся для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ рСализации…

… послС Ρ‡Π΅Π³ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ наш Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ Ρ‚ΠΈΠΏΠΎΠ² Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ сканСра spring-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ наши Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π·Π° нас Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ Spring

Битуация становится Π³ΠΎΡ€Π°Π·Π΄ΠΎ интСрСснСС, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ добавляСм Π² Π½Π°ΡˆΡƒ смСсь всС большС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΌ понадобится Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ Ρ‚ΠΈΠΏΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТныС ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

ΠžΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠ΅ статичСских рСсурсов

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ рассмотрСли нСсколько способов ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π²Π΅Ρ‚ΠΎΠΊ Π½Π° сСрвСрной сторонС. Но Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ со статичСскими рСсурсами, Ρ‚Π°ΠΊΠΈΠΌΠΈ, ΠΊΠ°ΠΊ JavaScript ΠΈ CSS?

НСкоторыС статичСскиС рСсурсы ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Π½Π° сСрвСрной сторонС. Π’Π°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ для измСнСния ΠΈΡ… спСцифичным для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Но ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ статичСскиС рСсурсы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² сСти доставки ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° (Content Delivery Network, см. wiki), пСрСносятся ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° сСрвСр ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуациях.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ наши статичСскиС рСсурсы Π² ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Π²ΠΎ врСмя сборки. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅Π½, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ситуация, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ развСртывания.

Π“ΠΎΡ€Π°Π·Π΄ΠΎ Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π΅Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ статичСскиС рСсурсы Π² Π²ΠΈΠ΄Π΅ статичСских Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ-спСцифичныС вСрсии статичСского ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°. Π­Ρ‚ΠΈ вСрсии ΠΌΡ‹ смоТСм Π² условном порядкС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈΠ· Π½Π°ΡˆΠΈΡ… динамичСских шаблонов. Π’Π°ΠΊ, ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ shopping_cart.css ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» shopping_cart_foo.css, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ помСстим спСцифичСскоС ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ для ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ ΠΏΠΎΠΊΡƒΠΏΠΎΠΊ, примСняСмоС ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Foo.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ JavaScript ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ спСцифичныС условныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π² функциях JavaScript, ΠΊΠ°ΠΊ ΠΌΡ‹ поступали с сСрвСрным ΠΊΠΎΠ΄ΠΎΠΌ. Но Ρƒ этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΉ нСдостаток. Он допускаСт ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ функциях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΊΠ° находятся Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, Π½ΠΎ Π΅Ρ‰Π΅ Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ для Π²Ρ‹Π΄Π°Ρ‡ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. ΠŸΠΎΡ€ΠΎΠΉ Ρ‚Π°ΠΊΠΎΠ΅ случайноС раскрытиС ΠΏΠΎΠ³ΠΎΠ΄Ρ‹ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚, Π½ΠΎ Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΈ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ раскрытиС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π½Π΅Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… функциях оборачиваСтся катастрофой. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ случайного раскрытия.

ΠŸΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ случайного раскрытия

Если Ρ€Π°Π±ΠΎΡ‚Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‚ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ вСсти Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅. Π‘ достаточной ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Π² Π²Π΅Ρ‚ΠΊΠ΅, останСтся ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π²Π΅Ρ‚ΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ линию. ΠŸΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π½ΠΈΠ΅ страха случайной ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π΅Ρ‰Π΅ Π½Π΅ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ – ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… шагов Π±Π°Ρ€ΡŒΠ΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Ρ‚ΡŒ для Π·Π°ΠΌΠ΅Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π²Π΅Ρ‚ΠΎΠΊ Π½Π° Ρ€ΠΎΡ‚Π°Ρ†ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π›Π΅Π³ΠΊΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡƒΡ‚Π΅Ρ‡ΠΊΠ° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π½Π΅Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… функциях ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ функция нСдостаточно Ρ…ΠΎΡ€ΠΎΡˆΠΎ Β«ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚Π°Β» Π² ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€ΠΎΡ‚Π°Ρ†ΠΈΠΈ. Если Π²Π°ΠΌ ΠΏΠΎΠ²Π΅Π·Π΅Ρ‚, такая ΡƒΡ‚Π΅Ρ‡ΠΊΠ° вскроСтся Π² Π²ΠΈΠ΄Π΅ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠΉ ошибки. Но Ρ‡Π°Ρ‰Π΅ ошибка проявляСтся Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΌΠ΅Π½Π΅Π΅ явно: Π² ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ сообщСнии окаТСтся Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ тСкст, отобразится Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΈ Ρ‚.Π΄.

ΠŸΡ€ΠΈ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ тСстировании Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π²Ρ‹, Π² ΠΈΡ‚ΠΎΠ³Π΅, Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΡƒΡŽ Π½Π΅ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. МоТно ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ автоматичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ тСсты, Π½ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ систСму Π½Π° отсутствиС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ»ΠΈ элСмСнтов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΎΡ‡Π΅Π½ΡŒ нСпросто.

Π‘Π°ΠΌΡ‹ΠΉ нСявный ΠΊΠ°Π½Π°Π», Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΡƒΡ‚Π΅Ρ‡ΠΊΠ° Π΅Ρ‰Π΅ Π½Π΅ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ – это ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹. Ими ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ классы CSS, ΠΊΠΎΠ΄ JavaScript ΠΈ Π΄Π°ΠΆΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² HTML. Π‘Π»ΡƒΡ‡Π°ΠΉΠ½ΠΎΠ΅ раскрытиС Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° ΠΎΡ‡Π΅Π½ΡŒ слоТно Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ.

Π’Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅, самый Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ способ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ – ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ дисциплину ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. Π›ΡŽΠ±Ρ‹Π΅ Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² ΠΊΠΎΠ΄ для Ρ€ΠΎΡ‚Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ИзмСнСния статичСских рСсурсов Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ-спСцифичных Ρ„Π°ΠΉΠ»Π°Ρ…, эти Ρ„Π°ΠΉΠ»Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚Ρ‹ Π² ΠΊΠΎΠ΄ для Ρ€ΠΎΡ‚Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Если всСгда ΠΎΡ‚Π΄Π΅Π»ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ-спСцифичныС статичСскиС Ρ„Π°ΠΉΠ»Ρ‹, Ρ‚ΠΎ ΠΌΡ‹ смоТСм Π΄Π°ΠΆΠ΅ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈΡ… Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ – просто для обСспСчСния бСзопасности.

Ротация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²ΠΎ врСмя исполнСния

Если удастся ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²ΠΎ врСмя исполнСния, Ρ‚ΠΎ ΠΌΡ‹ смоТСм Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Π΅Π΄ΠΈΠ½ΠΎΠΌ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Ρ‚Π°ΠΊ ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π°Π±ΠΎΡ€Π° автоматичСских тСстов. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ смоТСм Π² Ρ‚Π°ΠΊΠΎΠΌ случаС быстро ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ссли Π² процСссС производства Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ошибки.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ вопрос, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²ΠΎ врСмя исполнСния, Ρ‚Π°ΠΊΠΎΠ²: Π±ΡƒΠ΄ΡƒΡ‚ Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, занятыС Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ сСссиСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ сразу ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, ΠΈΠ»ΠΈ ΠΆΠ΅ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ настройки Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ сСссии?

Если ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ настройки Π½Π° протяТСнии всСй сСссии, Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ смоТСт ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΈ Π½Π΅ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²ΠΎΠ΅ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅ ΠΎ сайтС. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ с Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ проявлСниСм Ρ€ΠΎΡ‚Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ нСдостаток: ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒΡΡ, Ссли Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» сайта измСнится прямо Ρƒ Π½Π΅Π³ΠΎ Π½Π° Π³Π»Π°Π·Π°Ρ…. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΈ ошибки Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ прилоТСния – Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ выполнятся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ оТидания. ΠŸΡ€Π°Π²Π΄Π°, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ ΡΡ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ глобально Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π²Π΄Ρ€ΡƒΠ³ станСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

Гибкая систСма Ρ€ΠΎΡ‚Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠ³Π»Π° Π±Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°ΠΊ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ сСссии – Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, насколько Π½Π΅ΠΎΡ‚Π»ΠΎΠΆΠ½ΠΎΠΉ являСтся такая ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΡ‹ распространим Ρ€ΠΎΡ‚Π°Ρ†ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π° мноТСство сСрвСров ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. МоТно Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ всС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ внСшнСй систСмС – Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… – ΠΈΠ»ΠΈ Π² Ρ„Π°ΠΉΠ»Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ пСриодичСски ΡΠΊΠ°Π½ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π·Π°Π½ΠΎΠ²ΠΎ.

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ интСрфСйс. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ‚Π°ΠΊΠΎΠ³ΠΎ интСрфСйса являСтся JMX (см. wiki). Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС, всС измСнСния ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ нСпосрСдствСнно ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΌΡƒ сСрвСру ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС, ΠΌΡ‹, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, смоТСм ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ измСнСния ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ, Π½ΠΎ потрСбуСтся ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†ΠΈΡŽ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΡƒΡŽ Π²Π·Π°ΠΈΠΌΠ½ΠΎ Π½Π΅ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²ΠΎΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π° всСм мноТСствС сСрвСров. Если ΠΌΡ‹ собираСмся ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ измСнСния нСпосрСдствСнно ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΌΡƒ сСрвСру ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΡΡ‚Π°Π²Π°Π»ΠΎΡΡŒ Π² силС ΠΈ послС пСрСзапуска прилоТСния.

Ротация Π²ΠΎ врСмя сборки

Ротация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π²ΠΎ врСмя сборки. Π­Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π² случаС, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ ΡƒΠΆΠ΅ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ ΠΏΠ°Ρ€Π°Π½ΠΎΠΉΠΈ – Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Ρ‹ Π² Ρ€Π΅Π»ΠΈΠ· ΠΏΠΎΠΏΠ°Π» лишь Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ротация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²ΠΎ врСмя сборки примСняСтся ΠΈ Π² случаС, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ измСняСтся Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ. Π’Π΅Π΄ΡŒ ΠΈΠ·-Π·Π° измСнСния зависимости ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ситуация, нСсовмСстимая с API.

НСсовмСстимыС зависимости

Часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ слоТности с ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ зависимостСй Π΄ΠΎ Π½ΠΎΠ²Ρ‹Ρ… вСрсий, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости. Π­Ρ‚ΠΎ зависит ΠΎΡ‚ Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ случаС. ΠŸΡ€ΠΈ Ρ€ΠΎΡ‚Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ услоТняСтся, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ оказываСмся Π² ситуации, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ сразу ΠΎΠ±Π΅ вСрсии зависимости. Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π½Π°ΠΌ трСбуСтся ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄Π²Π΅ вСрсии класса, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ конструкторы, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ сигнатурами ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹?

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Β«Ρ€Π΅Ρ„Π»Π΅ΠΊΡΠΈΡŽΒ». Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС, ΠΌΡ‹ сумССм динамичСски Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ – ΠΏΡ€ΠΈ этом, Π½Π°ΠΌ удастся ΠΎΠ±Ρ…ΠΈΡ‚Ρ€ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ статичСской ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Но Ρ‚Π°ΠΊ ΠΌΡ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠΌ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ систСмы ΠΈ снизим ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

ВмСсто этого ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈ для Ρ‚Π°ΠΊΠΈΡ… классов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ…ΠΎΠΆΠΈ, Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ различия. МоТно Π½Π°Ρ‡Π°Ρ‚ΡŒ с создания ΠΎΠ±Ρ‰Π΅Π³ΠΎ интСрфСйса, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ элСмСнты для ΠΎΠ±Π΅ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ-спСцифичныС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ подходящСй вСрсии нашСй зависимости. ПослС этого ΠΌΡ‹ смоТСм Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ-спСцифичныС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΊΠΎΠ΄Π° ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ врСмя сборки Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½. ИмСнно поэтому ротация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²ΠΎ врСмя сборки Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π°, Π½ΠΎ ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°.

ВСстированиС Ρ€ΠΎΡ‚Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Одна ΠΈΠ· ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, связанных с Ρ€ΠΎΡ‚Π°Ρ†ΠΈΠ΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ – Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ возникновСния своСобразной Β«Π³Ρ€Π΅ΠΌΡƒΡ‡Π΅ΠΉ смСси». НуТно ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ систСму, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, тСорСтичСски, число Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ расти ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ увСличСния количСства Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Но Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π³Ρ€Π΅ΠΌΡƒΡ‡ΠΈΠ΅ смСси Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Ρ€Π΅Π΄ΠΊΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, цСлСсообразно Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π½Π° наш взгляд, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ придСтся Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΡŽ.

ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ фактичСскоС количСство ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΌ потрСбуСтся ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ Ρƒ нас Π±Ρ‹Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ. Но тСстированиС Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ упрощаСтся, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Π² Π΅Π΄ΠΈΠ½ΠΎΠΉ Π±Π°Π·Π΅ ΠΊΠΎΠ΄Π°. Если ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎ врСмя исполнСния, Ρ‚ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ СдинствСнной сборкой. Π’ Π½Π΅ΠΉ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² зависимости ΠΎΡ‚ постановки Π·Π°Π΄Π°Ρ‡ΠΈ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ тСстС.

Если ΠΌΡ‹ примСняСм Ρ€ΠΎΡ‚Π°Ρ†ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²ΠΎ врСмя сборки, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρ‹ сборки для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ, с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ Β«Π΄Ρ‹ΠΌΠ°Β» ΠΈ рСгрСссионными Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°.

КаТдая ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сборку Π½Π° всСх ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°Ρ…. ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π² контСкстС Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ, получаСтся Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΌΡ‹ собирали ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ.

Но, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ситуации с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ, ΠΏΡ€ΠΈ Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ постановкС Π·Π°Π΄Π°Ρ‡ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ситуация, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ сборка для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ A Π½Π΅ позволяСт ΠΏΡ€ΠΎΠΉΡ‚ΠΈ тСст ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ сборку для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ B. ЧСстно говоря, эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° сохраняСтся ΠΈ Π² случаС с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ. Однако, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Π΅Ρ‚ΠΊΠ°Ρ… ΠΌΡ‹ ΠΎΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌ Π΄Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ. Ротация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ позволяСт ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ, Π½Π° ΠΌΠΎΠΉ взгляд, Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π² Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… функциях

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ прСпятствиС, ΠΌΠ΅ΡˆΠ°ΡŽΡ‰Π΅Π΅ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ Ρ€ΠΎΡ‚Π°Ρ†ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ опасСнии: Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ излишнС засорСн ΡƒΠΆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ функция Π³ΠΎΡ‚ΠΎΠ²Π° ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Π° для использования, Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ Π΅Ρ‰Π΅ Π½Π° ΠΏΠ°Ρ€Ρƒ Π΄Π½Π΅ΠΉ ΠΈΠ»ΠΈ нСдСль, ΠΏΠΎΠΊΠ° ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ функция Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Но послС этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ смСло ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ для Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, сократив ΠΊΠΎΠ΄ Π΄ΠΎ основной вСрсии прилоТСния.

Π§Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈΠ·Π±Π°Π²Π»ΡΡ‚ΡŒΡΡ ΠΎΡ‚ ΡƒΠΆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ FeatureToggles.isFooEnabled(), Π° Π½Π΅ FeatureToggles.isFooEnabled(β€œfoo”). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ смоТСм Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ компилятор для простого удалСния Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈΠ· ΠΊΠΎΠ΄Π°. Π’Π΅Π΄ΡŒ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΡ‹ ΡƒΠ΄Π°Π»ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ isFooEnabled(), любой ΠΊΠΎΠ΄, ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ Π΅Π³ΠΎ, Π½Π΅ скомпилируСтся.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ смоТСм Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΡˆΡƒ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (IDE) для поиска ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использования Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ, соотвСтствСнно, нахоТдСния мСст, Π³Π΄Π΅ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½ ΠΈΠ· шаблонов – Ссли наша IDE ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Если разрабатываСмая функция замораТиваСтся Π»ΠΈΠ±ΠΎ Π½Π° Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ врСмя, Π»ΠΈΠ±ΠΎ Π½Π° достаточно Π΄ΠΎΠ»Π³ΠΈΠΉ срок, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡΠΎΠ±Π»Π°Π·Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² ΠΊΠΎΠ΄Π΅ Π² ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΌΡΡ Π²ΠΈΠ΄Π΅, снабдив Π΅Π΅ для страховки ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡΠΌΠΈ. Но я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ это ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ плохая идСя. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠ΄ скрываСтся Π·Π° ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚, такая ситуация Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΊΠΎΠ΄Π°. На самом Π΄Π΅Π»Π΅, слСдуСт Ρ€Π΅ΡˆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·Π±Π°Π²Π»ΡΡ‚ΡŒΡΡ ΠΈ ΠΎΡ‚ Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΈ ΠΎΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ. Бтарая вСрсия всСгда Π±ΡƒΠ΄Π΅Ρ‚ доступна для справки Π² систСмС контроля вСрсий.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Иногда ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ вСрсий) ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌΠΈ способами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ€Π΅Π΄Π½Ρ‹ для Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²ΠΈΠ΄ΠΎΠ² ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ. Позволяя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π² ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π²Π΅Ρ‚ΠΊΠ°Ρ…, ΠΌΡ‹ сталкиваСмся с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ слиянии. Ротация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ допускаСт ΠΎΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π½ΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… аспСктов, Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°Ρ ΠΏΡ€ΠΈ этом процСсса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, связанного с Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΊΠΎΠ΄Π°.

Ротация ΠΊΠΎΠ΄Π°, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΠΏΠ΅Ρ€Π΅Π½Π°ΡΡ‹Ρ‰Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ функциями. Если Π²Ρ‹ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π½Π΅ ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – ΡƒΠ±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ. Π”Π΅Ρ€ΠΆΠΈΡ‚Π΅ ваш ΠΊΠΎΠ΄ чистым.

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

Π’ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ настройки Ρ€ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π»ΠΎΠ³ΠΎΠ² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ CentOs 7. Π’ ΠΌΠΎΡ‘ΠΌ случаС stdout ΠΈ stderr контСйнСров…

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ саммари Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΏΡ€ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ, ΠΎΠ½Π° ΠΆΠ΅ ΡŽΠ·Π΅Ρ€ΡΡ‚ΠΎΡ€ΠΈ. Π˜Π³Ρ€Ρ‹ Π΄Π°ΡŽΡ‚ ΠΎΠΏΡ‹Ρ‚, Π² Ρ‚ΠΎΠΌ числС ΠΎΠΏΡ‹Ρ‚ эмоций. ΠžΠΏΡ‹Ρ‚ ΠΈ эмоции…

Допустим, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΈΡ‡Ρƒ, Π½ΠΎ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° понравится ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ, ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ способ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎ Сё…

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *