Against the AI or crappy multiplayer humans, it is best to have Arbalesters as they will probably have arbalesters or longbowmen of their own and you can expend your arrows into enemy units that matter, then charge your fresh un pepperred troops in.

In multiplayer though I prefer longbowmen as they can kill more before the enemy close in and can continue to fire on enemy units which have not engaged after my halbs and elite infantry deal with the enemy charge.

Once I'm in range I usually send a defensive unit like spearmen in to get rid of enemy ranged units, then charge in with the rest of my units. The spearmen survive too long for the enemy to obliterate them and they help my slow infantry to flank.