πŸ”“ Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ internal для asmdef Π² Unity πŸ”“

πŸ”“ Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ internal для asmdef Π² Unity πŸ”“

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°: πŸ₯ #middle
Assembly Definitions β€” ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Π² Unity. Он прСдоставляСт мноТСство ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… возмоТностСй ΠΈ, Π² частности, позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±Π»Π°Π³Π°ΠΌΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° доступа internal. Но ΠΈΠ½ΠΎΠ³Π΄Π° Π±Ρ‹Π²Π°Π΅Ρ‚ Π½ΡƒΠΆΠ½ΠΎ internal "ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ" ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ рСсурсам.

πŸ“Œ ΠšΡ€Π°Ρ‚ΠΊΠΎ ΠΏΡ€ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ возмоТности Assembly Definitions:

  • ΠŸΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° (UI, Gameplay, Data).
  • ΠŸΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ модулями.
  • ΠŸΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ появлСниС цикличСских зависимостСй, хотя Π±Ρ‹ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.
  • УскоряСт ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ скриптов, Ρ‚.ΠΊ. пСрСкомпиляция происходит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ²ΡˆΠΈΡ…ΡΡ ΠΈ зависимых ΠΎΡ‚ Π½ΠΈΡ… asmdef'ΠΎΠ².
  • ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ платформозависимыС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ (Π² Ρ‚.Ρ‡. чисто Editor-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ).
  • ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Define Constraints Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ†Π΅Π»ΠΎΠ³ΠΎ модуля.
  • ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Define Symbols Π½Π° основС вСрсий Unity ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

ΠŸΡ€ΠΎ это Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ написано Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Unity.

πŸ”’ ΠŸΡ€ΠΎ internal:

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ internal: ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚ доступ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ asmdef. Π’.Π΅. с internal ΠΌΠΎΠΆΠ½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ модуля. Как private Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса. Волько ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ Π²Ρ‹ΡˆΠ΅.

Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Low Coupling, Ρ‚Π°ΠΊ ΠΈ High Cohesion (см GRASP).

🚧 ΠŸΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π½ΠΈΠ΅ internal:

Π­Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния проСктирования, Π½ΠΎ Π΅ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, Π΄Π²Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Π­Ρ‚ΠΎ тСсты ΠΈ Ρ‚ΡƒΠ»Π·Ρ‹ для Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. Test ΠΈ Editor – Π΄Π²Π° модуля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Π½ΠΎ хотят Ρ‚Ρ€ΠΎΠ³Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π·Π° всС доступныС ΠΈ нСдоступныС мСста. Но ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ?

ΠžΡ‚Π²Π΅Ρ‚: Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ InternalsVisibleTo. Но ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?

Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Π΅Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ»ΠΎΡ…ΠΎ освСщён Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Unity. Но всё ΠΎΡ‡Π΅Π½ΡŒ просто. Достаточно ΠΎΠΊΠΎΠ»ΠΎ asmdef'Π° ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» AssemblyInfo.cs ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Π°ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ InternalsVisibleTo с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΠΌΡ‘Π½ asmdef'ΠΎΠ², для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ доступ Π΄ΠΎ internal ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ классов.

πŸ”“ Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ internal для asmdef Π² Unity πŸ”“
πŸ”“ Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ internal для asmdef Π² Unity πŸ”“

πŸ”Ž Поиск asmdef'ΠΎΠ²:

НС всС это Π·Π½Π°ΡŽΡ‚, Π½ΠΎ Π² Unity Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Project ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ всС Assembly Definition Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠΌΠΏΡ‚ t: asmdef.

πŸ”“ Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ internal для asmdef Π² Unity πŸ”“
3
1
6 ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²