Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Перевод ставок в центы, MODEL vs COMMAND (http://www.flasher.ru/forum/showthread.php?t=173496)

www.taras 04.01.2012 17:28

Перевод ставок в центы, MODEL vs COMMAND
 
Добрый день, возник небольшой спор.
есть некая игра - казино, данные (ставки, баланс и тд) приходят с сервера в целым числом в центах: 1, 10, 100, 1000. Соответственно во вьюшке их нужно отобразить в дробных: 0.01, 0.1, 1, 10. Так спор возник из того что в каком месте их преобразовывать варианты:
1) непосредственно вьюка получает из модели , в модел гетеры которые отдают дробные значения, модель хранит данные в центах,
2) преобразовывать при получении ответа от сервера в дробные и обратно при запросе к серверу переводить в центы, в модели хранятся дробные данные.

toFL 04.01.2012 17:33

Я у себя на Java сервере сразу хранил информацию о деньгах в формате: 5.49. Эту же информацию отправлял на клиент, а там уже решал, как показывать: с центами или без.

А, в твоем случае, преобразовывать данные нужно во вьюшке (в том случае, если математика на клиенте оперирует теми же значениями: 1,10,100,1000)

goodguy 04.01.2012 17:41

Что мешает в модель встроить еще один метод типа: getFractialSum() ну или типа того, который при необходимости вернет дробное число?
так модель сразу будет отдавать данные в нужном формате, а хранить в том, в каком они пришли

fish_r 04.01.2012 19:25

Если абстрагироваться от вопросов взлома (т.к. модель в таких приложениях вообще не должна ничего хранить, точнее дата лаер должен быть на сервере), то модель хранит данные в том виде в котором ей удобно, но "наверх" отдает в том виде в котором требуется. Т.е. вар. 1. Это еще и укрепляет контроль за данными т.к. вьюха не имеет данные во внутреннем представлении модели, следовательно не может случайно их изменить. Очень хороший вариант, ИМХО.

alatar 04.01.2012 19:58

Данные должен форматировать для показа view. Перевод из целых в дробные это один из видов форматирования.

TanaTiX 04.01.2012 20:07

Мое ИМХО.
Есть сервер, есть клиент.
Клиент - самостоятельное отдельное приложение. Да, если есть возможность что-то изменить на сервере, то лучше сделать там, и сразу отдавать корректные данные. Но если так возможности нет...
В моделе хранятся определенные данные. Эти данные должны быть унифицированы для всего приложения. С другой стороны получаемые и отправляемые данные могут отличаться от того, что реально отображается в приложении. Да, можно ввести систему коэффициентов (и если этот коэффициент отсылается при инициализации приложения от сервера, то храниться он должен в моделе и использоваться только моделью для расчетов, т.е. примерно то, что посоветовал goodguy), но это означает что при каждом отображении нужного значения мы переводим из одной системы в другую. А если присваиваем новое значение к.-л. переменной, то должны учитывать кто это изменение инициализировал (клиент или сервер) чтоб не запутаться в расчетах. Т.е. система коэффициентов внутри модели - штука допустимая, но чреватая ошибками.
Если бы приложение использовало унифицированную систему расчетов, то таких проблем бы не было. Выход - переводить в нужную систему на входе и на выходе, т.е. при парсинге полученных значений от сервера и при отправке на сервер, т.е. в специальном "модуле", предназначенном для общения с сервером.

fish_r 04.01.2012 20:28

Цитата:

Сообщение от alatar (Сообщение 1055005)
Данные должен форматировать для показа view. Перевод из целых в дробные это один из видов форматирования.

Задача вьюера отображать и анимировать, а не преобразовывать типы. Вы меня удивляете.

alatar 04.01.2012 20:34

Это не преобразование типов, в модели данные остаются неизменными. Это отображение.

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

Добавлено через 2 минуты
Цитата:

Выход - переводить в нужную систему на входе и на выходе, т.е. при парсинге полученных значений от сервера и при отправке на сервер, т.е. в специальном "модуле", предназначенном для общения с сервером.
А какая система будет нужной?
Пример, надо отобразить данные в центах, долларах, рублях, драхмах и т.д., в зависимости от выбора пользователя, локали, еще чего-нибудь.

ChuwY 04.01.2012 21:40

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

expl 04.01.2012 23:13

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


Часовой пояс GMT +4, время: 21:25.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.