Зависимости Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ это: Understanding Dependencies / Π₯Π°Π±Ρ€

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй: Ρ‡Ρ‚ΠΎ это ΠΈ ΠΊΠΎΠ³Π΄Π° это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ | by Sergey Ufocoder

Π’ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ Bhavya Karia: A quick intro to Dependency Injection: what it is, and when to use it.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй это такая Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°, Π³Π΄Π΅ посрСдством ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (ΠΈΠ»ΠΈ статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π°) ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ зависимости Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π—Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован (ΠΊΠ°ΠΊ сСрвис).

Π­Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ (Π² вСрсии Π½Π° английском языкС β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°), ΠΈ всС ΠΆΠ΅, Π΅Π³ΠΎ Π½Π΅ Ρ‚Π°ΠΊ ΠΈ просто ΠΏΠΎΠ½ΡΡ‚ΡŒ. Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся с этим ΠΏΠΎΠ»ΡƒΡ‡ΡˆΠ΅.

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ сначала разбСрСмся, Ρ‡Ρ‚ΠΎ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π² ΠΎΠ±Ρ‰Π΅ΠΌ смыслС. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с этим понятиСм.

Π—Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ зависимоС β€” ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ. Π­Ρ‚ΠΎ всС Ρ€Π°Π²Π½ΠΎ Ρ‡Ρ‚ΠΎ, Ссли ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ слишком ΠΌΠ½ΠΎΠ³ΠΎ полагаСмся Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρ‹ β€” это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ зависим ΠΎΡ‚ Π½ΠΈΡ….

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΠΎΠ½ΡΡ‚ΠΈΡŽ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй, сначала Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

Когда класс A ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ· класса B, Ρ‚ΠΎΠ³Π΄Π° говорят, Ρ‡Ρ‚ΠΎ класс A зависим ΠΎΡ‚ класса B.

ДСмонстрация зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ классами

Π’ Java, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ смоТСм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΡ… классов, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для Π½Π°Ρ‡Π°Π»Π° ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляры этого класса (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ класс А Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр класса Π’).

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, пСрСдавая Π·Π°Π΄Π°Ρ‡Ρƒ создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΈ прямоС использованиС этой зависимости называСтся Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ΠΌ зависимостСй.

Если Π±Ρ‹ ΠΊΠΎΠ΄ ΡƒΠΌΠ΅Π» Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Ρ‚ΡŒ

Π’Π°ΠΊ ΠΏΠΎΡ‡Π΅ΠΌΡƒ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй?

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ класс для описания Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ, Ρ‚Π°ΠΊΠΆΠ΅ содСрТащий Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, колСса, Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΠΈ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅.

Π‘Π΅Π· использования внСдрСния зависимостСй

ΠŸΠ΅Ρ€Π΅Π΄ Π²Π°ΠΌΠΈ класс Car, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° созданиС всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² зависимостСй. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ρ‡Ρ‚ΠΎ Ссли ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠΌ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ колСс ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ MRFWheels ΠΈ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ колСса ΠΎΡ‚ Yokohama Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ?

Нам Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΡΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Car с Π½ΠΎΠ²ΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ Yokohama. Но ΠΏΡ€ΠΈ использовании Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠΈ зависимостСй ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ колСса Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ зависимости ΠΌΠΎΠΆΠ½ΠΎ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ Π²ΠΎ врСмя выполнСния, Π° Π½Π΅ Π²ΠΎ врСмя компиляции).

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠΈ зависимостСй ΠΊΠ°ΠΊ ΠΎ посрСдникС Π² нашСм ΠΊΠΎΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт всю Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ созданию ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° колСса ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ Π΅Π³ΠΎ классу ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ.

Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ наш класс Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ нСзависимым ΠΎΡ‚ создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ колСса, аккумулятор ΠΈ Ρ‚.Π΄.

БущСствуСт Ρ‚Ρ€ΠΈ основных Ρ‚ΠΈΠΏΠ° внСдрСния зависимостСй:

  1. constructor injection: всС зависимости ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· конструктор класса.
  2. setter injection: Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ добавляСт setter-ΠΌΠ΅Ρ‚ΠΎΠ΄, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΎΡ€ внСдряСт Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ
  3. interface injection: Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ прСдоставляСт ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΎΡ€Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΎΡ€ пСрСдаст Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ setter-ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ зависимости

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

  1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²;
  2. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ классы Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ этим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ;
  3. И прСдоставлСниС зависимостСй этим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ.

Если Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ измСнСния Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…, Ρ‚ΠΎ DI смотрит Π½Π° Π½Π΅Π³ΠΎ, ΠΈ ΠΎΠ½ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊ классу с использованиСм этих ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, Ρ‚ΠΎΠ³Π΄Π° ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ DI Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² прСдоставлСнии ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² классу.

Π˜Π½Π²Π΅Ρ€ΡΠΈΡ управлСния β€” концСпция, лСТащая Π² основС внСдрСния зависимости

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ класс Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свои зависимости статистичСски, Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ сконфигурирован Π΄Ρ€ΡƒΠ³ΠΈΠΌ классом ΠΈΠ·Π²Π½Π΅.

Π­Ρ‚ΠΎ пятый ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ S.O.L.I.D ΠΈΠ· пяти основных ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΡ‚ дяди Π‘ΠΎΠ±Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ говорится, Ρ‡Ρ‚ΠΎ класс Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ абстракции, Π° Π½Π΅ ΠΎΡ‚ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ (простыми словами, ТСстко Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ).

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

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ… SOLID ΠΎΡ‚ дяди Π‘ΠΎΠ±Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΏΠΎ этой ссылкС.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° использования внСдрСния зависимостСй

  1. ΠŸΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΌ тСстировании
  2. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ шаблонного ΠΊΠΎΠ΄Π° сокращаСтся, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ инициализация зависимостСй выполняСтся ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΎΡ€Π°;
  3. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ прилоТСния становится Π΅Ρ‰Π΅ ΠΏΡ€ΠΎΡ‰Π΅;
  4. ΠŸΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΡΠ²ΡΠ·Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

НСдостатки использования внСдрСния зависимостСй

  1. Π­Ρ‚ΠΎ нСсколько слоТновато для изучСния, Π° Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ΅ использованиС ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ управлСния ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ.
  2. МногиС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ошибки ΠΈΠ· процСсса компиляции ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² процСсс выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.
  3. ВнСдрСния зависимостСй Π²ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°Ρ… Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСфлСксии ΠΈΠ»ΠΈ динамичСского программирования. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ использованию Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ IDE, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±ΡƒΠ΄Π΅Ρ‚ слоТно Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ функциями Β«Π½Π°ΠΉΡ‚ΠΈ ссылки», Β«ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²Β» ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ слоТно Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ бСзопасно Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΎΠΌ.

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

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй

  • Spring (Java)
  • Google Guice (Java)
  • http://square.github.io/dagger/ (Java and Android)
  • Castle Windsor (.NET)
  • Unity(.NET)

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠΈ зависимостСй, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ со списком Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… источников Π½ΠΈΠΆΠ΅:

  • Java Dependency Injection β€” DI Design Pattern Example Tutorial β€” JournalDev
  • Using dependency injection in Java β€” Introduction β€” Tutorial β€” Vogella
  • Inversion of Control Containers and the Dependency Injection pattern β€” Martin Fowler

НадСюсь, это Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ!

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй ΠΈ ΠΊΠ°ΠΊ это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅?

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй (Dependency injection, DI)? Богласно Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ:

Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимости β€” процСсс прСдоставлСния внСшнСй зависимости ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ. ЯвляСтся спСцифичной Ρ„ΠΎΡ€ΠΌΠΎΠΉ «инвСрсии управлСния» (Inversion of control, IoC), ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° примСняСтся ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ зависимостями. Π’ ΠΏΠΎΠ»Π½ΠΎΠΌ соотвСтствии с ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠΌ СдинствСнной обязанности ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΎΡ‚Π΄Π°Ρ‘Ρ‚ Π·Π°Π±ΠΎΡ‚Ρƒ ΠΎ построСнии Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ… Π΅ΠΌΡƒ зависимостСй Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΌΡƒ для этого ΠΎΠ±Ρ‰Π΅ΠΌΡƒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡƒ.

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

Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй (DI) β€” это ΠΌΠ΅Ρ‚ΠΎΠ΄, ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ подходящий для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. БлСдуя ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ DI, Π²Ρ‹ Π·Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚Π΅ основу для Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ прилоТСния.

Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ внСдрСния зависимостСй Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ прСимущСства:

  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΊΠΎΠ΄Π°
  • Π›Π΅Π³ΠΊΠΎΡΡ‚ΡŒ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π°
  • Π›Π΅Π³ΠΊΠΎΡΡ‚ΡŒ тСстирования

ΠžΡΠ½ΠΎΠ²Ρ‹ внСдрСния зависимостСй

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй Π² Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΉΠΌΠ΅ΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй Π² ΠΎΠ±Ρ‰Π΅ΠΌ смыслС.

ΠšΠ»Π°ΡΡΡ‹ часто Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ссылок Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ классы. НапримСр, классу Car ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ссылка Π½Π° класс Engine. Π­Ρ‚ΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ классы Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ зависимостями, ΠΈ Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ класс Car зависит ΠΎΡ‚ наличия экзСмпляра класса Engine для запуска.

Π£ класса Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ способа ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚:

  1. Класс конструируСт Π½ΡƒΠΆΠ½ΡƒΡŽ Π΅ΠΌΡƒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Car создаст ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ собствСнный экзСмпляр Engine.
  2. ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ Π΅Π³ΠΎ ΠΎΡ‚ΠΊΡƒΠ΄Π°-Ρ‚ΠΎ Π΅Ρ‰Π΅. НСкоторыС Android API, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ получСния Context ΠΈ getSystemService(), Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.
  3. Π£ΠΊΠ°ΠΆΠ΅Ρ‚ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ эти зависимости ΠΏΡ€ΠΈ создании класса ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΡ… функциям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½ΡƒΠΆΠ½Π° каТдая Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ конструктор Car ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Engine Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

Π’Ρ€Π΅Ρ‚ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” это ΠΈ Π΅ΡΡ‚ΡŒ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй! ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Π²Ρ‹ Π±Π΅Ρ€Π΅Ρ‚Π΅ зависимости класса ΠΈ прСдоставляСтС ΠΈΡ…, Π° Π½Π΅ позволяСтС экзСмпляру класса ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΡ… самому.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘Π΅Π· внСдрСния зависимостСй прСдставлСниС Car, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ создаСт свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Engine Π² ΠΊΠΎΠ΄Π΅, выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

class Car {

Β  Β  private val engine = Engine()

Β  Β  fun start() {
Β  Β  Β  Β  engine. start()
Β  Β  }
}

fun main(args: Array) {
Β  Β  val car = Car()
Β  Β  car.start()
}


Π­Ρ‚ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ внСдрСния зависимостСй, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ класс Car создаСт свой собствСнный Engine. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ:

  • Car ΠΈ Engine тСсно связаны β€” экзСмпляр Car ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ Engine, ΠΈ подклассы ΠΈΠ»ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ слоТно. Если Π±Ρ‹ Car конструировал собствСнный Engine, Π²Π°ΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ просто ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ для Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ‚ΠΈΠΏΠ° Gas ΠΈ Electric.
  • ЖСсткая Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ Engine затрудняСт тСстированиС. Car ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ экзСмпляр Engine, Ρ‡Ρ‚ΠΎ Π½Π΅ позволяСт Π²Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ тСстовый Π΄Π²ΠΎΠΉΠ½ΠΈΠΊ для измСнСния Engine Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… тСстовых случаях.

Как выглядит ΠΊΠΎΠ΄ с Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ΠΌ зависимостСй? ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ экзСмпляр Car конструировал свой собствСнный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Engine ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Engine Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π² своСм конструкторС:

class Car(private val engine: Engine) {
Β  Β  fun start() {
Β  Β  Β  Β  engine. start()
Β  Β  }
}

fun main(args: Array) {
Β  Β  val engine = Engine()
Β  Β  val car = Car(engine)
Β  Β  car.start()
}


Ѐункция main ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Car. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Car зависит ΠΎΡ‚ Engine, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ создаСт экзСмпляр Engine, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ для создания экзСмпляра Car.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π½Π° основС DI:

  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования Car. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΎΡ‚ Engine ΠΊ Car. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ подкласс Engine ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ElectricEngine, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Car. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ DI, всС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ экзСмпляр ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ подкласса ElectricEngine, ΠΈ Car ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
  • ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ тСстированиС Car. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ тСстовыС Π΄Π²ΠΎΠΉΠ½ΠΈΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ свои Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ сцСнарии. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ тСстовый Π΄Π²ΠΎΠΉΠ½ΠΈΠΊ Engine ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ FakeEngine ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… тСстов.

Π•ΡΡ‚ΡŒ Π΄Π²Π° основных способа внСдрСния зависимостСй Π² Android:

  • Constructor Injection (ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΡ конструктора). Π­Ρ‚ΠΎ способ, описанный Π²Ρ‹ΡˆΠ΅. Π’Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ зависимости класса Π΅Π³ΠΎ конструктору.
  • Field Injection (ΠΈΠ»ΠΈ Setter Injection, полСвая ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΡ). НСкоторыС экзСмпляры ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… классов ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Android, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ‚ΠΈ ΠΈΠ»ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹, создаСт сама систСма, поэтому Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ конструктора Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠŸΡ€ΠΈ ΠΏΠΎΠ»Π΅Π²ΠΎΠΉ ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ зависимости ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ послС создания класса. Код Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:
class Car {
Β  Β  lateinit var engine: Engine

Β  Β  fun start() {
Β  Β  Β  Β  engine.start()
Β  Β  }
}

fun main(args: Array) {
Β  Β  val car = Car()
Β  Β  car.engine = Engine()
Β  Β  car.start()
}


АвтоматичСская ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΡ зависимостСй

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

  • Π’ случаС Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ использования всСх зависимостСй ΠΈ ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ большой объСм стандартного ΠΊΠΎΠ΄Π°. Π’ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ всС зависимости Π½ΠΈΠΆΠ΅Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… слоСв. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ настоящий Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ, Π²Π°ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ, трансмиссия, шасси ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»ΠΈ; Π° Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŽ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π½ΡƒΠΆΠ½Ρ‹ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€Ρ‹ ΠΈ свСчи заТигания.
  • Когда Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ зависимости ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΡ… ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ использовании Π»Π΅Π½ΠΈΠ²Ρ‹Ρ… ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ привязкС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΊ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌ вашСго прилоТСния β€” Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ настраиваСмый ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ (ΠΈΠ»ΠΈ Π³Ρ€Π°Ρ„ зависимостСй), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ управляСт Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΆΠΈΠ·Π½ΠΈ зависимостСй Π² памяти.

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, автоматизируя процСсс создания ΠΈ прСдоставлСния зависимостСй. Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ:

  • РСшСния Π½Π° основС отраТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ зависимости Π²ΠΎ врСмя выполнСния.
  • БтатичСскиС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠΎΠ΄ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ зависимостСй Π²ΠΎ врСмя компиляции.

Dagger β€” это популярная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° внСдрСния зависимостСй для Java, Kotlin ΠΈ Android, поддСрТиваСмая Google. Dagger ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ использованиС DI Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, создавая ΠΈ управляя Π³Ρ€Π°Ρ„ΠΎΠΌ зависимостСй для вас. Он обСспСчиваСт ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ статичСскиС зависимости ΠΈ зависимости Π²ΠΎ врСмя компиляции, Ρ€Π΅ΡˆΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π½Π° основС отраТСния, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Guice.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΡŽ зависимостСй

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

object ServiceLocator {
Β  Β  fun getEngine(): Engine = Engine()
}

class Car {
Β  Β  private val engine = ServiceLocator. getEngine()

Β  Β  fun start() {
Β  Β  Β  Β  engine.start()
Β  Β  }
}

fun main(args: Array) {
Β  Β  val car = Car()
Β  Β  car.start()
}


Π›ΠΎΠΊΠ°Ρ‚ΠΎΡ€ сСрвисов отличаСтся ΠΎΡ‚ внСдрСния зависимостСй способом потрСблСния элСмСнтов. Π‘ Π»ΠΎΠΊΠ°Ρ‚ΠΎΡ€Π° сСрвисов классы ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ ΠΈ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ для внСдрСния Π° с Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ΠΌ зависимостСй ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ внСдряСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ΠΌ зависимостСй:

  • Набор зависимостСй, Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ Π»ΠΎΠΊΠ°Ρ‚ΠΎΡ€Ρƒ сСрвисов, затрудняСт тСстированиС ΠΊΠΎΠ΄Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС тСсты Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ Π»ΠΎΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ сСрвисов.
  • Зависимости ΠΊΠΎΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса, Π° Π½Π΅ Π½Π° повСрхности API. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΈΠ·Π²Π½Π΅ слоТнСС ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ классу. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ измСнСния Π² Car ΠΈΠ»ΠΈ зависимостях, доступных Π² Π»ΠΎΠΊΠ°Ρ‚ΠΎΡ€Π΅ слуТб, ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ сбоям Π²ΠΎ врСмя выполнСния ΠΈΠ»ΠΈ тСстирования, вызывая сбои ссылок.
  • Π£ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΆΠΈΠ·Π½ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² слоТнСС, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒΡΡ Ρ‡Π΅ΠΌ-Π»ΠΈΠ±ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ всСго прилоТСния.

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

Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй Π΄Π°Π΅Ρ‚ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ прСимущСства:

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

Π§Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй

  • Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимости ΠΈ рСализация Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Castle Windsor ΠΈ NHibernate
  • Знакомимся с Needle, систСмой внСдрСния зависимостСй Π½Π° Swift
  • Dagger 2 для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Android Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй. Π§Π°ΡΡ‚ΡŒ 1Β ΠΈΒ Π§Π°ΡΡ‚ΡŒ 2
  • Как ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ врСмя Ρ…ΠΎΠ»ΠΎΠ΄Π½ΠΎΠ³ΠΎ старта Android-прилоТСния Π½Π° 28%
  • Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй с DITranquillity
  • Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй Π² Android – Dagger, Koin ΠΈ Kodein
  • Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй (dependency injection) Π² Swift 5.1

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

Если Π²Ρ‹ нашли ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΡƒ — Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚Π΅ Π΅Π΅ ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Ctrl + Enter! Для связи с Π½Π°ΠΌΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ [email protected].

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ? ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ зависимости ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ?

πŸ’¬

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ зависимости

Π—Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ описываСт ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ дСйствиями ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ порядок, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ. Зависимости Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ процСссС принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, планирования ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π² ΠΈΠ΄Π΅Π°Π»Π΅ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹. Π—Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅Π΅ΠΌΠ½ΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠ°ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡, ΠΏΡ€ΠΈ этом ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ выполнСния ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½.

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

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π½Π°ΡˆΡƒ ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ Mastering Prioritization eBook

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

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ зависимостСй

Для настройки зависимости Ρ‚ΠΈΠΏ зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ°Ρ€ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ: Π—Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ запуска β€” это Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнная связь ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ. ΠŸΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Π·Π°Π΄Π°Ρ‡Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π° Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ‡Π°Ρ‚ΡŒΡΡ другая Π·Π°Π΄Π°Ρ‡Π°, ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ.

Start-to-startΒ 

ΠŸΠ΅Ρ€Π΅Π΄ запуском зависимой Π·Π°Π΄Π°Ρ‡ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Π·Π°Π΄Π°Ρ‡Π°. Ѐиниш любой Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π΅ связан.

ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΡ‚Π΄Π΅Π»ΠΊΠ°

ΠŸΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ». Начало ΠΏΡ€Π΅Π΅ΠΌΠ½ΠΈΠΊΠ° Π½Π΅ зависит ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠ° ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ Ρ€Π°Π½ΡŒΡˆΠ΅, ΠΏΠΎΠ·ΠΆΠ΅ ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с Π½ΠΈΠΌ.

Начало-ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅

Начало-ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ β€” это наимСньшСС ΠΎΠ±Ρ‰Π΅Π΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ. ΠŸΡ€Π΅Π΅ΠΌΠ½ΠΈΠΊ ΡƒΠΆΠ΅ Π½Π°Ρ‡Π°Π» ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ, ΠΏΠΎΠΊΠ° ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ Π½Π°Ρ‡Π°Π».

Зависимости ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π°ΠΌΠΈ ΠΈΠ»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ.

Одним ΠΈΠ· ΠΎΡ‡Π΅Π½ΡŒ распространСнных ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ зависимости ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ другая ΠΊΠΎΠΌΠ°Π½Π΄Π° сдСлала Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π²Π»Π°Π΄Π΅ΡŽΡ‚ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… своСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ смогут Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваша ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€ΠΎΠ² Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»Π° созданиС Ρ„Π°ΠΉΠ»ΠΎΠ² Sketch, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваша ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ² ΠΌΠΎΠ³Π»Π° ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

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

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

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° сопоставлСния зависимостСй

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

Как ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ

Зависимости Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΏΠΎ своСй сути, Π½ΠΎ ΠΎΠ½ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Ρ†Π΅Π»Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ риск Π»ΡŽΠ±Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

По ΠΌΠ΅Ρ€Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ возмоТностСй ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΈΡ… ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ СстСствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ возрастаСт. Π­Ρ‚Π° ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π·Π½Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π³Π΄Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ зависимости Π·Π°Π±Π»Π°Π³ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° β€” нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π² стартовой срСдС ΠΈΠ»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ составлСниС Π΄ΠΎΡ€ΠΎΠΆΠ½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых дСйствСнных способов ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ риски зависимостСй.

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ зависимостСй ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°?

Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ зависимости Π² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ относятся ΠΊ Π·Π°Π΄Π°Ρ‡Π°ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, зависимости ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ зависимостСй ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° относятся ΠΊΠΎ всСму, ΠΎΡ‚ Ρ‡Π΅Π³ΠΎ зависит ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΈΠ»ΠΈ любая Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

БопоставлСниС зависимостСй ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ зависимостСй ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π°ΠΆΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΡ‚ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ зависимости, влияниС любого Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹, Ссли Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ станСт нСдоступной.

БопоставлСниС этих зависимостСй ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°ΠΌ ΠΏΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°ΠΌ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ ΠΈ ΡΠ½ΠΈΠΆΠ°Ρ‚ΡŒ риски, опрСдСляя ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹Π΅ зависимости, внСдряя Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования ΠΈ открывая ΠΊΠ°Π½Π°Π»Ρ‹ связи с Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π°ΠΌΠΈ зависимостСй.

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

ΠžΡ‚ Ρ‡Π΅Π³ΠΎ зависят ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹?

ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… находятся ΠΏΠΎΠ΄ вашим ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π½Π΅Ρ‚. ΠžΠ±Ρ‰ΠΈΠ΅ срСди Π½ΠΈΡ…:

  • ΠžΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² ваш ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚

  • Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ вашСго ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°

  • ΠŸΠ΅Ρ€ΡΠΎΠ½Π°Π» со ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ знаниями, Π±Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ Π½Π΅ смоТСтС ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ

  • 1 9 Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ вашим ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠΌ

  • Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½Π΅Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠ°ΠΊ надстройки ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, встроСнныС Π² ваш ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚

Π’ зависимости ΠΎΡ‚ вашСго ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. ΠŸΡ€ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ зависимостСй ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ зависимостСй.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ сопоставлСния зависимостСй ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°

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

Π£ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΅ΡΡ‚ΡŒ нСсколько способов ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ этот риск. Они ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ сторонС ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄Π°Ρ‡Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½Π°, ΠΈΠ»ΠΈ, Ссли Π±ΡƒΠ΄ΡƒΡ‚ измСнСния, Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒΡΡ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ увСдомят ΠΎΠ± этом руководитСля ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π·Π°Π±Π»Π°Π³ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

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

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

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ совСты ΠΏΠΎ ΡΠΎΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ зависимостСй ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²

1. Β  Β  Β  ΠŸΡ€ΠΈ сопоставлСнии зависимостСй ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ зависимостСй, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ. НС ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ с нашСго списка ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ относятся ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρƒ:

  • АппаратноС обСспСчСниС

  • Β ΠžΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

  • ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС сторонних ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ (Ρ‚. Π΅. ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, прилоТСния ΠΈ Ρ‚.Β Π΄. )

  • ΠŸΠ΅Ρ€ΡΠΎΠ½Π°Π»

  • Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…

Β 2. Β  Β  Β  Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ всСх Π² процСсс сопоставлСния зависимостСй ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ². Зависимости ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния часто Ρ…ΠΎΡ€ΠΎΡˆΠΎ скрыты, ΠΈ ΠΈΡ… Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π· Π³Π»ΡƒΠ±ΠΎΠΊΠΈΡ… Π·Π½Π°Π½ΠΈΠΉ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚. Π’ΠΎΠ²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ всСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρƒ вас большС шансов Π½Π°ΠΉΡ‚ΠΈ эти Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠ΅ зависимости.

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

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π½Π°ΡˆΡƒ ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ «Как Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ успСха Π² качСствС соврСмСнного ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΏΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΡƒΒ»

ВсСсторонний ΠΎΠ±Π·ΠΎΡ€ всСх основных Ρ‚Π΅ΠΌ Ρ€ΠΎΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΏΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρƒ: Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚, ΠΊΠ°ΠΊΠΎΠ²Ρ‹ ΠΈΡ… характСристики, ΠΊΠ°ΠΊ выглядит ΠΈΡ… дСнь, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΊ собСсСдованию. Π² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠΌ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ зависимости Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ зависимости Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎΠΉ, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Π²Ρ‹ программист. На самом Π΄Π΅Π»Π΅, Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ Π½Π΅ программист, эта ΡΡ‚Π°Ρ‚ΡŒΡ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠ»Π΅Π·Π½Π°. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², зависимости β€” это Π½Π΅ просто концСпция программирования. Π­Ρ‚ΠΎ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π°ΠΆΠ΅ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠΈ.

Π‘ΠžΠ”Π•Π Π–ΠΠΠ˜Π•:

  • ΠšΠ°ΠΊΠΎΠ²Ρ‹ зависимости
  • ΠžΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ использования зависимостСй
  • ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ зависимости
  • Π’Ρ‹Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΎΠΉ зависимости
  • Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅Π΅ считываниС

What Are ARE AREDINDIENTIONS

9


What ARE ARE ARE

98 9013 Π―Π Π”Π•Π Π•ΠΠ˜Π― 9013. Π’Π΅Ρ€ΠΌΠΈΠ½ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для обозначСния Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния зависит ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ. ΠŸΡ€ΠΎΡ‰Π΅ говоря, Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° A Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° B ΠΌΠΎΠ³Π»Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° A зависит ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ B. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ B Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ A.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ, Π·Π°Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ А Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π‘ ΠΈΠ»ΠΈ любая другая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π² этом ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ? Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрСно Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ зависимости» Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅, Π½ΠΎ Ссли ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ А трСбуСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ слуТба ΠΈΠ»ΠΈ функция, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π‘.

На самом Π΄Π΅Π»Π΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅, Ссли ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, это Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ зависимостСй ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ программирования, ΠΎΠ½Π»Π°ΠΉΠ½-сСрвисы, сцСнарии программирования ΠΈ Ρ‚. Π΄.

Если Π²Ρ‹ программист Python ΠΈ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ эту ΡΡ‚Π°Ρ‚ΡŒΡŽ, я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π²Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ ΠΎ Pyinstaller. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ с зависимостями, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ² python Π² exe ΠΈ распространСниСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π² Ρ†Π΅Π»ΠΎΠΌ ΠΎΡ‡Π΅Π½ΡŒ информативная ΡΡ‚Π°Ρ‚ΡŒΡ.


ΠžΠΏΠ°ΡΠ½ΠΎΡΡ‚ΠΈ использования зависимостСй

НаличиС зависимостСй для вашСго ΠΊΠΎΠ΄Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ осуТдаСтся. Как ΠΌΡ‹ объясняли Ρ€Π°Π½Π΅Π΅, это сниТаСт Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ вашСго ΠΊΠΎΠ΄Π° ΠΈ, Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚ΡŒ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ углубимся Π² это, ΠΌΡ‹ собираСмся Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ зависимости Π½Π° Π΄Π²Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ.

  1. Зависимости, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌ
  2. Зависимости, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Π½Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ

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

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ зависимостСй, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρƒ вас Π΅ΡΡ‚ΡŒ прямой ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°), зависимости, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚Π΅, ΠΈΠΌΠ΅ΡŽΡ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ высокий Ρ„Π°ΠΊΡ‚ΠΎΡ€ риска. Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли ΠΎΠ΄Π½Π° ΠΈΠ· зависимостСй Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Ρ‚Π΅Ρ€ΠΏΠΈΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния (сломая Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² процСссС), Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ?

Π‘Ρ‹Π»ΠΈ случаи, ΠΊΠΎΠ³Π΄Π° компания ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ основывала своС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° зависимостях ΠΈΠ»ΠΈ внСшнСй слуТбС, ΠΈ ΠΎΠ½ΠΈ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π»ΠΈΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ большим ΡƒΠ±Ρ‹Ρ‚ΠΊΠ°ΠΌ.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, это Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ зависимости. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Ρƒ вас всС Ρ€Π°Π²Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±ΠΎΡ€Π°. Однако Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ связанныС с этим риски, Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ выбирая зависимости.


ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ зависимости

Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒΡΡ вопросом: Β«Π—Π°Ρ‡Π΅ΠΌ ΠΌΡ‹ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ зависимости, Ссли сущСствуСт Ρ‚Π°ΠΊΠΎΠΉ большой риск?Β». Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ вопрос, ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° Π½Π΅Π³ΠΎ довольно прост ΠΈ ясСн.

Π‘ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π΄Π½Π΅ΠΌ ​​прилоТСния становятся всС Π±ΠΎΠ»Π΅Π΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ слоТными. Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ объСм ΠΊΠΎΠ΄Π° прилоТСния Ρ‚Π°ΠΊΠΆΠ΅ увСличиваСтся дСнь ΠΎΡ‚ΠΎ дня. Если Π±Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· нас ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π½Π°Ρ‡ΠΈΠ½Π°Π» с нуля, ΠΌΡ‹ Π΅Π΄Π²Π° Π»ΠΈ добились Π±Ρ‹ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ прогрСсса.

Π§Ρ‚ΠΎ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ, Ρ‚Π°ΠΊ это Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ ΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π½ΠΎ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌ это. По сути, ΠΌΡ‹ экономим врСмя, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ написанный ΠΈ протСстированный ΠΊΠΎΠ΄, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ сэкономлСнноС врСмя для создания Π½ΠΎΠ²Ρ‹Ρ… ΠΈ Π»ΡƒΡ‡ΡˆΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ.

На самом Π΄Π΅Π»Π΅ это ΠΎΠ΄Π½Π° ΠΈΠ· основных ΠΏΡ€ΠΈΡ‡ΠΈΠ½ популярности Python. БущСствуСт Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Python с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ написанным ΠΊΠΎΠ΄ΠΎΠΌ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… сцСнариСв, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ программист ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ слоТныС ΠΈ слоТныС прилоТСния Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… нСдСль, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ эти Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

НовоС ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ΠΈΠ΅ колСса

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Β«ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚ΡŒ колСсо Π·Π°Π½ΠΎΠ²ΠΎΒ». Π­Ρ‚ΠΎ относится ΠΊ Π°ΠΊΡ‚Ρƒ создания вашСй собствСнной вСрсии Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ создано. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π·Π°Π½ΠΎΠ²ΠΎ изобрСсти вСлосипСд, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΊΡ€Π°ΠΉΠ½Π΅ Π½Π΅ рСкомСндуСтся Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ (Π·Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ).

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° этого довольно проста. Если ΡˆΠΈΡ€ΠΎΠΊΠΎ протСстированный ΠΈ принятый сСрвис/Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΡƒΠΆΠ΅ сущСствуСт, Π·Π°Ρ‡Π΅ΠΌ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя ΠΈ усилия Π½Π° созданиС собствСнной вСрсии, которая, вСроятно, Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΈΠΆΠ΅ Ρ‚ΠΎΠΉ, которая ΡƒΠΆΠ΅ сущСствуСт.

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


Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² зависимости

ΠŸΠ°Ρ€Π° Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… слСдуСт ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ зависимости.

  1. ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ: ПослСднСС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, это Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… систСмах ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…. Если Π²Ρ‹ Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ своС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅, Π²Π°ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ слСдуСт Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ свою Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚Π΅ΡΡŒ.
  2. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ вСрсиями: ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎ вСрсии, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ для своСй зависимости. Π’Ρ‹ ΡƒΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ это Π·Π½Π°Ρ‚ΡŒ, Π½ΠΎ каТдая новая вСрсия приносит Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ этой зависимости, Π° ваши ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹/ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ ΡΡ‚Π°Ρ€ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ расписаниСм ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ.
  3. РСгулярныС обновлСния: Π­Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° бСзопасности, ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΎΡ‚ этой зависимости ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ. Если Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π΅ обновлялась Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π³ΠΎΠ΄Π°, Π»ΡƒΡ‡ΡˆΠ΅ Π΅Π΅ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ.
  4. Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ принятия ΠΈ использования: ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… зависимостСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для своСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚ΡŒΡΡ ΠΊ Ρ‚ΠΎΠΌΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΡˆΠΈΡ€ΠΎΠΊΠΎ принят Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ области ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. Π­Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Π° ΠΈ заслуТиваСт довСрия, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сообщСство для этой зависимости Π±ΡƒΠ΄Π΅Ρ‚ большим. ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ‹Π΅ зависимости Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΈ ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ устранСниС Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΎΠΊ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π·Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ.
  5. Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ: ПослСднСС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, β€” это Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, Π½Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΠ² Π΅Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ², Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° нСсовмСстима со всСми ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ ΡΡ‚Ρ€Π΅ΠΌΠΈΠ»ΠΈΡΡŒ. Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° встрСчаСтся Ρ‡Π°Ρ‰Π΅, Ρ‡Π΅ΠΌ Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅. Π•ΡΡ‚ΡŒ всС Π²ΠΈΠ΄Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ связаны, поэтому ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Π΄ΠΈΡ‚Π΅ исслСдованиС Π·Π°Ρ€Π°Π½Π΅Π΅. Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅: Π²ΠΎ врСмя написания ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡ‚Π΅ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свой ΠΊΠΎΠ΄ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΈ Π² Ρ€Π°Π·Π½Ρ‹Ρ… настройках. Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ всС тСстированиС Π½Π° Ρ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ стороннСй зависимости ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠšΠ°Ρ€Ρ‚Ρ‹ Google. Если Π²Ρ‹ создаСтС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ слуТбы опрСдСлСния мСстополоТСния, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ API ΠšΠ°Ρ€Ρ‚ Google для получСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ мСстополоТСнии. Π― Π³ΠΎΠ²ΠΎΡ€ΡŽ, Ρ‡Ρ‚ΠΎ это Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ:

  1. ΠšΠ°Ρ€Ρ‚Ρ‹ Google ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Google.
  2. ΠšΠ°Ρ€Ρ‚Ρ‹ Google ΠΊΠ°ΠΊ сСрвис ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²ΠΎ всСм ΠΌΠΈΡ€Π΅, поэтому Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌΠΈ ΠΈ согласованными. Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ эта услуга исчСзнСт Π·Π° Π½ΠΎΡ‡ΡŒ ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² этом Ρ€ΠΎΠ΄Π΅.
  3. API ΠšΠ°Ρ€Ρ‚ Google прост ΠΈ ΡƒΠ΄ΠΎΠ±Π΅Π½ Π² использовании. Π£ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ бСсплатная вСрсия с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ количСством запросов, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅ΠΌΠΈΡƒΠΌ (платная) вСрсия. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв бСсплатная вСрсия Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚.

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

Однако Π²Π°ΠΌ слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ с ΠΎΡ‡Π΅Π½ΡŒ слабой ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ. Π’ основном просто слСдитС Π·Π° всСм, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.

Π‘ΡƒΠ΄ΡŒΡ‚Π΅ ΡƒΠΌΠ½Π΅Π΅ ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ с ΡƒΠΌΠΎΠΌ!


Π”Ρ€ΡƒΠ³ΠΈΠ΅ рСсурсы

Зависимости Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ β€” это Ρ‚Π΅ΠΌΠ°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ†Π΅Π»ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ. Π­Ρ‚ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС, Ρ‡Π΅ΠΌ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ описано Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅, поэтому, Ссли Π²Π°ΠΌ интСрСсно, ΠΌΡ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ сюда Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ рСсурсы для дальнСйшСго чтСния.

Если Π²Π°ΠΌ интСрСсно ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ зависимостях ΠΈ ΠΈΡ… опасностях Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, я ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ Π²Π°ΠΌ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ эту ΡΡ‚Π°Ρ‚ΡŒΡŽ.

This entry was posted in ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΠ΅