Sei que isso pode ser muito específico para casos de uso, mas me pergunto isso com muita frequência. Existe uma sintaxe geralmente preferida.
Não estou perguntando qual é a melhor abordagem quando em uma função, estou perguntando se devo sair mais cedo ou simplesmente não devo chamar a função.
Envoltório se chamada de função ao redor
if (shouldThisRun) {
runFunction();
}
Ter se ( guarda ) em função
runFunction() {
if (!shouldThisRun) return;
}
A última opção obviamente tem o potencial de reduzir a duplicação de código se essa função for chamada várias vezes, mas às vezes parece errado adicioná-la aqui, pois você pode estar perdendo a responsabilidade única da função.
Heres um exemplo
Se eu tiver uma função updateStatus () que simplesmente atualize o status de algo. Quero apenas o status atualizado se o status tiver sido alterado. Conheço os lugares no meu código em que o status tem o potencial de mudar e conheço outros lugares nos quais ele desafiadoramente mudou.
Não tenho certeza se sou apenas eu, mas parece um pouco sujo verificar essa função interna, pois quero manter essa função o mais pura possível - se eu chamá-lo, espero que o status seja atualizado. Mas não sei dizer se é melhor encerrar a ligação com um cheque nos poucos lugares em que sei que tem o potencial de não ter mudado.