Esta é uma pequena coisinha, mas toda vez que tenho que codificar algo assim, a repetição me incomoda, mas não tenho certeza de que nenhuma das soluções seja pior.
if(FileExists(file))
{
contents = OpenFile(file); // <-- prevents inclusion in if
if(SomeTest(contents))
{
DoSomething(contents);
}
else
{
DefaultAction();
}
}
else
{
DefaultAction();
}
- Existe um nome para esse tipo de lógica?
- Eu sou um pouco TOC demais?
Estou aberto a sugestões de códigos malignos, mesmo que por curiosidade ...
make sure I have valid data for DoSomething(), and then DoSomething() with it. Otherwise, take DefaultAction()
. Os detalhes detalhados de se ter os dados de DoSomething () estão em um nível de abstração mais baixo e, portanto, devem estar em uma função diferente. Esta função terá um nome no nível de abstração mais alto e sua implementação será de baixo nível. As boas respostas abaixo abordam esse problema.
DefaultAction
chamadas viola o princípio DRY