Как и во всех «передовых методах» и «шаблонах проектирования», все зависит от того, что вы хотите сделать. Каждый ваш выбор имеет компромиссы. Хорошо понять эти компромиссы и принять решение действовать в соответствии с тем, что вам нужно развивать.
Ваш вопрос так открыт; Я мог бы написать книгу без ответа.
Несколько мыслей о ваших пунктах:
Я наткнулся на множество программ, написанных на Air / Flex с почти бесконечными глобальными переменными :-)
Это распространенный подход при использовании инфраструктуры Cairngorm, в которой используется ModelLocator. Во многих приложениях ModelLocator превращается в один большой глобальный объект значений, используемый повсеместно в приложении. Я говорю о том, как я справляюсь с этим сообщением в блоге: http://www.jeffryhouser.com/index.cfm/2008/3/27/Learning-Cairngorm-Part-6-Dealing-with-the-Singleton
Большая часть программного обеспечения, которое я видел, не была объектно-ориентированной
Несмотря на весь интерес к объектно-ориентированному программированию, я никогда не видел, чтобы в какой-либо архитектуре проекта применялся объектно-ориентированный подход, если говорить академически. В лучшем случае я бы назвал всю разработку гибридом объектно-ориентированных концепций и процедурных концепций. Многие люди, с которыми я говорил, похоже, утверждают, что любое использование инкапсуляции - это ОО; пока не используется инкапсуляция процедурная. Это, конечно, смешно
При создании компонентов Flex вы будете писать много кода в методах LifeCycle компонента Flex (createChildren (), commitProperties (), measure () и updateDisplayList ()); но вы, вероятно, не будете создавать свою собственную объектно-ориентированную архитектуру.
Как красиво упаковать вызовы асинхронных методов?
Я не уверен, что вы подразумеваете под паком в этом контексте.