Итак, я знаю, что глобальные переменные считаются плохими, а одноэлементный шаблон чрезмерно используется. И во многих местах я читал, что класс должен выполнять только одну задачу и содержать только те переменные, которые позволяют ей выполнить одну задачу. Однако, работая над моим последним проектом, я действительно думал об этих правилах, прежде чем писать какой-либо код, и заметил, что я, как правило, разбиваю их в самом начале программы.Где вы помещаете переменные области программы в приложение, управляемое пользовательским интерфейсом?
В настоящее время я работаю над диалоговым окном MFC, но этот вопрос может быть применен к любому приложению, управляемому пользовательским интерфейсом. У меня есть отдельные классы, которые обрабатывают состояния машин, чтение/запись файлов и аппаратное сопряжение. Для всех этих объектов потребуется некоторый тип управления пользовательским интерфейсом или отображение/редактирование свойств. В диалоговых приложениях MFC диалоговое окно является программой, поэтому оно должно существовать до закрытия программы. Обычно я просто помещал объекты в основной класс диалога для приложения и имел класс диалога, обслуживающий двойную обязанность; как основной пользовательский интерфейс, так и дом для всех других объектов приложения. В других приложениях я создал эти объекты по всему миру и ссылался на них там, где они были нужны. Ни один из этих способов не кажется правильным. Первый вариант разбивает один класс, одно правило задачи, а второе полагается на глобальные переменные, а также создает скрытые зависимости. Я мог бы ввести какой-то тип инъекции зависимостей, но где бы все эти переменные, которые я бы вводил, проживали?
Мне просто интересно, что делают другие, чтобы организовать свои программы, не нарушая правил?
Для переходных диалогов я согласен. Тем не менее, приложения, управляемые диалоговым окном MFC, имеют диалог, присутствующий на весь срок службы приложения. Поэтому я не могу уничтожить диалог до выхода программы. – bsruth 2008-10-20 21:55:42