03:27

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

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

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

Бля, решение-то элементарное. Почему я его пропустил? Потому что я составлял алгоритм работы только в голове и регулярно забывал о нюансах (что не удивительно - на написание кода я трачу не более 2-х часов в день).

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

Комментарии
07.08.2011 в 03:34

Было всё. Мне есть, что вспомнить. ஆ Люблю. Потому что ненависть портит карму. ஆ Веди меня или уйди с моей дороги!
Какой же ты умный! *восхищённо*
07.08.2011 в 03:52

А в свободное время я люблю заниматься руко... прикладством...
Да, действительно забавно, но такое часто бывает) Как только садишься и начинаешь записывать, все становится гораздо проще, чем казалось)))
07.08.2011 в 10:07

относись к другим так, как хочешь, чтобы относились к тебе
ты умница! я верю, что у тебя все получится!
07.08.2011 в 11:59

Элон
Угу, есть такое, уже давно понял, что, без хотя бы набросков схем, алгоритмов и т.д. на бумаге, лучше даже не начинать ))
07.08.2011 в 18:01

бинарный романтик
Tamin Да-да, сразу видишь, где ты уже налажал и что делать)
Tantalia Спасибо)
ldarkelfl Это точно... но иногда так лень что-то рисовать, когда за бумагой и ручкой надо ползти с веранды в дом) Особенно часа в 2 ночи)
07.08.2011 в 18:07

Элон
Dark Dragon
Ленивый дракончик ))