Andy Matuschak has written a blog post on user interaction with a few basic guidelines for designing user interaction.
First and foremost is the principle of least astonishment. Essentially, actions shouldn't surprise the user. They should work consistently across applications, they should be undoable, and what works elsewhere should work everywhere.
If you require a short url to link to this article, please use http://ignco.de/49