|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Перевод ставок в центы, MODEL vs COMMAND
Добрый день, возник небольшой спор.
есть некая игра - казино, данные (ставки, баланс и тд) приходят с сервера в целым числом в центах: 1, 10, 100, 1000. Соответственно во вьюшке их нужно отобразить в дробных: 0.01, 0.1, 1, 10. Так спор возник из того что в каком месте их преобразовывать варианты: 1) непосредственно вьюка получает из модели , в модел гетеры которые отдают дробные значения, модель хранит данные в центах, 2) преобразовывать при получении ответа от сервера в дробные и обратно при запросе к серверу переводить в центы, в модели хранятся дробные данные. |
|
|||||
Banned
|
Я у себя на Java сервере сразу хранил информацию о деньгах в формате: 5.49. Эту же информацию отправлял на клиент, а там уже решал, как показывать: с центами или без.
А, в твоем случае, преобразовывать данные нужно во вьюшке (в том случае, если математика на клиенте оперирует теми же значениями: 1,10,100,1000) Последний раз редактировалось toFL; 04.01.2012 в 17:37. |
|
|||||
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Что мешает в модель встроить еще один метод типа: getFractialSum() ну или типа того, который при необходимости вернет дробное число?
так модель сразу будет отдавать данные в нужном формате, а хранить в том, в каком они пришли |
|
|||||
Если абстрагироваться от вопросов взлома (т.к. модель в таких приложениях вообще не должна ничего хранить, точнее дата лаер должен быть на сервере), то модель хранит данные в том виде в котором ей удобно, но "наверх" отдает в том виде в котором требуется. Т.е. вар. 1. Это еще и укрепляет контроль за данными т.к. вьюха не имеет данные во внутреннем представлении модели, следовательно не может случайно их изменить. Очень хороший вариант, ИМХО.
|
|
|||||
Мое ИМХО.
Есть сервер, есть клиент. Клиент - самостоятельное отдельное приложение. Да, если есть возможность что-то изменить на сервере, то лучше сделать там, и сразу отдавать корректные данные. Но если так возможности нет... В моделе хранятся определенные данные. Эти данные должны быть унифицированы для всего приложения. С другой стороны получаемые и отправляемые данные могут отличаться от того, что реально отображается в приложении. Да, можно ввести систему коэффициентов (и если этот коэффициент отсылается при инициализации приложения от сервера, то храниться он должен в моделе и использоваться только моделью для расчетов, т.е. примерно то, что посоветовал goodguy), но это означает что при каждом отображении нужного значения мы переводим из одной системы в другую. А если присваиваем новое значение к.-л. переменной, то должны учитывать кто это изменение инициализировал (клиент или сервер) чтоб не запутаться в расчетах. Т.е. система коэффициентов внутри модели - штука допустимая, но чреватая ошибками. Если бы приложение использовало унифицированную систему расчетов, то таких проблем бы не было. Выход - переводить в нужную систему на входе и на выходе, т.е. при парсинге полученных значений от сервера и при отправке на сервер, т.е. в специальном "модуле", предназначенном для общения с сервером.
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
Задача вьюера отображать и анимировать, а не преобразовывать типы. Вы меня удивляете.
|
|
|||||
Это не преобразование типов, в модели данные остаются неизменными. Это отображение.
Добавлено через 1 минуту Будет ли он анимировать или отделять разряды пробелом или показывать градус цельсия в виде градусов фаренгейта, разницы нет. Добавлено через 2 минуты Цитата:
Пример, надо отобразить данные в центах, долларах, рублях, драхмах и т.д., в зависимости от выбора пользователя, локали, еще чего-нибудь.
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
Имхо, перевод в различные единицы, это дело вьюхи или вообще утилитных классов.
Модели должно быть все равно какой линейкой ее измеряют.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ" Мои ачивки: художник-паразит. |
|
|||||
1. Модели наверно удобнее считать суммы и статистику всякую в центах. Значит пусть в центах и хранит
2. В каждой вьюшке копипастить логику перевода дробных в целые и наоборот глупо. Значит делаем класс-утилиту, которым пользуется вьюшка, берущая данные из модели. Последний раз редактировалось expl; 04.01.2012 в 23:21. |
Часовой пояс GMT +4, время: 21:43. |
|
« Предыдущая тема | Следующая тема » |
|
|