Показать сообщение отдельно
Старый 13.11.2009, 09:08   #223
Troll
Супер-Модератор
 
Аватар для Troll
 
Регистрация: 26.04.2006
Адрес: Удомля
Сообщений: 1,454
Вы сказали Спасибо: 70
Поблагодарили 536 раз(а) в 332 сообщениях
Отправить сообщение для Troll с помощью ICQ
По умолчанию

#1430: Индийская гигиена
Fri, 13 Nov 2009 09:00:03 +0400
Фиксили как-то баг в одной программе. Делали ее какие-то индусы для забугорного заказчика, а нам досталась
поддержка.

Структура программы была такова: имелось несколько форм, каждая с меню. По выбору пункта меню пользователь
переходил на новую форму или возвращался на предыдущую. Прототип формы имел четыре основных метода:
конструктор/деструктор и колбеки входа/выхода. Когда пользователь уходил «вглубь», формы не удалялись, а
складывались в линейный стек, поскольку по задумке юзеру всё равно придётся через них возвращаться. Удаление
форм и их ресурсов происходило при возврате назад по удалению из стека.

Баг заключался в том, что на одной из форм, если ее пройти несколько раз, меню увеличивалось, наполняясь
дублирующимися пунктами. Оказалось, наполнение этого меню происходило не единожды, в конструкторе (как и везде
по проекту), а каждый раз при заходе в форму. Я перенёс несколько строк — заработало на ура.

Решил позвать старшего по отделу, сурового программера, чтобы он тоже подивился индийской мудрости. Он полистал
код, позадавал много общих вопросов и молвил:

— Возвращаем как было, а по событию выхода просто очищаем меню.
— Да тут во всём проекте именно так! Меню по-любому очистится, когда форма из стека уйдет.
— Не знаю, как разработчики этой программы, но лично я подтираюсь после того, как сходил в туалет, а не перед тем,
как сходить куда-либо ещё.

Это окончательно развеяло сомнения о вариантах фикса и означало многодневную переделку всех форм по проекту. В
итоге заказчик сказал отдельное спасибо нашей команде за проделанную оптимизацию.
http://ithappens.ru/story/1430
Troll вне форума