бинарный романтик
Эх, не зря нас Плющева в свое время дрючила, заставляя перед реализацией программы сделать полностью рабочий и подробный алгоритм ее работы.
Без алгоритма писать гораздо сложнее. Вот только что с этим столкнулся. Необходимо блокировать нажатия кнопок на форме в зависимости от текущей ситуации.
Есть пять кнопок: добавить, удалить, редактировать, следующее оповещение, предыдущее оповещение.
Нет оповещений - лочим все, кроме кнопки добавить.
Есть одно оповещение - лочим кнопки навигации, остальное разрешаем.
Есть больше одного оповещения - три варианта:
-если читаем первое оповещение - лочим кнопку "предыдущее оповещение"
-читаем последнее оповещение - лочим кнопку "следующее оповещение"
-в ином случае ничего не лочим.
По дурости попробовал решить задачу в лоб. В обработке нажатия каждой кнопки я условиями определял, что лочить, что разлочить. Сломался на третьей кнопке, перечитал код, пригладил вставшие дыбом волосы и понял, что я уже не понимаю сути всех условий. Говнокод получился.
Чтобы не говнокодить дальше - вынес принятие решений о блокировке кнопок в отдельную функцию, которая получала информацию о том, сколько у меня есть оповещений и к какому оповещению я последний раз обращался.
Вау, код и условия резко сократились и стали понятными.
Бля, решение-то элементарное. Почему я его пропустил? Потому что я составлял алгоритм работы только в голове и регулярно забывал о нюансах (что не удивительно - на написание кода я трачу не более 2-х часов в день).
Чую, когда буду составлять логику принятия решения о проигрывании оповещения - я все же сначала разрисую все на бумаге, потому что там логика гораздо круче логики блокировки кнопок. Удачи мне.
Без алгоритма писать гораздо сложнее. Вот только что с этим столкнулся. Необходимо блокировать нажатия кнопок на форме в зависимости от текущей ситуации.
Есть пять кнопок: добавить, удалить, редактировать, следующее оповещение, предыдущее оповещение.
Нет оповещений - лочим все, кроме кнопки добавить.
Есть одно оповещение - лочим кнопки навигации, остальное разрешаем.
Есть больше одного оповещения - три варианта:
-если читаем первое оповещение - лочим кнопку "предыдущее оповещение"
-читаем последнее оповещение - лочим кнопку "следующее оповещение"
-в ином случае ничего не лочим.
По дурости попробовал решить задачу в лоб. В обработке нажатия каждой кнопки я условиями определял, что лочить, что разлочить. Сломался на третьей кнопке, перечитал код, пригладил вставшие дыбом волосы и понял, что я уже не понимаю сути всех условий. Говнокод получился.
Чтобы не говнокодить дальше - вынес принятие решений о блокировке кнопок в отдельную функцию, которая получала информацию о том, сколько у меня есть оповещений и к какому оповещению я последний раз обращался.
Вау, код и условия резко сократились и стали понятными.
Бля, решение-то элементарное. Почему я его пропустил? Потому что я составлял алгоритм работы только в голове и регулярно забывал о нюансах (что не удивительно - на написание кода я трачу не более 2-х часов в день).
Чую, когда буду составлять логику принятия решения о проигрывании оповещения - я все же сначала разрисую все на бумаге, потому что там логика гораздо круче логики блокировки кнопок. Удачи мне.
Tantalia Спасибо)
ldarkelfl Это точно... но иногда так лень что-то рисовать, когда за бумагой и ручкой надо ползти с веранды в дом) Особенно часа в 2 ночи)
Ленивый дракончик ))