I mentioned an article discussing component design earlier this week. The article was published earlier today at Nettuts. The discussion and examples are C#, but you can apply the principles to any language. It is by no means a comprehensive and complete set of guidelines, but it’s enough to get started in the right direction.
Thanks to Jeffrey Way for publishing it at Nettuts.