I think the perfect name would incorporate all of those factors. Personality is also important too. If you are going for humour, something that contrasts your dog would be a good idea - like calling a toy breed Butch, or a St. Bernard Titch.
I think it is best to stay away from those typical names - Spot for a dalmatian, Fee Fee for a poodle, etc - as they turn your dog into an archetype rather than in individual.
I can't remember the name of the breed, but a friend has a wrinkly coated dog and called it scrunch.
Short names can be good for practicality, like giving commands and training. It will be easier for the dog to recognise when it's being addressed. You could also pick something that can be shortened to a nickname.