Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Лапшекодим валидацию, или запрещаем вводить неправильные данные?

2865  1 2 3 4 5 6 7 8 9 все
alex445 коренной житель03.06.22 00:34
NEW 03.06.22 00:34 
в ответ AlexNek 02.06.22 22:47
У нормальных поставщиков контролов оно уже давно так и есть.
А кто сказал что МС - нормальный поставщик контролов? Они делают только то что нужно лично им.

Поэтому во всех нормальных конторах юзаются всякие девэкспрессы и прочие контрол-паки. Да и от самой МС есть какие-то бесплатные - Fluent чего-то там.

#21 
alex445 коренной житель03.06.22 08:53
03.06.22 08:53 
в ответ 7495 02.06.22 17:10, Последний раз изменено 03.06.22 08:54 (alex445)
2. Кто программировал усложнял СПЕЦИАЛЬНО.

А если вскроется? Приходит какой-нибудь мурр на проект, а там зелёные сеньёры. Он такой про себя - "хыхыыы, все лохи, а я семизнак... щас устроим им тут театр незаменимого актёра". Ну типа срублю второй семизнак. А тут заказчик решил вдруг со стороны экспертизу заказать, или просто другой знакомый семизнак на код взглянул и выдал - "да вас тут за нос водят, бутерброд из паттернов на ровном месте делают, чтобы никто не разобрался". Что тогда?

#22 
AlexNek патриот03.06.22 12:53
AlexNek
03.06.22 12:53 
в ответ alex445 03.06.22 00:32
с атрибутами приходится возиться. А как их сериализовать?

Зачем?


И да, пачка свойств выглядит читаемее

Кому как. К тому же, засирается само определение данных

#23 
7495 местный житель03.06.22 20:55
7495
NEW 03.06.22 20:55 
в ответ alex445 03.06.22 08:53
заказчик решил вдруг со стороны экспертизу заказать


А что покажет сторонний аудит? А аудит покажет повышение производительности на 30 процентов! )))


Не нравится стиль? Пусть нанимают этого самого тестера или QA, он разберётся или напишет с нуля.. если сможет)


А захотят уволить? А у тебя внезапно накрылся комп и все флешки с документацией полетели, такое иногда бывает.

Потом вместе идут читать контракт, который заключили в самом начале, обязанности и кто кому платит неустойки.

Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#24 
Срыв покровов патриот03.06.22 22:06
NEW 03.06.22 22:06 
в ответ 7495 03.06.22 20:55

флешки с документацией

И перфокарты с исходниками))

#25 
7495 местный житель03.06.22 22:58
7495
NEW 03.06.22 22:58 
в ответ Срыв покровов 03.06.22 22:06

флешки с документацией

И перфокарты с исходниками))


Смешно? пример из жизни, уволили человека - он унёс с собой всё что можно.


будешь сейчас про сегодняшние реалии рассказывать? про резервные копирования в облака итд итп, ну дак и контракты каждые пару лет обновляются дополняются, а пользовательские соглашения вообще каждые пару месяцев, не? прокол, юристы латают, переписывают пункты, не?

Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#26 
alex445 коренной житель04.06.22 00:48
NEW 04.06.22 00:48 
в ответ AlexNek 03.06.22 12:53, Последний раз изменено 04.06.22 00:48 (alex445)

Кстати, как будете привязывать те же Min и Max какого-нибудь атрибута Range к какому-нибудь NumericUpDown?

#27 
AlexNek патриот04.06.22 12:42
AlexNek
NEW 04.06.22 12:42 
в ответ alex445 04.06.22 00:48
как будете привязывать те же Min и Max какого-нибудь атрибута Range к какому-нибудь

Как обычно, первый вопрос зачем? Но если сильно хочется, то вполне можно что то придумать, типа BindValidationToForm(...);

#28 
alex445 коренной житель04.06.22 13:52
NEW 04.06.22 13:52 
в ответ AlexNek 04.06.22 12:42, Последний раз изменено 04.06.22 13:53 (alex445)

Ну т.е. пишется код для вью модели или там расширение для разметки, или спецконтрол, или ещё как-то, который будет через рефлексию вытаскивать данные из атрибутов?


Волшебства тут нет - если что-то запихано в атрибуты, и надо достать, то пиши костыли-портянки. А куда эти портянки поместить - дело десятое.

#29 
alex445 коренной житель04.06.22 13:54
NEW 04.06.22 13:54 
в ответ AlexNek 04.06.22 12:42
Как обычно, первый вопрос зачем?

Ну вот как я раньше говорил - чтобы не плодить кучи валидирующего кода, а сразу привязать границы вводимых значений к контролу, в котором эти границы задаются.

#30 
AlexNek патриот04.06.22 19:17
AlexNek
NEW 04.06.22 19:17 
в ответ alex445 04.06.22 13:52
если что-то запихано в атрибуты, и надо достать, то пиши костыли-портянки.

Не вижу никаких проблем, написал один раз и пользуйся сколько хошь. И не так уж тяжело атрибуты пользовать.

Хочу я глянуть как будете запихивать контролы с валидацией в проперти грид

#31 
AlexNek патриот04.06.22 19:31
AlexNek
NEW 04.06.22 19:31 
в ответ alex445 04.06.22 13:54
чтобы не плодить кучи валидирующего кода, а сразу привязать границы

Вообще то вопрос был совершенно для другого. По ответу сразу видно на каком уровне обдумывается зашита/ наступление

  • отделение
  • взвод
  • рота/батарея
  • батальон/дивизион
  • полк

...

  • армия


Вопрос был какого смешивать атрибуты и контролы с ограничениями?

Представьте что есть хотя бы пяток формуляров в котором используются одни и те же данные но в разной форме.

То бишь не всё так однозначно

#32 
alex445 коренной житель04.06.22 19:43
NEW 04.06.22 19:43 
в ответ AlexNek 04.06.22 19:17
Хочу я глянуть как будете запихивать контролы с валидацией в проперти грид

Что за проперти грид?

#33 
alex445 коренной житель04.06.22 19:49
NEW 04.06.22 19:49 
в ответ AlexNek 04.06.22 19:31, Последний раз изменено 04.06.22 19:50 (alex445)
Вопрос был какого смешивать атрибуты и контролы с ограничениями?
Представьте что есть хотя бы пяток формуляров в котором используются одни и те же данные но в разной форме.
То бишь не всё так однозначно

В чём проблема? В одном случае для каждого привязываемого свойства вы в байндинге будете указывать валидатор. В другом (мой вариант) - привяжете Min и Max к соответствующим свойствам контрола. NumericUpDown юзается везде, где есть числа. Т.е. он подходит для любых чисел, не только с плавающей запятой. И не важно, как и в каком виде он в формуляре. А вот для валидации обычно юзаются валидаторы для каждого типа чисел - типа DoubleValidation, IntValidation и т.п. Хотя, по идее, можно и один громоздкий общий валидатор написать. Но суть в том, что у меня привязки аккуратные и читаемые - Value, Min, Max, а с валидаторами - портяка из многословного XAML с указанием валидаторов для байндингов.

#34 
AlexNek патриот04.06.22 19:57
AlexNek
04.06.22 19:57 
в ответ alex445 04.06.22 19:43
Что за проперти грид?

Гугла знает всё спок

https://www.codeproject.com/Articles/1092748/WPF-PropertyG...

#35 
AlexNek патриот04.06.22 20:04
AlexNek
NEW 04.06.22 20:04 
в ответ alex445 04.06.22 19:49
В другом (мой вариант) - привяжете Min и Max к соответствующим свойствам контрола.

Ах вот о чём. Мне как-то тяжело представить что кто-то будет смешивать данные с ограничениями/

Както не хочется видеть подобное, да и SRP тоже не хочет смущ

ACount

ACountMin

ACountMax

Code1

Code1MaxLength

Date

DateFormat

BCount

BCountMin

BCountMax

#36 
alex445 коренной житель04.06.22 20:06
NEW 04.06.22 20:06 
в ответ AlexNek 04.06.22 19:57

Ну там полно свойств для чисел со стрелочками вверх-вниз - тот же NumericUpDown. В чём проблема? У этого грида нет свойств Min и Max для чисел? Тогда это грид хреновый.


Основное отличие вашего подхода от моего - у вас либо идёт преобразование данных атрибутов через промежуточную модель (в неё вытаскиваются данные атрибутов), либо через расширения разметки, либо ещё как-то. Т.е. в любом случае - полного медленного кода (рефлексия) для каждого байндинга. А у меня - привязка напрямую к уже готовым свойствам, безо всякой возни с рефлексией, конвертерами и прочим лишним кодом.

#37 
alex445 коренной житель04.06.22 20:14
NEW 04.06.22 20:14 
в ответ AlexNek 04.06.22 20:04, Последний раз изменено 04.06.22 20:18 (alex445)
Както не хочется видеть подобное, да и SRP тоже не хочет смущ
ACount
ACountMin
ACountMax
Code1
Code1MaxLength
Date
DateFormat
BCount
BCountMin
BCountMax

Наоборот отлично, и уже сгруппировано всё.


А я не хочу видеть портянку атрибутов к каждому свойству. Заметьте, тут они ещё простые - сразу пошли строки задавать. А ведь могли бы начать указывать все параметры атрибутов, как это будет в реальном приложении с мультикультурой и прочим. Тогда для RangeAttribute будет минимум 5 параметров, для DisplayAttribute - минимум 3 (а можно и 5-7), и так далее.

#38 
AlexNek патриот04.06.22 20:30
AlexNek
04.06.22 20:30 
в ответ alex445 04.06.22 20:06
Тогда это грид хреновый

Для начала хорошо бы разобраться в принципе работы проперти грид

https://www.c-sharpcorner.com/article/using-property-grid-...


#39 
AlexNek патриот04.06.22 20:42
AlexNek
NEW 04.06.22 20:42 
в ответ alex445 04.06.22 20:14
Наоборот отлично, и уже сгруппировано всё.

Конечно отлично, вместо 4 строчек исключительно данных иметь 10 разного мусора


ACount

Code1

Date

BCount


При этом не зная какие ограничения для чего.

Вот как мне узнать "автоматически", какие ограничения имеет ACount?


как это будет в реальном приложении с мультикультурой

А как это может влиять на количество атрибутов?

#40 
1 2 3 4 5 6 7 8 9 все