Ultimamente, tenho me esforçado para entender qual é a quantidade certa de verificação e quais são os métodos adequados.
Eu tenho algumas perguntas sobre isso:
Qual é a maneira correta de verificar se há erros (entrada incorreta, estados incorretos etc.)? É melhor verificar explicitamente se há erros ou usar funções como declarações que podem ser otimizadas em seu código final? Sinto que a verificação explícita desorganiza um programa com muito código extra que não deve ser executado na maioria das situações - e sem mencionar que a maioria dos erros acaba com uma falha de abortar / sair. Por que desorganizar uma função com verificações explícitas apenas para abortar? Procurei afirmações versus verificação explícita de erros e encontrei pouco para realmente explicar quando fazê-lo.
A maioria diz 'use asserts para verificar erros de lógica e use verificações explícitas para verificar outras falhas'. Isso não parece nos levar muito longe. Diríamos que isso é possível:
Malloc returning null, check explictly
API user inserting odd input for functions, use asserts
Isso me tornaria melhor na verificação de erros? O que mais eu posso fazer? Eu realmente quero melhorar e escrever melhor, código 'profissional'.
setjmp
/ longjmp
estão disponíveis em C, então você não precisa de um novo idioma.