Здравствуйте, rameel, Вы писали:
R>Вот не далее как вчера пришла такая мысль. Так что я поддержу предложение R>Ассерты годная вещь и вполне самостоятельная, так что его даже в отдельный пакет засунуть можно
Не знаю, меня идея кучи микропакетов не радует. Разве что сделать один кумулятивный.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Здравствуйте, rameel, Вы писали:
R>Вот не далее как вчера пришла такая мысль. Так что я поддержу предложение R>Ассерты годная вещь и вполне самостоятельная, так что его даже в отдельный пакет засунуть можно
Не, это уже перебор.
А вот разделить чисто базовые вещи, которые должны по уровню соответствовать BCL и остальные штуки, к которым требования не такие строгие было бы классно.
Кстати, польза от awesome list уже есть. Камрад zihotki не поленился написать про косяк с лицензиями.
Временную быструю заглушку я закинул, теперь надо определиться, что делать дальше. Я бы решил проблему кардинально и выкинул ObjectPool к чертям.
Вроде бы у нас больше нет кода под Apache.
Во-первых, в дотнете планируются куда более интересные Span<T>/Memory<T> + ArrayPool<T>.
Во-вторых, одно дело включать код для таргетинга под 4.0 и совсем другое — скидывать чужой код в свой namespace.
Идея насчёт ObjectPool вроде была моя, но я первый готов признать, что получился неудобняк
Здравствуйте, AndrewVK, Вы писали:
AVK>Не знаю, меня идея кучи микропакетов не радует. Разве что сделать один кумулятивный.
Идея бить на микропакеты мне тоже не нравится, да и все равно вряд ли получится, так как один пакет у нас будет завязан на один, а то и два других, вот так весь CodeJam и подтянется
Идея была разбить библиотеку отдельно для утилитарных вещей, скажем базовую и расширенную, которая будет содержать Mapping, TableData, ServiceProvider и т.п.
А выделить ассерты в отдельный пакет я думал потому как, что ни библиотека так свой велосипед с Guard, Ensure, Require. С отдельным пакетом для ассертов, будет шанс, что люди быстрее согласятся ее использовать, чем писать свой недовелосипед, и детских страхов не будет, что там ой как много всего, что я не хочу. Но это так мысли вслух
Здравствуйте, rameel, Вы писали:
R>Частично есть еще InterlockedOperations: InterlockedOperations.cs
R>Хотя... кода там одна строчка, и который сам собой напрашивается
Ну да. Там отсылка не к конкретной реализации, а к алгоритму. Как пруф, что должно работать.
То же самое можно из исходников фреймворка или из сгенеренного кода для событий вытащить.
В общем, если нам нужно принципиально отвязаться от кода под апач-лицензией, код можем из другого источника взять. Ну, или переписать (хотя там и переписывать-то нечего).
Здравствуйте, Sinix, Вы писали:
S>Временную быструю заглушку я закинул, теперь надо определиться, что делать дальше. Я бы решил проблему кардинально и выкинул ObjectPool к чертям.
А это разве не ты его предложил добавить? Лично мое имхо — штука очень специфичная.
S>Идея насчёт ObjectPool вроде была моя, но я первый готов признать, что получился неудобняк
Ну тогда просто выкинуть и все. Тем более что там и с доккоментами все довольно печально.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
AVK>А это разве не ты его предложил добавить? Лично мое имхо — штука очень специфичная.
Предлагал вроде я, по логу — добавил rameel.
S>>Идея насчёт ObjectPool вроде была моя, но я первый готов признать, что получился неудобняк AVK>Ну тогда просто выкинуть и все. Тем более что там и с доккоментами все довольно печально.
Ок, если rameel не против.
Здравствуйте, Sinix, Вы писали:
AVK>>Ну тогда просто выкинуть и все. Тем более что там и с доккоментами все довольно печально. S>Ок, если rameel не против.
Здравствуйте, Sinix, Вы писали:
S>Да, CodeJam.Main.FW35.csproj вообще актуален? Там часть путей (как минимум к Algorithms.EqualRange.Comparer.cs и тыды) старая.
Это отладочный проект, если для таргетинга в 3.5 надо много править и нужна поддержка студии.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
S>>Да, CodeJam.Main.FW35.csproj вообще актуален? Там часть путей (как минимум к Algorithms.EqualRange.Comparer.cs и тыды) старая.
AVK>Это отладочный проект, если для таргетинга в 3.5 надо много править и нужна поддержка студии.
А, ну тогда как будет время — сравни его диффом с основным проектом. Я не хочу туда лезть, т.к. не знаю, что в этом проекте нужно, что нет.
Ну, если честно, я рад, что в awesome нас пока нет — офигенный стимул довести проект до ума.
Потому что замечания-то по делу. Документация ёк, примеры ёк, overbloated — во все поля, развитие... ну пока я один отдуваюсь. Как-то не совсем awesome.
Единственный странный аргумент — про "по отдельности всё это есть". Проблема в том, что каждый мелкий хелпер даёт кучу положительного эффекта и новые пишутся буквально не думая. Тот же свежедобавленный interval tree — все ошибки выловили ассерты, тесты по сути как интеграционные тесты сработали.
Здравствуйте, Sinix, Вы писали:
S>Потому что замечания-то по делу.
Там, по сути, одно замечание — лучше копипастить, чем использовать готовый вылизанный код. Остальное родилось, имхо, исключительно чтобы поспорить.
S> Документация ёк, примеры ёк
Это было понятно и без.
S>overbloated — во все поля,
Можно конкретнее?
S> развитие... ну пока я один отдуваюсь.
Я тебе уже говорил — для конкретно этого проекта это нормально, что нет огромного количества изменений.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Там, по сути, одно замечание — лучше копипастить, чем использовать готовый вылизанный код. Остальное родилось, имхо, исключительно чтобы поспорить.
Ну да, позиция у zihotki своеобразная, но это не значит, что косяков у нас нет
S>>overbloated — во все поля, AVK>Можно конкретнее?
Сейчас CodeJam — всё и обо всём, если разбить (имена условные), получается
* CodeJam.Core — дополнения к фреймворку и таргетинг (отсутствующие типы для младших версий .net)
* CodeJam.Enterprise — все фишки, которые нафиг не нужны для единичной библиотеки, но нужны авторам приложений или своих фреймворков.
Куча проблем уходит. Начиная с моего ворчания по поводу качества кода — оно критично только для базовых вещей, дополняющих готовый код из фреймворка
S>> развитие... ну пока я один отдуваюсь. AVK>Я тебе уже говорил — для конкретно этого проекта это нормально, что нет огромного количества изменений.
Это _не_ нормально. В здоровом проекте есть всегда свободные work items. Т.е. мелкие ошибки типа того, что в начале темы, чинятся сразу, а не как настроение будет.
Ну и нет деления в духе "я правлю только свой код". Нашёл место, которое не устраивает — поправь сразу или с обсуждением в issues.
А, да, насчёт стандартов, можно всё-таки const (и поля, и переменные) с заглавной сделать? Пожалуй единственный пункт, который резко отличается от всех остальных проектов. Раздражает
Здравствуйте, Sinix, Вы писали:
S>Сейчас CodeJam — всё и обо всём,
Он таким и задумывался.
S> если разбить (имена условные), получается S>* CodeJam.Core — дополнения к фреймворку и таргетинг (отсутствующие типы для младших версий .net) S>* CodeJam.Enterprise — все фишки, которые нафиг не нужны для единичной библиотеки, но нужны авторам приложений или своих фреймворков.
Как то слишком нечетко и искусственно, имхо.
S>А, да, насчёт стандартов, можно всё-таки const (и поля, и переменные) с заглавной сделать?
Приватные?
S> Пожалуй единственный пункт, который резко отличается от всех остальных проектов. Раздражает
Это где приватные поля с заглавной буквы?
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
S>>Сейчас CodeJam — всё и обо всём, AVK>Он таким и задумывался.
Ну это не совсем ок, потому что у нас с позиционированием проблемы.
Библиотека для "хелперы к фреймворку" — одно, библиотека для "сделай свой фреймворк" — другое, надо бы разнести.
AVK>Как то слишком нечетко и искусственно, имхо.
Ну да, это общий критерий, который позволяет быстро ответить на вопрос "что выбрать?". По факту точно надо вынести папки Services, Mapping, Metadata, TableData.
S>>А, да, насчёт стандартов, можно всё-таки const (и поля, и переменные) с заглавной сделать? AVK>Приватные?
Ага.
S>> Пожалуй единственный пункт, который резко отличается от всех остальных проектов. Раздражает AVK>Это где приватные поля с заглавной буквы?
Как пример: corefx, поискать "private const" в кавычках. Ссылка:
Здравствуйте, Sinix, Вы писали:
S>Библиотека для "хелперы к фреймворку" — одно, библиотека для "сделай свой фреймворк" — другое, надо бы разнести.
Так а какой бенефит в итоге получится от этого? Вот геморой от двух разных сборок и двух разных пакетов очевиден.
S>>> Пожалуй единственный пункт, который резко отличается от всех остальных проектов. Раздражает AVK>>Это где приватные поля с заглавной буквы? S>Как пример: corefx, поискать "private const" в кавычках. Ссылка: S>
Здравствуйте, AndrewVK, Вы писали:
S>>Библиотека для "хелперы к фреймворку" — одно, библиотека для "сделай свой фреймворк" — другое, надо бы разнести. AVK>Так а какой бенефит в итоге получится от этого? Вот геморой от двух разных сборок и двух разных пакетов очевиден.
С моей точки зрения —
1. Явное разделение зависимостей на слои. Если хелперы начинают тянуть за собой код из, скажем, маппинга, то что-то явно пошло не так
2. Никаких вопросов на тему "ок, мы берём хелперы, но нам не нужна работа с csv, потому что у нас есть своя единственно верная реализация". Таки реальный отзыв. Обоснование было примерно такое: ну вот берёшь ты библиотеку-провайдер для СУБД, а с ней в нагрузку — свой ORM. Впечатление, как будто защитник от mail.ru впаривают Конец цитаты.
3. Меньше борьбы за "весь код должен быть отличным". Ну есть косяки в дизайне отдельных вещей — пусть себе лежат в библиотечке для авторов фреймворков и конечным пользователям не мешают.
Про версии — нет никакого геммороя, главное чтоб релизы обоих сборок выпускались одновременно. Я ж 4 сборки для перфтестов как-то обновляю и ок.
AVK>Кто в лес, кто по дрова.
Ага, есть такое дело. Но с заглавной гораздо чаще встречается. Проверил в репо рослина — тож самое. Во всех проектах, где работал, в другом кейсе писал в основном народ, пересевший с других языков. Выборка не факт что репрезентативная, поэтому за аргумент не катит
S>>Ну и не поля, а константы. То, что константа как поле хранится — это чисто деталь реализации. AVK>https://github.com/dotnet/corefx/search?utf8=%E2%9C%93&q=%22private+static+readonly%22 AVK>Семантически очень близкие сущности выглядят совершенно по разному. Нафига нам этот геморой?
Ухтыж, забавно. В смысле, с моей точки зрения константы гораздо ближе к enum members чем к полям. Если рассматривать константы как поля — то да, твой вариант логичнее. Если остальных устраивает — ок.
S>> Приватные Enum-ы ж с заглавной — норм. AVK>Енум это тип, а не поле.
Я про enum members. Не, понятно, что под капотом у enum member — public const field, но это чисто деталь реализации.
AVK>Какие то хвосты остались. Поправил
Ок, спасиб!