Я должен согласиться с вашим коллегой, ваши имена классов «раздражают».
В ActionScript 3 мы используем имя пакета для определения пространства имен класса. Если вы не уверены, что означает пространство имен, примите определение из Википедии (на момент написания):
"В общем, пространство имен - это контейнер для набора идентификаторов
(имена), и позволяет устранять неоднозначность идентификаторов омонимов, постоянно проживающих
в разных пространствах имен. "
Таким образом, вы никогда не будете "конфликтовать с именами классов", если вы правильно называете свои пакеты. Большинство разработчиков используют так называемую обратную доменную нотацию для именования своих пакетов (например, com.mywebsite.MyGenericNamedClass). Доменные имена уникальны, поэтому маловероятно, что вы столкнетесь с другим классом.
Как правило, имя класса должно быть как можно более описательным, поэтому некоторые имена ваших классов будут такими же, как и у класса другого. Возьмите класс Sprite по умолчанию, например:
import flash.display.Sprite;
import uk.co.mywebsite.Sprite;
если вы затем инициализируете объект:
var mySprite:Sprite = new Sprite();
Компилятор не будет знать, какой Sprite вы хотите инициализировать (это флэш-спрайт или ваш собственный пользовательский спрайт), и он выдаст ошибку.
Решение простое: поскольку ваши пакеты были названы правильно, все, что вам нужно сделать, это использовать полное имя класса, включая имя пакета, для инициализации вашего объекта:
var mySprite:uk.co.mywebsite.Sprite = new uk.co.mywebsite.Sprite();
var myOtherSprite:flash.display.Sprite = new flash.display.Sprite();
Имейте в виду, вам редко придется это делать. Это необходимо только в том случае, если вы хотите использовать эти два класса (Sprite по умолчанию и ваш собственный Sprite) в одной области видимости. Обычно вы импортируете только свой собственный класс:
/* we are not importing this any more
import flash.display.Sprite;*/
//only importing my own class
import uk.co.mywebsite.Sprite;
/* now I can initialize my object without using the full class name, and the compiler knows
I mean my own Sprite class */
var mySprite:Sprite = new Sprite();