Cuando escribo algo, la mitad del esfuerzo tiende a incluir una salida de depuración clara y concisa, o la funcionalidad que se puede habilitar/deshabilitar cuando ese algo necesita depuración.Evitando problemas con depuración en el código
Un ejemplo de la funcionalidad de depuración es una clase de descarga en la que puedo activar un #define que hace que "pretenda" descargar el archivo y simplemente devolverme el que ya tengo. De esa forma puedo probar para ver qué sucede cuando un usuario descarga un archivo, sin tener que esperar a que la red tome físicamente el archivo cada vez. Esta es una gran funcionalidad, pero el código se vuelve más complicado con los #ifdefs.
finalmente termino con un montón de #define
s como
// #define DEBUG_FOOMODULE_FOO
// #define DEBUG_BARMODULE_THINGAMAJIG
// ...
cuales no están comentadas por las cosas que quiero mirar. El código en sí resulta algo así como
- (void)something
{
#ifdef DEBUG_FOOMODULE_FOO
DebugLog(@"something [x = %@]", x);
#endif
// ...
#ifdef DEBUG_FOOMODULE_MOO
// etc
}
Esto funciona muy bien para la escritura/el mantenimiento del código, pero no hace nada por la aparición del código.
¿Cómo se escribe "cosas" de depuración a largo plazo sin esfuerzo sobre la marcha?
Nota: No estoy hablando solamente de NSLogging aquí ... También estoy hablando de cosas como la descarga de simulación anterior.
Curioso: ¿hay algún problema al dejar declaraciones 'NSLog' en una compilación de lanzamiento? ¿Duele el rendimiento, llena los registros del dispositivo o proporciona resultados no deseados? –
Apple menciona que debe eliminar las entradas de NSLog de su código al liberarlo, así que creo que sí. (Realmente no puedo encontrar esto, pero estoy casi seguro de haberlo leído en developer.apple.com en algún lugar cuando comencé a codificar). – Kalle
Creo que recuerdo haber leído eso en alguna parte también. Probablemente no sea una mala idea. Tal vez la próxima versión de la aplicación agregue la macro y busque/reemplace. –