Não faça o usuário perder o trabalho.
Isso é mais difícil do que parece ... o trabalho é mais do que apenas "dados em um arquivo" ... é a qualquer momento que o usuário passa com o seu software.
Por exemplo, se o usuário preencheu seu formulário de 30 campos com 29 itens válidos e 1 inválido, não limpe todos os dados válidos para reclamar do 1 inválido (diabos, nem limpe o inválido. talvez seja longo e exija apenas uma correção menor ou o usuário não se lembrará do que era antes se você a limpar)
Um exemplo não óbvio, mas importante, é o que o Windows e praticamente todos os outros softwares de "gerenciador de arquivos" dão errado ... se eu passasse meia hora cuidadosamente pressionando a tecla Ctrl para selecionar um conjunto de arquivos e, acidentalmente, clique em vez de Com a tecla Ctrl pressionada, ele não deve limpar todos os meus arquivos selecionados anteriormente, fazendo-me começar de novo.
Outro que eles erraram ... se eu acidentalmente pressionar Ctrl-A (em vez de Ctrl-S ao lado), ele não deve perder meu lugar no arquivo e colocar o cursor no início ... o lugar certo no arquivo "trabalho" que o programa "perdeu".
Mais uma: a caixa de diálogo "commit" do TortoiseSVN possui uma longa lista de arquivos. Antes de clicar em "Confirmar", você pode descer a lista de arquivos, clicando duas vezes em cada um para ver as alterações na segunda caixa de diálogo. Para fazer isso rapidamente, às vezes uso apenas o teclado, pressionando <Esc>
para fechar a segunda caixa de diálogo e voltar à primeira. Se eu bater acidentalmente <Esc>
duas vezes, ele também fechará a primeira caixa de diálogo, o que fará com que eu esqueça o arquivo que estava fazendo.