На абстрактный вопрос, абстрактный же и ответ

А вообще, если по-интерпрайзному, то вместо ифоф надо делать так:
(с ифами)

Код AS3:
class MagicDamageClaculator {
function getDamage(forMagic:Magic):int
{
switch (forMagic)
{
case Magic.Earth: return 100;
case Magic.Air: return 200;
}
}
}
(без ифов)

Код AS3:
class EarthMagicDamageClaculator {
function getDamage():int { return 100; }
}
class AirMagicDamageClaculator {
function getDamage():int { return 200; }
}
Что вам больше по душе - решайте сами. На самом деле второй вариант - просто другой способ описать то же самое, в контексте AS3, скорее всего даже менее производительный, но в контексте просто разработки, и того, сколько нужно думать, и на сколько легко читается код - второй имеет преимущества.