Здравствуйте, 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 может быть сколько угодно строк кода.
Не вижу в этом проблемы при наличии чего-то получше нотепада.