I was reading a blog post called "Four Factors of Agile UX" and one of the "factors" is
"The ability to explain a design efficiently is vital to the success of a project".
I think this is a fantastically good design principle. Anything you design should be explainable in a reasonably straightforward way.
One of the tell tale signs of smelly design is when you do try and explain it and you start doing.... "And then the Widget puts the......oh...hmmm....hang on, that's a bit strange, hmmm, wonder what that's doing?....hmmm....". Suddenly things are not quite as you thought they were. Complexity is pretty sneaky and often sneaks into designs when your not paying attention.
It is important that its explainable in words you say out loud and not inside your head. So you can't cheat and look at a design and say to yourself "yep! makes sense to me! I could explain it!". Of course the best way to do this is to discuss your designs with someone else.