Quais são as vantagens de separar 'resultado' de 'status'

11

Digamos que você tenha alguns processos automatizados que geralmente passam pelos seguintes estados; agendado - iniciado - validando - executando - concluído

Além disso, esses processos podem terminar prematuramente devido a um erro ou cancelamento explícito do usuário.

Meu primeiro impulso é simplesmente adicionar erro e cancelar à lista de possíveis valores de status, mas fiquei pensando sobre as vantagens (conceituais) de separar resultado de status (mesmo que me pareça que alguém possa argumentar que erro e cancelado também são estados simplesmente diferentes do estado concluído ).

marca
fonte

Respostas:

12

O estado que você atribui aos seus processos deve refletir o que seu programa (ou os usuários, se você estiver apenas visualizando estados) fará com essas informações. Você tem o requisito de avaliar / mostrar o estado de seus processos, desde que estejam em execução e sem erros? Separe o resultado do status . Se você apenas precisar do status quando um processo terminar, não separe.

Você não deve modelar nada apenas para modelar. Melhor verificar suas necessidades. E se você não tiver certeza do que pode precisar mais tarde, escolha a solução mais pequena e mais simples para os requisitos que você tem certeza. Se você está apenas "adivinhando", em 90% de todos os casos, você adivinhará errado, portanto precisará alterar seu modelo mais tarde.

Doc Brown
fonte
1

mas eu estava pensando sobre as vantagens (conceituais) de separar resultado de status (embora me pareça que alguém possa argumentar que erro e cancelado também são simplesmente estados diferentes do estado concluído).

Há uma grande vantagem em detalhar o progresso e identificar pontos de falha (dentro de limites razoáveis), como no seu caso. Penso que a confusão deriva dos termos 'status' e 'state' - devemos qualificar esses termos. Por exemplo, "Status da Tarefa", mesmo que isso não seja muito preciso, por isso, podemos querer usar "Status da Execução da Tarefa"; no entanto, isso está errado porque você já possui uma etapa de execução. Podemos usar o nome "Status do processamento da tarefa" e os valores de: "iniciado - validando - executando - concluído" fazem todo o sentido. Na verdade, poderíamos adicionar 'Cancelado' à lista. No entanto, 'Erro' não responde a uma pergunta como: Qual é o status do processamento de tarefas muito bem. Parece que 'Erro' é um sub-status de Concluído . Então, o que fazemos? Poderíamos renomear Concluído para serConcluído OK e, em seguida, poderíamos adicionar Completed With Error à lista. Portanto, a lista final dos valores do Status do processamento da tarefa é:

  • Iniciado,

  • Validado,

  • Executando,

  • Cancelado,

  • OK concluído,

  • Concluído com erro

Editar: agora a lista acima ainda requer algum trabalho. Os 4 primeiros itens não têm a palavra 'OK' neles. Portanto, se é melhor que esteja lá para corresponder ao estado "Concluído OK". A outra coisa é que os 4 primeiros itens não têm um "com erro" - O que isso significa? O que acontece quando a "Execução" termina de forma anormal - Isso exige um novo estado de "Executado com erro"? Neste ponto, mais entradas e análises podem ser necessárias.

NoChance
fonte