function saveUser(
user: User,
emailOption: WelcomeEmailOption,
verificationStatus: VerificationStatus
): void {
if (emailOption === WelcomeEmailOption.Send) {
sendEmail(user.email, 'Welcome!');
}
if (verificationStatus === VerificationStatus.Verified) {
user.verified = true;
}
// save user to database...
}
E você pode chamá -lo assim:
saveUser(newUser, WelcomeEmailOption.Send, VerificationStatus.Unverified);
Não é muito mais fácil para o seu cérebro? Essa chamada é como documentação. Está claro e direto ao ponto, e o mantenedor pode ver imediatamente o que a chamada faz e o que os parâmetros significam.
Booleanos são uma armadilha para a complexidade futura
Uma vantagem de enums
Eles são expansíveis. Imagine que você tem um sistema de comida e bebida com bebidas pequenas e grandes. Você pode acabar com
var IsSmallDrink: boolean;
E você constrói seu sistema em torno dessa variável booleana, mesmo tendo campos booleanos no banco de dados para essas informações. Mas então o chefe aparece e diz: “Ei, vamos começar a vender bebidas médias!”
Uh Oh, isso será uma grande mudança. De repente, um simples booleano se tornou um passivo. Mas se você tivesse evitado booleanos e começou com
enum DrinkSize {
Small,
Large
}
Em seguida, adicionar outro tamanho de bebida se torna muito mais fácil.
Olha, os booleanos são poderosos e simples. Tenho idade suficiente para lembrar quando os idiomas nem sequer tinham tipos booleanos. Tivemos que simulá -los com números inteiros:
10 LET FLAG = 0
20 IF FLAG = 1 THEN PRINT "YOU WILL NEVER SEE THIS"
30 LET FLAG = 1
40 IF FLAG = 1 THEN PRINT "NOW IT PRINTS"
50 END
Então eu entendo o apelo deles. Mas o uso de booleanos acaba sendo repleto de perigo. Existem exceções? Claro, existem casos simples em que as coisas realmente estão e sempre serão verdadeiras ou falsas – como isLoading
. Mas se você estiver com pressa, ou decepcionar sua guarda, ou talvez se sinta um pouco preguiçoso, pode facilmente cair na armadilha de escrever um código complicado e difícil de realizar. Portanto, pise leve e cuidadosamente antes de usar uma variável booleana.