согласен с волшем. Паблик переменные - зло, особенно, если проект средних размеров (от 20000 строк и более),
Зло, потому что утрудняют изучение кода.
Вот что значит данная запись?

Код AS3:
var value:Object = anyObject.something;
получения ссылки на функцию? Или же получение некой переменной? А можно ли записать туда что-то?
Ещё печальнее обстоят дела, когда происходит запись в объект:

Код AS3:
anyObject.something = null
это проперти, или паблик-переменная? Стоит ли пологаться на something? ведь, возможно, null - недопустимое значение для неё.
Поэтому я считаю, что лучшее средство - это ВСЕГДА писать геттеры и сеттеры. И не эдобовские геттеры и сеттеры, а джавовские, т.е:

Код AS3:
public function getData():IData{
return m_data;
}
public function setData(data:IData):void{
assert(data != null, "blabla");
m_data = data;
update();
}
поскольку в таком случае, когда

Код AS3:
function myFunction():void{
var value:IData = data;//непонятно, читается переменная или свойство?
}
вполне ясно, что

Код AS3:
function myFunction():void{
var value:IData = getData();//явно вызывается функция
}
В довершение ко всему, как вы собираетесь отлавливать изменения в паблик-переменных?