DroidScript

Порядок инициализации объектов в функции OnStart

© 2016-2018 Автор материалов - Александр Страшко admin@starport.ru
DroidScript
инструменты для мобильной разработки

Порядок инициализации объектов в функции OnStart

© 2016-2018 Автор материалов - Александр Страшко admin@starport.ru
DroidScript  
Дата изменения 06.04.2017

При инициализации приложения в функции OnStart происходят следующие действия:

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

То есть, теоретически после создания объектов все остальные действия с ними можно выполнять в любом порядке, например, как показано в примере ниже.

Выполнить

Это пример прекрасно работает, но так писать код не рекомендуется по причине того, что все операции в нём перемешаны. При работе с 20 объектами в таком стиле код превратиться в один запутанный клубок, в котором будет сложно понять какие объекты созданы и каким компоновщикам добавлены. Запутанный и сложный код - это источник ошибок и проблем. Для эффективной разработки и поддержки приложений лучше произвести группировку однотипных действий по разделам.

Выполнить

Преимущества показанной группировки следующие:

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

Можно ли отдельные разделы поместить в разные функции, например, создавать компоновщики в одной функции, объекты- в другой, компоновать их в третьей и т.д.? Можно, но это приведёт к следующему: для доступа к объектам из разных функций первые должны быть общедоступны. Для чего открывать доступ к объектам интерфейса, которые не требуется менять во внешнем коде?

DroidScript