Какова причина использования частей и частей в библиотеках Dart?

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

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

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


person Christophe Herreman    schedule 23.08.2013    source источник
comment
Потому что библиотека - это не совсем то, что думают многие. Библиотека в Dart не является модулем. Я нашел только одно объяснение того, что такое библиотека. Это похоже на "Libraries are units of privacy". Не больше и не меньше.   -  person mezoni    schedule 23.08.2013


Ответы (2)


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

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

library hax;

part 'packages/somelib/secret.dart';

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

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

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

person Pixel Elephant    schedule 23.08.2013
comment
Это действительно имеет смысл. Я никогда не думал об этом так. - person Christophe Herreman; 25.08.2013
comment
С part of ссылкой на имя можно включить деталь в несколько библиотек, если эти библиотеки имеют одинаковое имя. См. Это сообщение от Каспера Лунда . - person Alexandre Ardhuin; 25.08.2013

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

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

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

person Alexandre Ardhuin    schedule 23.08.2013
comment
Из ответа Гилада непонятно, какие люди жаловались. Люди, которые хотят написать хороший инструмент поддержки? Или люди, которые хотят иметь хорошую инструментальную поддержку? - person mezoni; 23.08.2013
comment
Спасибо за ссылку Александр. - person Christophe Herreman; 25.08.2013