Шаблоны разработки OO для использования для проверки

Вот объяснение непосредственно из источника [(почти) 115]

Поиск 101!

в минимальное 22:03

Стоящий наблюдения!

В основном и по словам Douglas Merrill бывший технический директор Google это похоже на это:

1) Вы пишете слово (с орфографической ошибкой) в Google

2), Вы не находите то, что Вы хотели (не нажимайте ни на какие результаты)

3) Вы понимаете орфографическую ошибку слова, таким образом, Вы переписываете слово в поле поиска.

4) Вы находите то, что Вы хотите (Вы нажимаете в первых ссылках)

, Этот шаблон умножил миллионы времен, шоу, что наиболее распространено, пишут c орфографическими ошибками и что является самыми "общими" исправлениями.

Этот путь Google может почти мгновенно, исправление написания предложения на каждом языке.

Также это означает, начинают ли в течение ночи все записывать ночь, поскольку "nigth" Google предложил бы то слово вместо этого.

РЕДАКТИРОВАНИЕ

@ThomasRutter: Douglas описывает его как "статистическое машинное обучение".

Они знают, кто исправляет запрос, потому что они знают, какой запрос прибывает, от которого пользователя (использующий cookie)

Если пользователи выполняют запрос, и только 10% пользователей нажимают на результат, и 90% возвращается, и введите другой запрос (с исправленным словом) и на этот раз что 90% нажимают на результат, тогда они знают, что нашли исправление.

Они могут также знать, являются ли те "связанными" запросами двух различных, потому что у них есть информация всех ссылок, которые они показывают.

, Кроме того, они теперь включают контекст в проверку написания, таким образом, они могут даже предложить различное слово в зависимости от контекста.

Видят этот демонстрация волны Google (06 на 44 м), который показывает, как контекст принят во внимание для автоматического исправления написания.

Здесь объяснено, как та обработка естественного языка работает.

И наконец вот потрясающая демонстрация того, что может быть сделано, добавив автоматический машинный перевод (1:12:47) к соединению.

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

14
задан Peter Sankauskas 14 July 2009 в 20:40
поделиться

4 ответа

Один размер не подходит всем! Сделайте это просто!

Предоставьте валидаторам общие методы / интерфейс для вывода данных, классификации предупреждений, фильтрации / обработки предупреждений, возникающих более одного раза. Не создавайте никаких сложных способов проверки, по крайней мере, до написания нескольких реальных валидаторов.

Отойдите с дороги и позвольте валидаторам делать то, что они должны делать:

 для валидатора в all_validators:
 validator.validate(model)

9
ответ дан 1 December 2019 в 15:02
поделиться

Думаю, я сейчас делаю то же самое.
Применяемый здесь шаблон - это шаблон фильтра и цепочка фильтров.

Каждый фильтр проверяется по одному «пути» (как вы их называете).
Первый для синтаксиса, второй для поиска в БД и т. Д. (Из второго пункта).

2
ответ дан 1 December 2019 в 15:02
поделиться

У меня была такая же проблема, и я обнаружил, что шаблон посетителя действительно эффективен для отделения логики проверки от объекта данных. Вам нужно будет оснастить иерархию классов данных методами accept (посетителей), но если вы создаете все достаточно просто. Даже если вы используете стороннюю иерархию без поддержки посетителей, вы можете создавать оболочки, которые предоставляют дерево обхода принятия, и это довольно близко к наличию метода внутри класса.

Для выполнения другой проверки вы реализуете другой класс валидатора и передаете его методу accept корневого объекта. Я также смог создать других посетителей-утилит вокруг модели, что позволило мне создать посетителя-генератора, который заполнял все поля выборочными / случайными данными. Я сошел с ума от этого маленького посетителя, потому что был так взволнован. Вы, наверное, можете сказать, что я все еще рад этому, особенно если у меня есть возможность рассказать об этом кому-то другому.

0
ответ дан 1 December 2019 в 15:02
поделиться

Если вы выполняете какую-либо работу с графическим интерфейсом пользователя, вам следует взглянуть на JGoodies Validation: http: //www.jgoodies. com / downloads / libraries.html (также некоторые статьи здесь: www.jgoodies.com/articles/).

Я бы создал валидатор для любого класса, который нуждается в валидации. Фактически вы можете создать более одного валидатора, если вам нужны разные способы проверки, например строгий или нет. Вы можете сгруппировать общие функции и методы в такие классы, как AbstractValidator и ValidationResult (которые могут иметь список ошибок, серьезность и т. Д.).

Остерегайтесь чрезмерного дизайна. Попробуйте начать с чего-нибудь простого, например:

new UserValidator().validate(user)

или для проверки представления:

new UserPanelValidator().validate(userPanel)

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

0
ответ дан 1 December 2019 в 15:02
поделиться