Eu trabalhei para uma empresa que não tem prática de revisão de código. Para o auto-aperfeiçoamento e a ampliação de meus horizontes, gostaria de receber algumas críticas construtivas.
Agora, proponho analisar o caso recorrente com uma abundância de ramos.
Tarefa
O usuário pretende arrastar o arquivo com o mouse de uma janela de pasta para outra. Você precisa escrever um método despachante que verifique a essência do evento e a possibilidade de processá-lo, se necessário, esclarecer os detalhes, depois chamar o método desejado ou exibir uma mensagem sobre as restrições.
Se o usuário arrastar e soltar de uma pasta para outra e outra pasta estiver em uma seção diferente, verifique a capacidade de cópia. Se você pode copiar, copie. Caso contrário, dê uma mensagem que você não pode copiar. Não pode ser copiado por razões: não há permissão de gravação; espaço livre insuficiente; o sistema de arquivos não suporta caracteres no nome; o nome do arquivo na pasta de destino terá um caminho muito longo; já existe um arquivo com o mesmo nome na pasta (abra uma caixa de diálogo para substituir o arquivo, se o usuário concordar, substitua-o).
Se a pasta de destino estiver na mesma partição que o arquivo, mova o arquivo. Não foi possível mover: nenhuma permissão de gravação; o caminho de destino completo será muito longo, já existe um arquivo com o mesmo nome na pasta (abra uma caixa de diálogo); o arquivo é sistema e não pode ser excluído; já existe um arquivo com esse nome (abra uma caixa de diálogo para substituir o arquivo, se o usuário concordar, em seguida, substitua).
Se o usuário moveu o arquivo para outra janela, mas possui o mesmo caminho, crie uma cópia do arquivo (adicione "copy #" ao nome, onde # é o menor número positivo que torna o arquivo exclusivo). Não foi possível criar a cópia: sem permissões de gravação; o caminho completo é muito longo; espaço livre insuficiente.
Se o usuário transferiu com o botão direito, chame a caixa de diálogo para selecionar a ação (copiar / mover / criar atalho / criar cópia).
Se o usuário lançou o arquivo na mesma janela (o arquivo foi corrompido) com o botão esquerdo, não faça nada. E se estiver certo, sugira a criação de uma cópia ou atalho. Se o arquivo não cair na janela da pasta, não faça nada.
Com o tempo, novas condições podem aparecer, novas ações, condições já descritas para alterar ações podem mudar.
Solução para discussão
Ofereço minha solução controversa em Java, na qual atingi o segundo nível mais alto de aninhamento se:
public static void dispatchFileDropping( FileDragNDropEvent event ) {