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

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

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

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² ΠΈ ΠΈΡ… синтаксис

Π’ языкС 1Π‘ сущСствуСт нСсколько Π³Ρ€ΡƒΠΏΠΏ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ², каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π΅ΡˆΠ°Π΅Ρ‚ спСцифичСскиС Π·Π°Π΄Π°Ρ‡ΠΈ управлСния ΠΊΠΎΠ΄ΠΎΠΌ. ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Π°Ρ классификация Π΄Π΅Π»ΠΈΡ‚ ΠΈΡ… Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ контСкста выполнСния ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ условной компиляции. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΠ»ΠΈ функция, Π° Π²Ρ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π° Π² зависимости ΠΎΡ‚ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

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

πŸ’‘

ВсСгда явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ контСкст выполнСния для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½ ΠΈΠ· Π»ΠΎΠ³ΠΈΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ нСявных ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ ошибок ΠΏΡ€ΠΈ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π΅.

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

  • πŸ”Ή &ΠΠ°ΠšΠ»ΠΈΠ΅Π½Ρ‚Π΅ β€” ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (Ρ‚ΠΎΠ½ΠΊΠΈΠΉ, Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚).
  • πŸ”Ή &НаБСрвСрС β€” ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° выполняСтся ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π° сСрвСрС 1Π‘.
  • πŸ”Ή &ΠΠ°Π‘Π΅Ρ€Π²Π΅Ρ€Π΅Π‘Π΅Π·ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Π° β€” выполняСтся Π½Π° сСрвСрС Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ контСкста ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (быстрСС, Π½ΠΎ с ограничСниями).
  • πŸ”Ή &Π’Π’ΠΎΠ»ΡΡ‚ΠΎΠΌΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΎΠΌΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ β€” доступно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² толстом ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ (устарСваСт, Π½ΠΎ встрСчаСтся Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅).

Условная компиляция ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с вСрсиями ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹

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

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

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ прСпроцСссор?

ΠŸΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ 1Π‘ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ тСкст модуля ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π³ΠΎ компиляциСй. Если условиС Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ #Если Π»ΠΎΠΆΠ½ΠΎ, вСсь Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ этой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ игнорируСтся ΠΈ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² исполняСмый ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, экономя рСсурсы памяти.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, появившийся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² вСрсии 8.3.20, Π½ΠΎ ваша конфигурация Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ ΠΈ Π½Π° вСрсии 8.3.15, условная компиляция станСт спасСниСм. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ, гарантируя ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° старом ПО.

#Если Π’Π΅Ρ€ΡΠΈΡΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ >= "8.3.20" Π’ΠΎΠ³Π΄Π°

// Π’Ρ‹Π·ΠΎΠ² Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

ΠΠΎΠ²Ρ‹ΠΉΠžΠ±ΡŠΠ΅ΠΊΡ‚.ΠΠΎΠ²Ρ‹ΠΉΠœΠ΅Ρ‚ΠΎΠ΄();

#Π˜Π½Π°Ρ‡Π΅

// ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° для старых вСрсий

БтарыйБпособВыполнСния();

#ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ

ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ областСй

Для структурирования Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ читаСмости ΠΊΠΎΠ΄Π° Π² 1Π‘ прСдусмотрСны Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ областСй. Они Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Π»ΠΎΠ³ΠΈΠΊΡƒ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π° Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ слуТСбныС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΎΡ‚ основного просмотра. Π“Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΠ΅ использованиС областСй Π΄Π΅Π»Π°Π΅Ρ‚ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΈΠ»ΠΈ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅.

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

πŸ“Š Как Π²Ρ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΠ΅Ρ‚Π΅ ΠΊΠΎΠ΄ Π² модулях?
Волько области (Regions)
ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡΠΌΠΈ
ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ
Π₯Π°ΠΎΡ‚ΠΈΡ‡Π½ΠΎ

Бинтаксис объявлСния области прост: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #ΠžΠ±Π»Π°ΡΡ‚ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #ΠšΠΎΠ½Π΅Ρ†ΠžΠ±Π»Π°ΡΡ‚ΠΈ. Имя области ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ, Π½ΠΎ рСкомСндуСтся ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ стиля имСнования Π² Ρ€Π°ΠΌΠΊΠ°Ρ… всСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. НСкоторыС ΠΈΠΌΠ΅Π½Π° Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ для стандартных подсистСм.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° НазначСниС ВлияниС Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ
#ΠžΠ±Π»Π°ΡΡ‚ΡŒ Начало логичСского Π±Π»ΠΎΠΊΠ° НСт (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ визуализация)
#ΠšΠΎΠ½Π΅Ρ†ΠžΠ±Π»Π°ΡΡ‚ΠΈ Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° НСт
#Если УсловноС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π”Π° (ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½)
&ΠΠ°ΠšΠ»ΠΈΠ΅Π½Ρ‚Π΅ Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ контСкста Π”Π° (опрСдСляСт Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ)

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² Π² ΠΎΠ±Ρ‰ΠΈΡ… модулях

ΠžΠ±Ρ‰ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΌ элСмСнтом Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ 1Π‘, ΠΈ трСбования ΠΊ использованию Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² Π² Π½ΠΈΡ… Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ строги. Π—Π΄Π΅ΡΡŒ критичСски Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ клиСнтский ΠΈ сСрвСрный ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π»ΠΈΡˆΠ½ΠΈΡ… сСтСвых Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Ошибка Π² Π²Ρ‹Π±ΠΎΡ€Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ тяТСлая Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°Ρ‡Π½Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅, Ρ‡Ρ‚ΠΎ нСдопустимо.

Π’ ΠΎΠ±Ρ‰ΠΈΡ… модулях часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° &ΠΠ°Π‘Π΅Ρ€Π²Π΅Ρ€Π΅Π‘Π΅Π·ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Π°. Она ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ контСкста ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, настройки интСрфСйса) ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅. Π­Ρ‚ΠΎ сущСствСнно ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ массовых Π²Ρ‹Π·ΠΎΠ²Π°Ρ… Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Ρ†ΠΈΠΊΠ»Π°Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ использовании Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ &ΠΠ°Π‘Π΅Ρ€Π²Π΅Ρ€Π΅Π‘Π΅Π·ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ нСдоступны Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ контСкстныС свойства, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈΠ»ΠΈ ссылки Π½Π° Ρ„ΠΎΡ€ΠΌΡ‹. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° обращСния ΠΊ Π½ΠΈΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ выполнСния.

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

πŸ’‘

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π² ΠΎΠ±Ρ‰Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Ρ€Π°Π·Ρ‹ Π·Π° счСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ serialization Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π² модулях Ρ„ΠΎΡ€ΠΌ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄

ΠœΠΎΠ΄ΡƒΠ»ΠΈ Ρ„ΠΎΡ€ΠΌ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ своСй спСцификой, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ тСсно связаны с ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π—Π΄Π΅ΡΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ компиляции ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для раздСлСния Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий интСрфСйса ΠΈ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ. НапримСр, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° заполнСния ΠΏΠΎΠ»Π΅ΠΉ часто выполняСтся Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ для ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠΉ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ, Π° запись Π΄Π°Π½Π½Ρ‹Ρ… β€” Π½Π° сСрвСрС для обСспСчСния цСлостности Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

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

Рассмотрим Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ сцСнарий: ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠŸΡ€ΠΎΠ²Π΅ΡΡ‚ΠΈΒ». ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ наТатия (ΠŸΡ€ΠΈΠΠ°ΠΆΠ°Ρ‚ΠΈΠΈ) Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅. Он собираСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ провСдСния. ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ провСдСния сСрвСр ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ для обновлСния интСрфСйса ΠΈΠ»ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° сообщСния.

  • πŸš€ ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΡŽΡ‚ Π½Π° дСйствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ.
  • πŸ”’ Π‘Π΅Ρ€Π²Π΅Ρ€Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ ΡΠΎΡ…Ρ€Π°Π½Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±Π°Π·Π΅.
  • ⚑ ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² Π΄Π°Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΎΠΏΡ‹Ρ‚.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: НС ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π² сСрвСрныС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ большиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Π΅ части, Π΄Π΅Ρ€Π΅Π²ΡŒΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ) Π±Π΅Π· нСобходимости. Π­Ρ‚ΠΎ создаСт излишнюю Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° ΠΊΠ°Π½Π°Π» связи ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром 1Π‘.

ЧастыС ошибки ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²

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

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ являСтся Β«Π·Π°Π±Ρ‹Π²Ρ‡ΠΈΠ²ΠΎΡΡ‚ΡŒΒ» ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Если Π²Ρ‹ пСрСноситС ΠΊΠΎΠ΄ ΠΈΠ· старой ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π³Π΄Π΅ Π½Π΅ использовалось Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ сСрвСр, Π² Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ, Π²Π°ΠΌ придСтся Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Ρ€Π°ΡΡΡ‚Π°Π²ΠΈΡ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹. АвтоматичСскиС ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° Π½Π΅ всСгда ΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ с этой Π·Π°Π΄Π°Ρ‡Π΅ΠΉ идСально.

β˜‘οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° коррСктности Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°ΠΌΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнный ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ 1Π‘. Он Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π² ΠΊΠ°ΠΊΠΎΠΌ контСкстС выполняСтся тСкущая строка ΠΊΠΎΠ΄Π°. Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ список ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅, Π³Π΄Π΅ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ экспортируСмого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

МоТно Π»ΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ контСкста Π²ΠΎ врСмя выполнСния?

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

Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли Π½Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ контСкста?

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

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, сработала Π»ΠΈ условная компиляция?

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ тСкст модуля послС компиляции (Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ инструмСнты Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π°), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π±Π»ΠΎΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² исполняСмом ΠΊΠΎΠ΄Π΅.

Π’Π»ΠΈΡΡŽΡ‚ Π»ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ?

Π‘Π°ΠΌΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π·Π°Ρ€Π°Π½Π΅Π΅. Однако ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ &НаБСрвСрС ΠΈ &ΠΠ°Π‘Π΅Ρ€Π²Π΅Ρ€Π΅Π‘Π΅Π·ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Π° Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ влияСт Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ систСмы.