Обязательно ли обрабатывать очень маловероятное событие в несерьезной программе
От: heyGuys  
Дата: 05.04.13 20:25
Оценка:
Программа несерьезная. По сути использоваться будем не очень часто. Проблема может возникнуть, если попытаются получить информацию как раз в тот момент, когда наступят новые сутки.
В получаемой информации есть зависимость от текущей даты. Информация отображается в главном окне же. Отображается она при выделении какого-то элемента списка (и относится к выделенному элементу списка). В принципе в приложении есть "наблюдатель за текущей датой", который при наступлении новой даты, если какая-то информация отображалась, заново запрашивает ее и отображает.
Но может получиться следующее:
1) перед самым наступлением новых суток (т.е. в последние миллисекунды) нажимается элемент списка
2) вызывается обработчик нажатия по элементу, в котором считывается и получается текущая дата, к-ая через доли секунды изменится, т.е. станет недействительной (считывание происходит в последние миллисекунды уходящих суток). но после считывания и формирования данных она не успевает отобразиться, т.е. не успевает выполниться соответствующий метод, перед тем, как управление передастся другому потоку приложения
3) меняется текущая дата, срабатывает "наблюдатель за текущей датой", к-ый обновляет если есть отображаемую информацию (но считанная в последние моменты прошедших суток информация еще не отображена и получается, что он обновляет информацию для другого элемента списка)
4) только после этого, сформированная на шаге 2 информация, отображается, но эта информация устарела. получается, что отобразится неверная информация, ассоциированная с предыдущими сутками. и отображаемая информация снова станет верной только после повторного нажатия на элементе списка, либо при наступлении новых суток
Срабатывание наблюдателя за текущей датой и вызов обработчика нажатия по элементу списка происходят в разных потоках из-за платформы, на которой это приложение работает, исправить это не получится. Конечно, можно сделать атомарной операцию формирования информации (в к-ую входит и считывание текущей даты) и отображения этой информации. Но это как я чувствую усложнит код и его понимание в дальнейшем, который сейчас более-менее понятный.
Приложение простое, вероятность того, что кто-то будет пользоваться им около полуночи довольно мала и тем более мала, что возникнет вышеописанная ситуация (наверное, символически где-то 0,0000000001%), но теоретически возможна. Да и если возникнет, никаких плохих последствий не будет, а если кто и заметит, то проще сказать этому человеку, что ему показалось.
Но эта ситуация не непредвиденная. По сути обработать и ее вполне возможно. Является ли для вас обработка подобных ситуаций "делом чести" или еще там по каким-либо причинам обязательной? Или вы просто на нее забьете?

Прошу прощения за многословие. И за неинтересный пост.
Re: Обязательно ли обрабатывать очень маловероятное событие в несерьезной програ
От: alpha21264 СССР  
Дата: 05.04.13 20:30
Оценка: 2 (1) +1
Здравствуйте, heyGuys, Вы писали:

G>Но эта ситуация не непредвиденная. По сути обработать и ее вполне возможно. Является ли для вас обработка подобных ситуаций "делом чести" или еще там по каким-либо причинам обязательной? Или вы просто на нее забьете?


Цена-качество.
Пока будешь ловить мелких блох, можешь упустить крупных тараканов.
А так — используй здравый смысл.

Течёт вода Кубань-реки куда велят большевики.
Re: Обязательно ли обрабатывать очень маловероятное событие в несерьезной програ
От: __kot2  
Дата: 05.04.13 23:54
Оценка: 2 (1)
Здравствуйте, heyGuys, Вы писали:
G>1) перед самым наступлением новых суток (т.е. в последние миллисекунды) нажимается элемент списка
да я бы забил бы. тем более если можно еще ткнуть и обновить снова
вон, иногда сайт открываешь, он лежит. ничего страшного — ткнешь в него, заработает.
Re: Обязательно ли обрабатывать очень маловероятное событие в несерьезной програ
От: hardcase Пират http://nemerle.org
Дата: 07.04.13 06:48
Оценка:
Здравствуйте, heyGuys, Вы писали:

G>По сути обработать и ее вполне возможно. Является ли для вас обработка подобных ситуаций "делом чести" или еще там по каким-либо причинам обязательной? Или вы просто на нее забьете?


Конечно возможно. И дело чести здесь скорее — выбрать наименее трудоемкий вариант предотвращения "катастрофы". Например за 5-10 секунд до наступления полуночи, дабы предотвратить превращение принцессы в тыкву, просто не давать пользователю выбрать в комбике что-либо
/* иЗвиНите зА неРовнЫй поЧерК */
Re: Обязательно ли обрабатывать очень маловероятное событие в несерьезной програ
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 07.04.13 09:49
Оценка:
Здравствуйте, heyGuys, Вы писали:

G>Но эта ситуация не непредвиденная. По сути обработать и ее вполне возможно. Является ли для вас обработка подобных ситуаций "делом чести" или еще там по каким-либо причинам обязательной? Или вы просто на нее забьете?


А не проще сделать автообновление каждую секунду\минуту\час\другой_квант_времени?

G>Прошу прощения за многословие. И за неинтересный пост.


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

Исправьте эту проблему и много других проблем просто отвалятся.
Re[2]: Обязательно ли обрабатывать очень маловероятное событие в несерьезной про
От: andrey82  
Дата: 07.04.13 09:59
Оценка: +1
Здравствуйте, __kot2, Вы писали:

__>Здравствуйте, heyGuys, Вы писали:

G>>1) перед самым наступлением новых суток (т.е. в последние миллисекунды) нажимается элемент списка
__>да я бы забил бы. тем более если можно еще ткнуть и обновить снова
__>вон, иногда сайт открываешь, он лежит. ничего страшного — ткнешь в него, заработает.

При этом важно, чтобы пользователь однозначно понял, что отображаемая информация некорректна и выполнил обновление вручную. А если (условный пример) корректно обновится 99% содержимого, то пользователь может ничего особенного и не заметить...
Re: Обязательно ли обрабатывать очень маловероятное событие в несерьезной програ
От: Sinclair Россия https://github.com/evilguest/
Дата: 08.04.13 04:45
Оценка: 1 (1)
Здравствуйте, heyGuys, Вы писали:

G>Программа несерьезная. По сути использоваться будем не очень часто

Не вполне понятно ваше определение термина "несеръёзная". Если под ним понимается "программа, к которой не предьявляются никакие требования по удобству/надёжности/корректности/итп", то и без дальнейшего рассуждения понятно, что нет, не обязательно. Просто по определению: ведь вопрос изморфен вопросу "обязательно ли выполнять необязательные требования?".

А если требования к программе таки существуют, то надо исходить из них.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Обязательно ли обрабатывать очень маловероятное событие в несерьезной програ
От: Jolly Roger  
Дата: 08.04.13 05:06
Оценка: +1
Здравствуйте, heyGuys, Вы писали:

G>По сути обработать и ее вполне возможно.


Более того, я так и не увидел, в чем сложность обработки ситуации Тот, кто следит за датой и запрашивает инфу — поставщик. Тот, кто отображает — потребитель. Проблема в том, чтобы поставщик оповещал потребителч о произошедшем изменении инфы?
"Нормальные герои всегда идут в обход!"
Re: Обязательно ли обрабатывать очень маловероятное событие в несерьезной програ
От: Erop Россия  
Дата: 08.04.13 22:41
Оценка:
Здравствуйте, heyGuys, Вы писали:

G>Но эта ситуация не непредвиденная. По сути обработать и ее вполне возможно. Является ли для вас обработка подобных ситуаций "делом чести" или еще там по каким-либо причинам обязательной? Или вы просто на нее забьете?


1) Конкретно эту пролеу легко поправит, если приделать счётчик, внутри скольких обновлений мы сейчас нахоимся. И придерживать нить, которая запускает обновления по таймеру, до того момента, когда активных обновлений нет.

2) Скорее всего в твоей программе что-то не так архитектурно, так как если бы всё было "так", то обновлялка по таймеру просто добавляла бы в тот же механизм, который клики по контролам обрабатывает, команду, "обнови всё", или инвалидировала бы все контролы и всё бы работало само
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.