Cláusulas de guarda en C
Validar arriba y retornar temprano, para que al cuerpo no le quede anidamiento.
int copy_bounded(char *dst, size_t cap, const char *src, size_t *written) {
if (dst == NULL || src == NULL || cap == 0) {
return 0;
}
size_t n = strlen(src);
if (n + 1 > cap) {
return 0;
}
memcpy(dst, src, n + 1);
if (written != NULL) {
*written = n;
}
return 1;
}
Cómo funciona
- Un chequeo de NULL en la entrada le gana a un crash en lo profundo.
- Los retornos tempranos mantienen la ruta feliz a un solo nivel de sangría.
- Los chequeos documentan de paso el contrato.
Palabras clave y builtins usados aquí
NULLcharconstifintreturnsize_t
El intento, en números
- Líneas
- 14
- Caracteres a escribir
- 264
- Tokens
- 94
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 56 segundos.
Paso 2 de 4 en Firmas; paso 2 de 11 en APIs, errores y pruebas.