Bem-vindo ao inglês jurídico.
O uso de "obrigação" == "deve" == obrigação contratual. É um legalismo. Não leva a "questionamentos". Marca a sentença como uma obrigação contratual formal.
Usar "seria" == "irá" == boa ideia. Marca a frase como um recurso opcional.
O questionamento faz parte da facilitação, organização, ajuda e construção de confiança. Não é uma conseqüência da escolha de palavras.
Usar um verbo simples sem o modificador torna a frase um pouco mais difícil de destacar como um requisito formal. E no caso de verbos supercomplexos, pode ser um pouco arriscado descobrir como conjugá-lo.
Fácil - verbos como "notificar" ou "criar".
O sistema notifica por email. (O verbo "notificar" é conjugado "notifica" para "o sistema" - seja o que for.)
O sistema deve notificar por e-mail. ("notificar" se torna "notificará" - sem conjugação. Muito simples.)
Frases verbais difíceis como "entrar" ou frases verbais específicas de domínio como "extrair, limpar, transformar, desduplicar e carregar" ou um substantivo como "perspectiva" que foi verificado. A frase mais longa, com vários verbos enterrados, é difícil de conjugar: conjugar cada verbo? Ou tente conjugar a frase longa como se fosse uma única palavra? Como qualquer substantivo pode ser verbado em inglês, é difícil saber como conjugar esses verbos inventados.
O sistema extrai, limpa, transforma, deduplica e carrega quando o usuário clica em Enter. (O inglês verbaliza trivialmente qualquer frase substantiva.) Ou é extrai, limpa, transforma, deduplica e carrega?
O sistema deve extrair, limpar, transformar, desduplicar e carregar quando o usuário clicar em entrar. (A frase hedionda é deixada intacta, não há mistério sobre a conjugação verbal.)
["O que?" você diz: "qualquer substantivo pode ser verbado em inglês?". Sim. Qualquer substantivo. Eu vou impedir isso. Eu sempre parei nisso. Até as especificações devem impedir isso.]
Puramente uma questão de preferência estilística. Tudo se resume a perguntar: você / seus clientes preferem pensar no sistema no presente ou no futuro?
Qualificadores como "should" ou "will" implicam no tempo futuro, mas isso é suave e lê bem o suficiente quando se pensa no tempo presente. A falta de um qualificador indica definitivamente o tempo presente (ou seja, neste exato momento).
Eu prefiro usar um qualificador porque ele lê muito bem nos dois casos, enquanto a falta de qualificador lê um pouco estranhamente durante o desenvolvimento quando tudo está no futuro.
De qualquer forma, se você decidir usar um qualificador, recomendo usar "must" em vez de "should" . "Dever" pode ser interpretado como opcional (apesar da afirmação de S.Lott em contrário), mas "deve" remove completamente qualquer ambiguidade - deve claramente significar "não opcional".
E como ainda não posso comentar (restrições de carma), esta é uma resposta a S.Lott sobre Deveria / Deveria versus Deveria / Vontade: há muita ambiguidade sobre dever e vontade, mesmo na elaboração de contratos legais. Veja este artigo para uma explicação .
fonte
Sou a favor do uso de terceira pessoa, tempo presente sem qualificador.
Meu argumento principal é o seguinte: Um teste é uma história.
Uma história consiste em cenas. Cada cena descreve:
Exemplo:
Assim como uma boa história, é fácil ler um bom teste.
Uma história mostra o que o programa faz, por exemplo
Por outro lado, o uso de um qualificador (não importa se é "deveria" ou "deve") transforma o teste em uma lista de asserções, por exemplo:
Não há história contínua: sua mente está avaliando uma lista de afirmações.
Isso é subjetivo, mas ler uma linguagem natural (uma história) é mais simples do que ler uma lista de afirmações.
fonte
Na minha opinião, você sempre deve usar 'should'.
Raciocínio - com BDD, quando você está escrevendo o teste, o software não ainda fazer o que você quer fazer, então dizendo que "faz algo" é falsa. "Deve fazer alguma coisa", e os testes serão aprovados enquanto continuar a fazer alguma coisa.
fonte
De behaviour-driven.org intitulado "GettingTheWordsRight" :
Em resumo, as palavras que usamos para descrever as coisas influenciam a maneira como nós (e outros) pensamos sobre essas coisas. Também não se trata apenas de ser mesquinho em relação à semântica, pois certas palavras trazem nuances que afetam a maneira como interpretamos o significado de uma frase, tanto no nível intelectual quanto no emocional. Nossa linguagem é rica em palavras e frases descritivas, portanto, parece razoável usar palavras que transmitam claramente a intenção dos elementos que desejamos descrever no código.
No caso do BDD, estou pessoalmente que quase sempre usa a palavra deve ao nomear testes, porque seu uso implica que, embora a intenção é para um teste para fornecer um determinado resultado, outras consequências inesperadas podem surgir que terá de ser tratada com se um resultado do teste deve ser considerado válido. Talvez você possa usar as palavras esperar ou deveda mesma forma, no entanto, essas palavras implicam um ponto de vista mais imperativo, de modo que o nome do teste pode ser confundido com "não há nada de errado com o teste, assuma que a implementação está estragada", enquanto * deveria "implica que o teste provavelmente estar correto, mas pode precisar ser verificado novamente quanto a erros, se os resultados do teste não parecerem satisfatórios.Eu gosto disso, porque influencia o seu pensamento, de modo que você é incentivado a manter a mente aberta enquanto codifica, o que é muito É importante quando você deseja evitar um travamento enquanto tenta depurar seu código e se vê procurando erros no local errado devido a uma suposição.
No entanto, vi que a aplicação quase "religiosa" da palavra deveria falhar quando foi aplicada como um prefixo para os nomes dos testes, pois forçou os programadores envolvidos a passar por certas ginástica mental e linguística para fornecer um nome de teste que era significativo e, nesses casos, significa que a intenção de acertar as palavras não atende às suas expectativas, e os próprios testes se tornam difíceis de decifrar como resultado. Quando esse tipo de situação surge, eu usaria a palavra deveriaem qualquer local do nome do método de teste, para garantir que o nome transmita seu método de forma simples e clara. Certamente, eu não aplicaria um uso específico de palavras se outras fossem igualmente apropriadas dentro de um determinado contexto. O truque, no entanto, é escolher palavras que não deixem margem para discussões sobre o que algo representa no código, e que o levem a pensar nas coisas que seu código deve fazer sem depender de mera implicação.
fonte