Constantine
вы пишете генератор кода, а потом ровно тот же самый код за генератором
Constantine
т.е. ваш json будет 1 в 1 соответствовать, только писать его неудобно, ибо json не подцепит автодополнение входящих параметров
Constantine
а) вы тупо увеличиваете число строк кода просто так
б) вы на самом деле резко ухудшаете его читаемость
Anatoly
"читаемость" субьективна. у нас есть такие конфиги-деревья на несколько экранов по горизонтали и по вертикали. там сложно что-то найти.
Constantine
пока фрагмент помещается на экран, вы можете его читать
Constantine
а вот выяснить, какие переменные используются повторно КРАЙНЕ сложно
Anatoly
ctrl-f ?
Constantine
на каждую переменную, да
Constantine
на самом деле IDE подсветит
Constantine
заметьте, что в записи выше нет такой проблемы
Anatoly
ну или git grep
Constantine
потому что нет одноразовых переменных
Anatoly
нету потому что там копипаста
Constantine
там нет копипасты
Constantine
если вы внимательно подумаете, дерево не содержит автоморфизмов
Anatoly
тогда откуда возьмутся повторные использования?
Constantine
errare humanum est
Anatoly
там либо есть копии, либо их нет
Constantine
перепутал, какую картинку сюда поставить
Anatoly
на такое есть тесты, в т.ч. ручные
Constantine
ну т.е. теперь я на самом деле должен тестировать фрагмент кода
Anatoly
ну и багтрекеры, и программисты чтобы фиксить
Constantine
все эти проблемы возникли потому, что вы написали лишнюю переменную
Anatoly
я не вижу как "ошибка переиспользовать переменную" более вероятна чем "ошибка написать не то в двух местах"
Constantine
я охотно послушаю, каким образом вы собираетесь проверять этот фрагмент кода автоматическими тестами
Constantine
Constantine
при этом вынесение узлов дерева как новых переменных просто удаляет их от места использование - выбирайте, развертка DFS или BFS
Berkus
Anatoly
/warn troll warning
Когда я работал на не очень большими проектами, я использовал MSVS+VAX и радовался жизни. А потом я начал работать над большим проектом, и там intellisense виснет ибо очень много кода, не проиндексировать. Я перешел на голый sublime text, и оказалось что в нём тоже можно писать код. Автокомплит только по токенам в текущем файле, зато поиск по именам файлов работает мгновенно - можно открыть нужный файл и посмотреть что там. Такие дела.
Constantine
большой это сколько?
Anatoly
10-40 MLOC наверное, не считал
Constantine
а там такие проблемы с модульностью или что?
Constantine
просто 10 MLOC это вроде примерно реактось)
Anatoly
около 100'000 .cc и .h файлов
Constantine
я просто к тому, что в моем глубоком понимании такие проекты целиком браться и не должны никогда
Constantine
потому что это тысяча человеколет
Anatoly
тысяча человеколет это всего 5 лет команды из 200 человек
Anatoly
к тому же есть third-party либы
Constantine
команд из 200 человек не бывает
Anatoly
да ну
Constantine
бывают 20 по 10
Anatoly
я имею ввиду 200 чел на 1 продукт, например
Berkus
Constantine
ну да, но просто в этом случае заслонки возникают по естественным причинам
Berkus
то что вы зубы лечите через анус не значит что так нужно
Anatoly
Berkus
хуендой
Constantine
:)
Andrey
автокомплит еще плагинами идеально допиливается
Constantine
беркус не признает продукты ms
Constantine
я просто плохо понимаю, зачем вообще у меня на компе окажется кодовая база в 10 MLOC
Constantine
а на ~ 1MLOC intellisense от 2к15 вижака живее всех живых
Anatoly
https://www.openhub.net/p/firefox - 50 MLOC, 32% - C++ например
Anatoly
1 продукт
Anatoly
пишут его наверное с сотню плюсовиков
Anatoly
а то и больше
Anatoly
всё это надо собрать в один бинарь (или в 10, хз как у них там)
Constantine
ну это 13 MLOC C++
Constantine
и вряд ли у них там нет 20 отдельных направлений
Constantine
которые можно независимо собирать
Anatoly
а может там одна монолитная репа. надо будет как-нибудь качнуть, посмотреть
Constantine
ну я верю, что такое возможно)
Constantine
но это полнейшее legacy должно быть для них и просто проект стопать
Anatoly
в ФФ еще и код говно, сырые указатели во все поля, AddRef руками дергают >_< наверное поэтому они и придумали раст, раз на С++ не получается
Anatoly
https://hg.mozilla.org/mozilla-central/file/bfb7edfd0436/dom/canvas/CanvasRenderingContext2D.cpp#l6141
// Create the fast typed array; it's initialized to 0 by default.
JSObject* darray = Uint8ClampedArray::Create(aCx, aContext, len.value());
if (!darray) {
aError.Throw(NS_ERROR_OUT_OF_MEMORY);
return nullptr;
}
RefPtr<mozilla::dom::ImageData> imageData =
new mozilla::dom::ImageData(aW, aH, *darray);
return imageData.forget();
Anatoly
а это они как раз на раст переходят
bool useServoParser =
#ifdef MOZ_OLD_STYLE
servoStyleSet;
#else
true;
#endifа вы говорите что макросы не нужны
Anatoly
вот она, жиза
Constantine
ml
Привет
Alexander "SonnySlave"
https://vittorioromeo.info/index/blog/mar18_iso_meeting_report.html
Alexander "SonnySlave"
https://hatcat.com/?p=33
Alexander "SonnySlave"
тому что полезно для обучения людей иметь средства визуализации
Alexander "SonnySlave"
но касательно этого у меня у самого пока что больше вопросов, чем ответов
Alexander "SonnySlave"
лучше бы тулингом лучше занялись. а там уже можно было бы рисовать на чём угодно
Alexander "SonnySlave"
Зато в Стандарте будет enum с кучей цветов!!!
Крылатый
Alexander "SonnySlave"