Когда я что-то пишу, половина усилий уходит на добавление четких и кратких отладочных данных или функциональных возможностей , которые можно включить / отключить, когда что-то требует отладки.
Примером функции отладки является класс загрузчика, в котором я могу включить #define, который заставляет его «делать вид, что загружает» файл и просто возвращать мне тот, который у меня уже есть. Таким образом, я могу проверить, что происходит, когда пользователь загружает файл, не дожидаясь, пока сеть физически захватит файл каждый раз. Это отличная функциональность, но код становится более запутанным с #ifdefs.
В конечном итоге я получаю кучу #define
, таких как
// #define DEBUG_FOOMODULE_FOO
// #define DEBUG_BARMODULE_THINGAMAJIG
// ...
, которые раскомментированы для того, что я хочу смотреть на. Сам код выглядит примерно так
- (void)something
{
#ifdef DEBUG_FOOMODULE_FOO
DebugLog(@"something [x = %@]", x);
#endif
// ...
#ifdef DEBUG_FOOMODULE_MOO
// etc
}
Это отлично подходит для написания / сопровождения кода, но ничего не делает для внешнего вида кода.
В любом случае, как люди могут легко и без усилий писать "материал" для долгосрочной отладки?
Примечание: Я говорю не только о NSLogging здесь ... Я также говорю о таких вещах, как pretend-download выше.