Re[20]: [C#] горшочек, не вари
От: karbofos42 Россия  
Дата: 15.11.24 14:41
Оценка:
Здравствуйте, ·, Вы писали:

·>json обычно не просто так json, а для обмена данными с другими системами, поэтому пишется какой-нибдуь swagger,avro,etc и по нему генерится код .


Ага. Обычно. У меня только обычно даже по присланной json schema ничего дельного не генерируется. Потому что и схема отличается от реальности и формат специфически продуман.
В итоге проще написать всё вручную, нежели сначала возиться с настройкой генерации, а потом всё перелопачивать и перепроверять.

·>Код маппинга строк генерится из схемы БД.


Разве что для банального CRUD это подойдёт, т.к. помимо select * в реальном приложении будет куча выборок произвольных данных

·>И что? Это уже задача ЯП выдавать ошибки компиляции, если что не так. И, вроде, вполне справляется.


Я к тому, что в итоге field описан в начале файла, getter — в середине, setter — в конце.
Нужна дисциплина всех разработчиков, чтобы такого не было и можно было легко посмотреть логику получения значений и изменения.

·>Ибо нехрен.


Что нехрен? Добавлять в setter'ы валидацию данных, например?

·>Если уж очень надо, то такие методы умеет IDE писать за тебя.


Но не умеет их потом поддерживать.

·>Грубо говоря, если свести к абсурду, нам не нужна поддержка в ЯП ВУ метода "void printHelloWorld()" для которого будет сразу генериться весь нужный код, хоть это и упрощает написание кода в некоторых случаях.


Тогда и методы не нужны, ведь есть функции, просто в них неявно this-объект передаётся.

·>Вот здесь смотри картинку в вопросе, обрати внимание на номера строк. Тривиальные сеттеры-гетеры задетектились и заколлапсились.


Ну, и в итоге 3 отдельных строки, а не 1, как было бы со свойством. И между get/set может быть сколько угодно строк кода.
Re[21]: [C#] горшочек, не вари
От: · Великобритания  
Дата: 15.11.24 17:33
Оценка:
Здравствуйте, karbofos42, Вы писали:

K>·>json обычно не просто так json, а для обмена данными с другими системами, поэтому пишется какой-нибдуь swagger,avro,etc и по нему генерится код .

K>Ага. Обычно. У меня только обычно даже по присланной json schema ничего дельного не генерируется. Потому что и схема отличается от реальности и формат специфически продуман.
За такое надо по рукам давать.

K>В итоге проще написать всё вручную, нежели сначала возиться с настройкой генерации, а потом всё перелопачивать и перепроверять.

Плохой подход, непродуктивный.

K>·>Код маппинга строк генерится из схемы БД.

K>Разве что для банального CRUD это подойдёт, т.к. помимо select * в реальном приложении будет куча выборок произвольных данных
Для выборок проперти не нужны. Нужны read-only структуры.

K>·>И что? Это уже задача ЯП выдавать ошибки компиляции, если что не так. И, вроде, вполне справляется.

K>Я к тому, что в итоге field описан в начале файла, getter — в середине, setter — в конце.
K>Нужна дисциплина всех разработчиков, чтобы такого не было и можно было легко посмотреть логику получения значений и изменения.
Я уже забыл такую проблему со времён когда приходилось использовать нотепад для работы с кодом.

K>·>Ибо нехрен.

K>Что нехрен? Добавлять в setter'ы валидацию данных, например?
Угу. Валидацией данных должны заниматься валидаторы, а не мапперы. Или уж сразу с типами писать: не иметь SetEmail(string value) с логикой валидации, а иметь SetEmail(Email value).

K>·>Если уж очень надо, то такие методы умеет IDE писать за тебя.

K>Но не умеет их потом поддерживать.
Умеет, конечно, как и любой другой метод.

K>·>Грубо говоря, если свести к абсурду, нам не нужна поддержка в ЯП ВУ метода "void printHelloWorld()" для которого будет сразу генериться весь нужный код, хоть это и упрощает написание кода в некоторых случаях.

K>Тогда и методы не нужны, ведь есть функции, просто в них неявно this-объект передаётся.
Если в ЯП нет виртуальных функций, то верно.

K>·>Вот здесь смотри картинку в вопросе, обрати внимание на номера строк. Тривиальные сеттеры-гетеры задетектились и заколлапсились.

K>Ну, и в итоге 3 отдельных строки, а не 1, как было бы со свойством. И между get/set может быть сколько угодно строк кода.
Не вижу в этом проблемы при наличии чего-то получше нотепада.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[11]: [C#] горшочек, не вари
От: _NN_ www.nemerleweb.com
Дата: 20.11.24 15:47
Оценка:
Здравствуйте, Codealot, Вы писали:

C>Здравствуйте, _NN_, Вы писали:


_NN>>С квадратными можно новые правила придумать.

_NN>>А со старым синтаксисом менять правила это сломать рабочий код.

C>Вот на этот счет у меня большие сомнения.


Тогда вам в C# language discussions.
Напишите предложение как сделать так, чтобы со старым синтаксисом работало и если действительно нет с этим проблем, разработчики будут только рады.
Это улучшит производительность без изменения кода.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[12]: [C#] горшочек, не вари
От: Codealot Земля  
Дата: 20.11.24 16:08
Оценка:
Здравствуйте, _NN_, Вы писали:

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


Не будут. Они уже сделали решение сделать новый синтаксис, а если сказать им, что решение было неверным — будут биться до последнего вздоха.
Ты вчера родился?
Ад пуст, все бесы здесь.
Re[10]: [C#] горшочек, не вари
От: syrompe  
Дата: 20.11.24 16:10
Оценка: 2 (1)
M>·>Так я хочу сказать, о том как добавление абсолютно бесполезного сахара ведёт к поломке действительно удобной фичи оверлоада методов. Сабж, однако.

M>Могу предположить, что MS предусмотрел какой-нибудь атрибут, которым авторы библиотеки могут пометить одну из перегрузок для устранения ambiguity.


OverloadResolutionPriorityAttribute

Правда как я понял изначально про это забыли и атрибут только в последней версии добавили.
Re[5]: [C#] горшочек, не вари
От: Философ Ад http://vk.com/id10256428
Дата: 20.11.24 17:51
Оценка: +2
Здравствуйте, karbofos42, Вы писали:

K>WPF — редкостная шляпа. Идея интересная, реализация ужасная и заброшен недоделанным.


Я первые 2 года (примерно) тоже так думал, потом сильно поменял отношение:

Особенно последнее: сопровождать MVVM сильно проще чем что-либо на WinForms или VCL — самопальщина и рядом не лежала.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[3]: [C#] горшочек, не вари
От: Философ Ад http://vk.com/id10256428
Дата: 20.11.24 18:06
Оценка: +1
Здравствуйте, Codealot, Вы писали:

vsb>>Так C# же с рождения такой — эдакая недо-Java, в которую тащут всё блестящее.


JAVA — это C# без структур и, как следствие, без PInvoke. Из этого мноооого чего вытекает.
Вывод жаба — недошарп.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[6]: [C#] горшочек, не вари
От: karbofos42 Россия  
Дата: 20.11.24 19:19
Оценка: :)
Здравствуйте, Философ, Вы писали:

Ф>простота разметки интерфейса (вёрстка интерфейса, как на HTML),


Совсем не как в HTML, да и HTML не так, чтобы был хорошим решением.
В каком-нибудь Grid'е по ячейкам распихивать контролы — такое себе удовольствие.
Нужно потом посередине строку добавить и сиди у половины из них меняй номер в Grid.Row.

Ф>простота создания анимаций,


Как-то не нужно, не пользуюсь. Смотрел всякие стандартные ProgressBar и т.п. В итоге часть логики в XAML расписана, часть в коде на C#.
Я удобства не заметил, прикола не понял.

Ф>из коробки разделение на GUI и модель решают.


В том и проблема, что из коробки ничего нет.
Допустим, есть во ViewModel свойство bool IsActive.
Нужно на основании него показать/скрыть контрол.
Просто так биндинг сделать нельзя, т.к. Visibility — это enum с тремя значениями, а не bool.
Как в Razor Pages нельзя вставлять куски кода на C# или хоть какие-то простые выражения писать.
Есть вариант — конвертер написать, добавить его в ресурсы и прокинуть в биндинг.
Либо можно стиль определить с триггером, что тоже очень быстро и удобно делается.
Ну, либо с расширениями разметки играться.
Удобного решения из коробки нет.
Нужна банальная инверсия bool-значения — всё то же самое, в xaml это просто так сделать нельзя.
Валидации нормальной тоже из коробки нет, есть три заготовки и у всех свои недостатки и нюансы.
Механизма как из ViewModel показать другую ViewModel в новом окне тоже нет.
Да хоть какого-то адекватного механизма обмена от ViewModel к View — нет.
100500 событий создавать и подписываться на них — такое себе.
PropertyChanged для биндинга уже хватает, для которого опять же стандартного механизма нет и везде свои велосипеды для выбрасывания события при изменении свойства.
В итоге нужно целый фреймворк пилить, чтобы этим самым WPF хоть как-то нормально пользоваться.
Re[6]: [C#] горшочек, не вари
От: Codealot Земля  
Дата: 22.12.24 15:41
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Новый синтаскис позволяет вызывать AddRange, что конечно более приемлимо чем вызов Add по отдельности.


Кстати, откуда такая информация? IL никаких AddRange не показывает.
Ад пуст, все бесы здесь.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.