All streams
Search
Write a publication
Pull to refresh
4
0
Михаил @mlurker

User

Send message
При использовании фабрики валитаров мы получаем готовый объект, состоящий из необходимых в нашем случае валидаторов. С точки зрения разработчика, для валидации данных нужно будет вызвать всего один метод Validate. А вызывать валидаторы по очереди не всегда удобно. А если их 5, 10 20? Проще 1 раз написать фабричный метод, чем постоянно писать ненужные строки кода.

Например, нужно провалидировать анкету перед сохранением в базу, которую заполнил пользователь. У вас есть фабричный метод: GetFormValidator(параметры). Дёргаете этот метод и получаете результат валидации. Всё. Я считаю, это очень удобно.

Что касается обработки ошибок, то обычно этот процесс заключается в том, чтобы уведомить пользователя о проблемах ввода. Например, слишком длинное имя пользователя, неправильный e-mail. Провалидировав данные, вы получаете плоский список всех ошибок, которые небольшим вспомогательным классом можно поставить в соответствие текстовые сообщения для уведомления.
Согласен, спасибо.
Это можно применять для winforms, wcf, asp.net.
Можно и так, согласен.
Исправил, спасибо. Без студии под рукой сложно писать компилируемый код)
А как это реализовано? Поделитесь.
На работе под XP аутлук 2007 с базой ~ 2х тысяч писем открывается минуты 2. На висте секунд 15. Один комп, разные ОС. Фотошоп, студия, и другие продукты запускаются и работают быстрее.

Что касается «топа», то в корне с вами не согласен.
Core 2 Duo с 1.6 — 1.8 Ghz, 1-2 GB ОЗУ уже далеко не редкость в наше время. И стоит такой компьютер не дорого, а виста работает на нём отлично. Топом такая конфигурация была 2 года назад.

Действительно, видно многим людям хорошо кто-то промыл мозги по поводу висты. Говоришь «у меня дома виста стоит», на тебя смотрят, как на вич положительного.
Не согласен с п 3 — «Vista слишком медленная».
По личным тестам, да и тестам некоторых товарищей, виста работает в разы быстрее на ресурсоёмких приложениях, надёжнее и стабильнее.
Я левша. Пишу левой, все остальные действия делаю правой рукой. Правда писать ещё хорошо не научился.
Аналогично, только касперского в универе, который запускался в 6 вечера от имени system)
если б джуниоров. Господа со статусом «сеньёр девелопер» иногда такое выкидывают…
хабр схавал OperationResult <T>
Мы в проекте используем OperationResultдля передачи сущностей. Очень удобно.
К примеру я прицепился сильно, просто наболело)
Напоминает ситуацию с запуском проекта «аймобилко».
Считаю, что использование Exception'ов для таких операций, как проверка логина и пароля при регистрации пользователя не совсем корректна. Для этих целей лучше использовать какие-нибудь кастомные классы, например OperationResult и ResultCode примерно так:

public OperationResult RegisterUser(string username, string password, string email) {
var operationResult = OperationResult.SuccessfulResult;

if (/*проверяем username*/)
operationResult.AddResultCode(ResultCode.UserNameError);

if (/*проверяем password*/)
operationResult.AddResultCode(ResultCode.PasswordError);

if (/*проверяем email*/)
operationResult.AddResultCode(ResultCode.EmailError);
}


На выходе метода мы получаем результат операции и ошибки, если они были. Как видно из кода OperationResult содержит в себе коллекцию возможных ошибок и по умолчанию результат выполнения операции успешен.

Мне такой способ нравится больше, хотя бы потому, что если вдруг на сервере забыли поймать Exception, то всё свалится. А разве невалидный логин является критической ситуацией? Думаю нет. Это ошибка валидации. Тут нужно чётко отделять валидацию данных и критические ситуации (нет доступа к бд, null exception и т. д.).

И ещё немного про предложенную валидацию:
Считаю, что лучший вариант — это использование фабрики валидаторов, построенных по паттерну композит. Каждый валидатор проверяет на свои условия и возвращает результат проверки главному объекту. В итоге мы получим результат проверки со всеми ошибками, если они произошли.
ужас)
А там будет поддержка MUI? Хочешь — русская версия, не хочешь — английская.
«Гораздо лучше русскому человеку(не привыкшему) воспринимается «Исключение», а не «Exception».»
Возможно. Но тогда между новичками и «бородатыми» программистами будет вестись очень сложный диалог. Из-за таких вот терминов. Сами знаете, у людей вырабатывается профессиональный сленг.

Возьмём пример:
технология .net reflection. В нашей команде обычно употребляем «рефлекшн». После такой привычки очень сложно понять человека, который говорит про какую-то рефлексию (а такой перевод в одной из книжек по .net'у я видел).

Опять же, каждый автор может по-разному переводить термины на русский язык. Человек читает книгу, термин Exception там будет переведён как «исключение», в другой как «ошибка». А в русской студии ещё как-нибудь назовут. Что получится в итоге?

В английском интерфейсе термины трактуются однозначно, русский приведёт к путанице.
«Таким образом следующая за триграфом ??/ строка будет добавлена к комментарию (действие „\“ обратного слеша)».
Вот Visual C++ и хавает следующую строку с циклом. И получается 11. Не думаю, что это большая проблема.
Главное не мегапиксели, а размер матрицы.
Просто убивает, когда делают 10мпх фотоаппараты с матрицами 1/2.5".
А вот Visual c++ с вами не согласен)

Information

Rating
Does not participate
Location
Philadelphia, Pennsylvania, США
Registered
Activity