bem-sdk-archive / bem-deps

🎯 Manage BEM dependencies. DEPRECATED →
https://github.com/bem/bem-sdk/tree/master/packages/deps
Other
10 stars 5 forks source link

Specs for Resolve #3

Closed blond closed 9 years ago

blond commented 9 years ago

Write specs for resolve method: #2.

Input processing

Resolving unordered dependencies

Resolving ordered dependencies

Resolving dependency cycles

Other

SwinX commented 9 years ago

Т.к. решили разбить спецификацию на разделы, неплохо определиться, на какие именно разделы разбивать. От обсуждения хочется получить готовую структуру разделов, которая станет высокоуровневым критерием готовности спеки. Пока писались тесты большим скопом, логическое разделение получилось таким:

Структура выглядит не идеальной, но предлагаю её отправной точкой для обсуждения, что должно войти в спеку в конечном итоге. Как первый и самый очевидный вопрос - нужно ли выделять в отдельную группу ignore tech dependencies when no tech to resolve specified или же добавить это в ignoring tech dependencies ?

@blond напиши пожалуйста, что думаешь.

SwinX commented 9 years ago

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

SwinX commented 9 years ago

Пока писал тесты для пункта resolve basic dependencies, сложилось впечатление, что спецификация выходит плохо структурированной. Также на это намекнула путаница с терминологией отсюда: https://github.com/bem-incubator/bem-deps/pull/11#discussion_r33152298 В качестве варианта преодоления этой боли, предлагаю следующее:

  1. Определиться с терминологией. Сейчас есть несколько вариантов, как обозначить зависимости, для которых важен и не важен порядок. Мне кажется, что наилучший вариант такой:
    • Зависимость, для которой указан порядок назвать weak
    • Зависимость, для которой не указан порядок назвать strong
  2. Переделать структуру спецификации, отталкиваясь от strong и weak зависимостей. Для каждого класса зависимостей сделать разделы касающиеся:
    • зависимостей вне контекста технологий
    • зависимостей в контексте технологии
    • рекомендуемого порядка для этих зависимостей Отдельным разделом вынести разрешение циклических зависимостей с подразделами касающимися weak - weak, weak - strong и strong - strong циклов. Отдельный раздел для описания учёта естественного порядка БЭМ - сущностей. Возможно добавить отдельный раздел, описывающий игнорирование tech - зависимостей в определенных случаях.

Таким образом предлагаемая новая структура спеки следующая

Input processing

Resolving weak dependencies

Resolving strong dependencies

Resolving dependency cycles

Other

blond commented 9 years ago

Мне в целом всё нравится.

По поводу названий, я всё же за strict non strict. У strong и weak несколько другая семантика, и мне не нравится, что вводится 2 термина, вместо одного. Кажется, что из-за этого можно перепутать какие зависимости weak, а какие strong.

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

SwinX commented 9 years ago

Резюме обсуждений голосом, которое может быть интересно всем:

  1. Кажется нашли подходящие термины для упорядоченных и неупорядоченных зависимостей: * ordered - зависимость, для которой явно указан порядок следования * unordered - зависимость для которой порядок явно не указан
  2. Обговорили новую структуру спеки. Добавился новый пункт, описывающий приоритет упорядочивания зависимостей: ordering priority.
  3. Новая структура признана жизнеспособной, решили её пока заморозить и реализовать. В дальнейшем - уже исправлять то, то получится.
SwinX commented 9 years ago

Обновил структуру спеки сверху, также переделал все связанные issues.