Какова аргументация "части" и "части" в библиотеках Дарта?

Мне было интересно, что аргументы за тем, как определяются библиотеки и их содержимое. В частности, библиотеке необходимо перечислить все части, а части должны указать библиотеку, частью которой они являются.

Это двунаправленное направление кажется мне ненужным, и я ожидаю, что ссылки из библиотеки на части будут достаточно. Кроме того, при добавлении или удалении файлов из библиотек есть 2 места, где необходимо внести изменения.

Кто-нибудь может это объяснить?

Ответ 1

Я не видел, чтобы это было конкретно адресовано в любом месте, но я тоже об этом задумался, и вывод, который я пришел, заключается в том, что это признак неприкосновенности библиотечного уровня, а не конфиденциальности на уровне класса.

Если библиотеке требуется только перечислить ее части, вы можете получить доступ к любым внутренним свойствам библиотеки, просто объявив ее частью:

library hax;

part 'packages/somelib/secret.dart';

Теперь у меня есть доступ к любому частному полю или методу в secret.dart. Я могу сделать это с любым сторонним пакетом, который я импортировал, что делает концепцию конфиденциальности шутки.

Аналогично, если требуется только объявление part of, любой файл может вставлять себя в библиотеку, объявляя, что он является частью этой библиотеки.

Однако, требуя как объявление part в объявлении библиотеки, так и объявление part of в файле, который должен быть включен в библиотеку, Dart избегает этой ситуации.

Ответ 2

Вы можете найти информацию в этот поток.

От Гилада Брача:

Первоначально части не были привязаны к их библиотекам. Люди жаловались, потому что было трудно дать хорошую поддержку инструмента (т.е. Какой объем вы используете при открытии части, но не в библиотеке, которая ее использует?).