Putting simple yes or no options in a dialog box ignores one very important fact; namely, that users almost never actually bother to read the text. When they do, they read it quickly and may miss something important. When a user quits an application, it might pop up a dialog box asking “Are you sure you want to quit without saving? (Yes/No)” or “Do you want to save before exiting? (Yes/No).” The user recognizes some version of save in either message and probably won’t bother reading the rest in detail, with a 50% chance of hitting the right button.
Instead of Yes/No, the buttons could be Save/Quit (or Save/Don’t Save). In this case, it wouldn’t matter what the rest of the text said. The user can infer the long description from the verbs in the button labels. This approach also helps save time for the user, which is important in a good user interface.
You probably have faced this sort of problem at an ATM or some software dialog box. What you don’t want to do as a developer is to confuse your users. No confusion, great combination… or something like that.