Scala: Изящное преобразование строки в булевскую переменную

Обычно всегда существует некоторое дублирование, и базы данных не являются просто немыми репозиториями.

дБ

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

Вы не можете сделать всего в дб, но можно сделать много. Защитите данные.

бизнес-уровень

, Перемещающий уровень вверх, у Вас есть бизнес-логика. Обычно это - Ваша точка интеграции с другими приложениями (веб-сервис, Ваш собственный UI, и т.д.). Здесь бизнес-логика в закодированном в приложение. Вещи как то, если продукт имеет дату окончания x, то не может также произойти в y, если y имеет различную дату окончания.

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

также трудно выразить в базе данных, другие 'правила' как 'новые пользователи имеют дату окончания срока действия 1 года, если они от Arkensas, 2 года иначе, если у них нет 3 детей, и одного из них называют Barry'. Мы можем смеяться над этим примером, но закаленный программист скажет Вам, что бизнес-логика является одним из самых больших оксюморонов вокруг.

ui

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

UI знает для поиска продуктов с X, если пользователь уже выбрал виджет Y. UI знает, что описание требуется, и что количество объекта> 0 и < 100 (В этих примерах хороший UI будет полагаться на бизнес-слой для сообщения его, например, минута и макс., но UI все еще знает об отношениях)

В веб-UI мы также добавляем клиентский сценарий, который снова копирует логику в серверном коде. Мы используем клиентский сценарий, чтобы сделать, чтобы лучший пользователь испытал, но в конце не доверяют ничему, что прибывает от клиента (сценарий может быть выключен, поля формы, которыми вручную управляют, и т.д.)

<час>

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

72
задан Pete Montgomery 28 August 2012 в 14:34
поделиться

2 ответа

Ах, я глупый. Ответ: myString.toBoolean .

125
ответ дан 24 November 2019 в 12:27
поделиться

Примечание. Не пишите new Boolean (myString) в Java - всегда используйте Boolean.valueOf (myString) . Использование нового варианта без необходимости создает логический объект ; использование варианта valueOf этого не делает.

10
ответ дан 24 November 2019 в 12:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: