Структура папок не є картою залежностей

Каталог показує, де лежать файли, але не пояснює, хто кого імпортує, які модулі є центральними та які зміни матимуть великий радіус впливу. Для безпечного планування потрібні зовнішні й внутрішні залежності, зворотні посилання та сигнали архітектурних циклів.

ЗрізПитання
Зовнішні залежностіЯкі бібліотеки заявлені та які реально встановлені?
Внутрішні залежностіЯкі модулі імпортують або викликають один одного?
Зворотні залежностіХто використовує центральний файл чи сервіс?
Архітектурні ризикиЧи є цикли або порушення напрямку шарів?

Почніть із маніфестів і dependency tree

  1. Прочитайте manifests і lockfiles.
  2. Відокремте прямі залежності від транзитивних.
  3. За потреби отримайте повне дерево залежностей.
  4. Проаналізуйте імпорти та виклики між внутрішніми модулями.
  5. Знайдіть зворотні references для центральних компонентів.
  6. Занесіть лише компактні звʼязки та ризики до inventory.
Приклади команд, які потрібно адаптувати
./gradlew dependencies --configuration runtimeClasspath > deps-backend.txt
npm ls --all > deps-frontend.txt

git grep "RefundPolicy" backend/src backend/test

Позначайте силу висновку

  • [підтверджено] — звʼязок знайдено безпосередньо;
  • [потрібно перевірити] — є сигнал, але доказ неповний;
  • [не перевірено] — ділянку ще не досліджували.

Залежності як радіус впливу

СпостереженняПрактичний висновок
Багато модулів посилаються на сервісЗміна має широкий потенційний вплив
Модулі взаємно імпортують один одногоПотрібна окрема перевірка циклу
Пряма залежність є лише в manifestВона заявлена, але використання ще треба підтвердити
Звʼязок видно лише з назви папкиЦе гіпотеза, а не доказ

Не рефакторьте під час первинного mapping

Виявлений цикл або міжшаровий імпорт може бути важливим сигналом, але discovery і виправлення — різні задачі. Спочатку зафіксуйте залежність, джерело та рівень упевненості; рішення про рефакторинг приймайте окремо.

Канонічне джерело уроку · JavaRush

Відкрити матеріал JavaRush