77718.fb2 Bash.org.ru IT Happens Истории ## 1401 - 1500 - читать онлайн бесплатно полную версию книги . Страница 31

Bash.org.ru IT Happens Истории ## 1401 - 1500 - читать онлайн бесплатно полную версию книги . Страница 31

#1430: Индийская гигиена

12:00 13.11.2009, IT happens

 

Фиксили как-то баг в одной программе. Делали ее какие-то индусы для забугорного заказчика, а нам досталась поддержка.

 

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

 

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

 

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

 

— Возвращаем как было, а по событию выхода просто очищаем меню.

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

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

 

Это окончательно развеяло сомнения о вариантах фикса и означало многодневную переделку всех форм по проекту. В итоге заказчик сказал отдельное спасибо нашей команде за проделанную оптимизацию.