É possível usar assert em Go? Ou é um mal, como dizem sobre C++?
Olá a todos! Sou novo em Go, vim do C++. Lá eu usava frequentemente assert() para verificar pré-condições e invariantes — por exemplo, que um ponteiro não é nil, que o índice está dentro dos limites do array, ou que o estado do objeto está correto. Isso ajudava muito na depuração.
Comecei a programar em Go e notei que na biblioteca padrão não há uma função assert. Claro, existe o pacote testing, mas ele é apenas para testes. No código de produção, comecei a escrever minhas próprias verificações, como:
```go
if somePtr == nil {
panic("somePtr é nil, isso é um bug!")
}
```
Mas um colega disse que isso é um estilo horrível, e que em Go é comum retornar erros, não entrar em pânico. Ele deu um exemplo de C++, onde assert é frequentemente criticado por poder ser desabilitado pela macro NDEBUG, o que leva a bugs ocultos.
Agora estou confuso. Por um lado, assert em C++ é uma maneira conveniente de documentar e verificar suposições. Por outro, em Go a cultura de tratamento de erros é completamente diferente. A pergunta é: vale a pena usar construções semelhantes a assert em Go? Se sim,
No answers yet.
Faça login para deixar uma resposta
Blogs