This has been debated at length

I do this: all offensive spells on my alts are setup like this:
/cast [target=focustarget,harm][harm] <offensivespell>

My CC spells are setup like this:
/cast [harm][target=focustarget,harm] <CCspell>

On my Main I have F9-F12 bound to: /script SetRaidTargetIcon(4) (or whatever the syntax is.)
On Mage1 F9 is bound to
/target focustarget
/stopmacro [nocombat]
/cast [harm][target=focustarget,harm] Polymorph

on Mage2 F10 is bound to
/target focustarget
/stopmacro [nocombat]
/cast [harm][target=focustarget,harm] Polymorph

On my Mage 1 (who is F9) I have F10-F12 bound to "Do nothing", Mage 2 has F9,F11,F12 bound to "Do Nothing" etc.


I roll up to a fight, and target mob1. I wait about 1 second (for lag) then hit F9. This sets an X (in my setup) on mob1 and now Mage1 has mob1 as her target. I then target mob2 and hit F10, then mob3 and hit F11. If I need a shackle, I hit F12, and my priest gets a target too.

I have Shift-S as Mage1Sheep, Shift-D as Mage2Sheep ... so I just roll those 2 keys at the start of combat.

If I am in a fight, and I get a surprise add (lets say Mage2 didn't have to sheep) - I just hit F10 ... and it will target, set the raid icon, and sheep all with 1 button. Since the raid icons are there, if a sheep pops I know which toon needs to recast their CC.