Como NickWilliams já disse : o conceito que o OP descreve é chamado idempotent (substantivo Idempotency ). É de fato uma prática comum, especialmente em APIs de alto nível.
MAS: Renomeie a função.
Em vez de startHttpServer
, chame-o de makeSureHttpServerIsRunning
ou ensureHttpServerIsRunning
.
Quando uma função é chamada startHttpServer
, os leitores esperam que ela inicie um servidor HTTP; quando chamado dez vezes seguidas, terei dez servidores em execução.
Sua função não faz isso na maior parte do tempo. Além disso, o nome com "start" sugere que, se eu quiser apenas um servidor em execução, terei que acompanhar se a função já foi chamada ou não.
Quando uma função é chamada makeSureHttpServerIsRunning
, presumo que ela fará as coisas necessárias para garantir que um servidor HTTP esteja em execução, provavelmente verificando se já está em execução e iniciando-o de outra forma. Eu também suponho que a função garante que o servidor esteja realmente em execução (iniciar um servidor pode envolver algum tempo em que ele ainda não esteja funcionando).