aadz
:)
Roman
результат кодогенерации должен быть запушен в репу, конечно а для запуска кодогенерации (и всего остального подготовительного) есть go generate
я вот почему кодо-ген. не люблю так потому-что после изменении образа на каком нибудь DSL из которого генерится .go код - нужно ещё вручную кодо-ген запускать... практически можно изменить исходники (учитывая что генерированные файлы это не исходники), запушать их в репу но забыть прогенерить новый код... а это рассинхрон. если бы это можно было сделать автоматически перед каждой компиляцией то это бы избегать ручную генерацию. В идеале конечно же с кешированием.
Daniel
по-хорошему - это надо пушить в репу
Bohdan
по-хорошему - это надо пушить в репу
сначала пушить, а потом ещё на ci повторять
Bohdan
во избежание "забыл"
Bohdan
хотя...
Bohdan
it depends впрочем, как всегда
Roman
ну нахер...
Bohdan
нет, чтобы он имел свежий результат кодгена
Bohdan
кстати, ещё один вариант теста - git status после генерации на ci
Алексей
Ну это такое себе
Алексей
потому что ci - это всё таки немного из другой оперы
Алексей
потому что можно без всякого ci разрабатывать, и тогда придётся самому следить за кодогенерацией
aadz
ci - это команда из RCS? ;)
Roman
нет, чтобы он имел свежий результат кодгена
проблема в том, что на CI то он может сгенерить себе код и скомпилить и показать зелёный знак... а пользователь может `go get`нуть пакет и забыть прокрутить кодоген повторяемости билда ради... а девелопер мог забыть прокрутить кодоген до пуша... так и получится что CI говорит всё окей а у тебя либо не билдится либо в самом худшем случае билдится с багами
Roman
"изменил DSL - прогенерь код!" забыл прогенерить код перед пушем? сломал софт...
Bohdan
если после генерации что - то изменилось (забыл сгенерить вручную) - билд упал
Алексей
не спорю, но я все же за автоматизацию)
я вообще говорю про то, что упомянутая задача - это вообще то этап сборки (вообще, а не в ci)
Daniel
коллеги, хватит, пожалуйста
Daniel
это не дискуссионный вопрос
Алексей
Daniel
результат кодогенерации должен быть запушен в репу
Daniel
точка
Roman
чеклисты помогут🤔
найн, найн, найн, найн, найн лучше всего генерить код ДО каждого билда, а ради ускорения использовать некий механизм кеширования, чтоб генератор сам распознавал что нынешний сгенеренный код уже соответствует DSL (чемсуммы или ещё как там...)
Bohdan
результат кодогенерации должен быть запушен в репу
я ни капли не спорю, а выступаю за максимум проверок
Алексей
то есть ci тут уже не поможет точно, не будет же ci запускать кодогенерацию и пушить сгенерированный код
Roman
результат кодогенерации должен быть запушен в репу
"должен" не учитывает worst case люди много чего должны но на людей нельзя 100% полагаться, даже на самого себя, люди не алгоритмы, люди имеют свойство ошибаться
Daniel
и вот именно поэтому - результат кодогенерации должен быть запушен в репу, и использоваться из нее
Roman
why
уже описал выше, главная причина: нет гарантированной синхронизации DSL и генерированного запушенного кода
Daniel
чтобы не искать виноватого по всей цепочке
Алексей
Вообще эта штука может выполняться автоматически при компиляции (с кешированием конечно же). Но не выполняется. Вот суть претензий. То есть фактически на программиста возложена та задача, которая явно не должна быть на него возложена.
🏁Александр
вот "локальный" вентор тоже кто-то говорил что надо коммитить в репу
🏁Александр
но такое
Daniel
нет гарантированной синхронизации - это не проблема
Daniel
я говорил, и повторю
Roman
кодогенерация - это написание кода. эта задача возложена на программиста.
nope, я так не считаю. генерики это, например, тот вид автоматической кодогенерации который возлагается на систему именно для того чтобы программиста разгрузить
Roman
кодогенерация кодогенерации рознь
Daniel
самое плохое в генериках то, что их притягивают за уши туда, где им совсем не место
Daniel
еще раз - это не дискуссионный вопрос
Daniel
у себя делайте, как хотите
aadz
кодогенерация кодогенерации рознь
и дженерики дженикам - тоже рознь
Алексей
кодогенерация - это написание кода. эта задача возложена на программиста.
Кодогенерация - это не написание кода. А его генерация. Ваш кэп. И ответственность за запуск этой самой генерации просто опасно возлагать на такое часто ошибающееся существо как человек.
Daniel
если отдаете наружу - помните, что все, что пользователь сделает, это go get
🏁Александр
Roman
репродуцируемых?
reproducible, repeatable.. называйте как хотите я предпочитаю reproducible, от слова produce
🏁Александр
повторяемых? 🙂
Алексей
Удивительно что мы вообще тут обсуждаем столь очевидные вещи из категории must have.
🏁Александр
ну у меня лично он каждый раз забирается dep
🏁Александр
не хочу гадить историю гита
🏁Александр
потом мержить очень больно чужие либы
Roman
Удивительно что мы вообще тут обсуждаем столь очевидные вещи из категории must have.
вопрос как этого добиться... кодогенерация до каждого билда это дорого, слишком дорого. нужен некий механизм кеширования
Roman
генерировать только тогда, когда изменился DSL образ
Илья
уже описал выше, главная причина: нет гарантированной синхронизации DSL и генерированного запушенного кода
Если изменение затронуло какое то поведение, то на это, наверное, есть тест и он упадет
aadz
а можно я нескромно спрошу? А что за кодогенерация такая постоянно? Зачем это?
Daniel
Кодогенерация - это не написание кода. А его генерация. Ваш кэп. И ответственность за запуск этой самой генерации просто опасно возлагать на такое часто ошибающееся существо как человек.
если проект компилируется без результатов генерации - так, может, и не нужна она? а если нет - вы же компилируете свою программу, прежде чем пушнуть? или вы хотите оставить программисту возможность компилировать локально другой код, нежели будет использовать CI?
Daniel
в любом случае - это тупо.
Алексей
потому что я человек
aadz
ой
Илья
вопрос как этого добиться... кодогенерация до каждого билда это дорого, слишком дорого. нужен некий механизм кеширования
В easyjson пробовали такое сделать, но там сложно, нужно еще дерево импортов крутить каждый раз
Daniel
я могу тупо забыть запустить кодогенерацию
и что? какую проблему решит кодогенерация на CI?
Алексей
и да, если программа скомпилировалась и даже если тесты отработали - это ещё не значит что всё нормально будет
Алексей
и что? какую проблему решит кодогенерация на CI?
да никакой, я же как раз против кодогенерации в CI выступал
🏁Александр
и что? какую проблему решит кодогенерация на CI?
* уменьшение кодовой базе в репе * страховка от ошибок "забыл запустить"