
Paul
04.03.2017
14:54:01

Sergey
04.03.2017
14:54:36
делает то что мне нужно
об этом и разговор. В языках где есть нормальный IoC контейнер у тебя нет выхода и ты объявляешь контракты через отдельную сущность - интерфейс.
а в модулях такого нет

Paul
04.03.2017
14:54:41
Я не пойму о чём мы спорим. Если ты хочешь чтобы что-то проверялось, тебе нужно будет описать интерфейс. Отдельно или в самом япе (flow/ts) это неважно, но он должен быть описан

Google

Paul
04.03.2017
14:54:54
Ты напутал всё и вся

Sergey
04.03.2017
14:55:02

Paul
04.03.2017
14:55:39
Во-первых, соответствует интерфейсу != делает то что мне нужно
Во-вторых, модуль ничем от объекта в js не отличается, так что описание объекта и модуля взаимозаменяемы

Sergey
04.03.2017
14:55:50
если тебе нужна предыстория разговора - шел разговор как соотнести модули и IoC, то есть выходит что модули = использование сервис локатора, и есть проблема с подменой зависимостей и графом зависимостей.

Paul
04.03.2017
14:55:54
Я не понимаю, что такое "нормальный IoC контейнер"

Sergey
04.03.2017
14:56:20

Paul
04.03.2017
14:56:27
Если ты можешь подменять require, тебе не нужен свой ioc
он будет поверх require

Sergey
04.03.2017
14:56:40

Paul
04.03.2017
14:57:28
подменяешь require и получаешь DI на уровне модулей

Google

Paul
04.03.2017
14:58:05
Нужна проверка? Описывай интерфейс модулей

Sergey
04.03.2017
14:58:48

Paul
04.03.2017
14:58:59
Интерфейс это совокупность сигнатур.
Ты можешь попытаться вводить некоторые пред/пост-условия или инварианты и получить контракты, но и это не будет гарантировать предоставление поведения

Sergey
04.03.2017
14:59:48

Paul
04.03.2017
15:00:03
Что
подожди
какой кастыль

Aleh
04.03.2017
15:00:07

Paul
04.03.2017
15:00:14
ты о interface как конструкции в джавах?
Об этой чуши никто тут не говорит

Sergey
04.03.2017
15:00:25
да) и виртуальных методах в плюсах

Paul
04.03.2017
15:01:13
Ты в компайлтайме проверить можешь только интерфейсы

Sergey
04.03.2017
15:01:17
и представим что в рамках контракта у нас есть какие-то способы взаимодействия, описываемые функциями/методами/сообщениями
да, ты не можешь в кампайл тайме проверить поведение

Paul
04.03.2017
15:01:31
Ну, если сильная система типов и это практически прувер, то ряд условий ещё, да

Aleh
04.03.2017
15:01:42
Есть модуль А, который импортит модуль Б. В конфиге я поставил резолв модуля Б на модуль В, хочу чтоьы статический анализатор это проверил, иде поняла и прочее

Paul
04.03.2017
15:01:45
Так, ладно, стоп

Google

Sergey
04.03.2017
15:01:47
но хотя бы способ коммуникации - можешь

Aleh
04.03.2017
15:02:03
Это есть, если юзаю классический Ioc framework
Хочу убрать лишнее и переложить максимум на язык
Но нужно тулзы подстроить

Paul
04.03.2017
15:03:18
Я не знаю в какой спор я влез и о чём тут вообще речь идёт. Кто-то возникал против модульной системы в js — я аргументировал что можно всё подменить и не нужно будет свои велосипеды с отдельными ioc фреймворками вести. Возможность чеккинга тоже есть (проверка module.exports), работает ли она где-то сейчас или нет это другой вопрос, но реализовать можно. Всё /thread

Sergey
04.03.2017
15:03:39
не только js использует модули

Paul
04.03.2017
15:03:47
Что " в целом"?
Хватит в воздух пердеть

Aleh
04.03.2017
15:03:55
С конфигом вебпака/любого бандлера в том, что они сами для себя. Ts/flow не поймет, нода не поймет, eslint не поймет и т.д.

Paul
04.03.2017
15:03:59
Это конкретная задача и решается на конкретных технологиях

Aleh
04.03.2017
15:04:14
Есть где-то, где решена?

Paul
04.03.2017
15:04:26
Скорее всего нет

Aleh
04.03.2017
15:04:27
Я знаю где решена с ioc framework

Paul
04.03.2017
15:04:46
ioc тоже везде придётся встраивать

Aleh
04.03.2017
15:04:47
И даже в пайтоне юзают примерно поэтому инъекцию в конструктор
Потому что с модулями неудобно
Хотя модули там хороши, но видимо эта проблема с резолвом портит все

Paul
04.03.2017
15:06:26
Модули в питоне хуже некуда
самая мудацкая система модулей

Google

Sergey
04.03.2017
15:06:44

Aleh
04.03.2017
15:06:51

Paul
04.03.2017
15:06:57

Aleh
04.03.2017
15:07:38
Ненастраиваемый резолв?)

Paul
04.03.2017
15:08:14

Aleh
04.03.2017
15:08:16
Ну это выше уже обсудили вроде
Вроде только в тестах рекомендуют менятт

Paul
04.03.2017
15:08:40
Не важно. builtin выше кастомных => в мусорку

Aleh
04.03.2017
15:08:45
Пфф

Admin
ERROR: S client not available

Aleh
04.03.2017
15:08:46
Нет

Paul
04.03.2017
15:08:52
Что "нет"?
Завтра новый модуль добавят
И у всех всё сломается

Aleh
04.03.2017
15:09:02
Это очень минорная проблема резолва

Paul
04.03.2017
15:09:14
Это охуеть какая проблема резолва
Ибо резолва ещё и нет
резолв начинается в sys.path
И внезапно туда впилить уже ничего нельзя

Google

Aleh
04.03.2017
15:09:39
Определение того, где искать модуль = резолв
Про частные реализации опустим
В пайтоне просто есть еще пользовательский, который настраивается

Paul
04.03.2017
15:10:27

Aleh
04.03.2017
15:10:29
Корчое надо эту мысль в чате ноды толкнуть

Paul
04.03.2017
15:10:40
В ноде всё нормально с модульной системой
Не считая ненастраиваемого NODE_PATH отдельно для пакетов

Aleh
04.03.2017
15:10:50
Может тогда хорошо esm впилят)

Paul
04.03.2017
15:11:08
Он не решает проблем
от слова совсем
проблема ".../../...//...//.." так и останется

Aleh
04.03.2017
15:11:25
Там надо выдрать резолв отдельно
И под этого можно конфиги выдумать

Paul
04.03.2017
15:11:41
Ну, когда эту часть спеки допилят, тогда и будет о чём говорить

Aleh
04.03.2017
15:11:53
Уже вроде про интероп и цикл жизни все перетерли
В сентябре и феврале вроде

Paul
04.03.2017
15:12:24
интероп? цикл жизни?
я тебя не понимат
мы модульную систему обсуждали

Aleh
04.03.2017
15:12:38
Про cjs - esm в ноде

Paul
04.03.2017
15:12:56
А, подожди
esm это ES module, не?