Когда я пишу что-то, половина усилий тратится на добавление ясного и краткого вывода отладочной информации или функциональности , которую можно включить / отключить, когда что-то требует отладки.
Примером функциональности отладки является класс загрузчика, где я могу включить #define, который заставляет его «притворяться» загружающим файл и просто вернуть мне тот, который у меня уже есть.Таким образом, я могу проверить, что происходит, когда пользователь загружает файл, без необходимости ждать, пока сеть физически захватит файл каждый раз.Это хорошая функциональность, но код становится беспорядочным с # ifdefs.
В итоге я получаю набор из #define
s, таких как
// #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 здесь ..Я также говорю о таких вещах, как загрузка, приведенная выше.