При инициализации приложения в функции OnStart происходят следующие действия:
Порядок следования данных операций не важен, за исключением единственного момента: перед использованием объектов их нужно создать. Любое действие с несуществующим объектом вызовет ошибку при выполнении приложения.
То есть, теоретически после создания объектов все остальные действия с ними можно выполнять в любом порядке, например, как показано в примере ниже.
Это пример прекрасно работает, но так писать код не рекомендуется по причине того, что все операции в нём перемешаны. При работе с 20 объектами в таком стиле код превратиться в один запутанный клубок, в котором будет сложно понять какие объекты созданы и каким компоновщикам добавлены. Запутанный и сложный код - это источник ошибок и проблем. Для эффективной разработки и поддержки приложений лучше произвести группировку однотипных действий по разделам.
Преимущества показанной группировки следующие:
В самом конце присутствует интерфейсный раздел. В этом разделе в глобальное свойство-массив controls добавляются объекты (компоновщики и элементы), к которым необходимо обращаться во внешнем коде. Это гарантирует то, что никто за пределами функции инициализации не сможет изменить элементы интерфейса, которые не предназначены для изменения или взаимодействия с пользователем, что делает код более надёжным. В приведённом выше примере доступ открыт только к объекту _btn.
Можно ли отдельные разделы поместить в разные функции, например, создавать компоновщики в одной функции, объекты- в другой, компоновать их в третьей и т.д.? Можно, но это приведёт к следующему: для доступа к объектам из разных функций первые должны быть общедоступны. Для чего открывать доступ к объектам интерфейса, которые не требуется менять во внешнем коде?