Tuesday, August 12, 2008

THOU SHALT GIVE MNEMONIC NAMES TO THY VARIABLES или о важности мнемоники

Кросс-пост с персонального блога...

В воскресенье убил почти шесть часов на вылавливание одного бага. Полное сумасшествие - все нормально, все работает, одна строчка выкидывает тонны строк в выходной файл без малейших проблем, через несколько строчек то же самое просто не работает, хоть убейся...

Программка сканирует тысячи (а точнее сотни тысяч) лог файлов и пытается превратить их в большую таблицу. Каждый лог файл исправно появляется в большой таблице, а вот в аггрегированной - фиг - появляется меньше одного процента... Ну, ясное дело, подозрения на локи, на параллельное исполнение, на неправильные ключи... Ан, нет, все вроде правильно, а все равно ни фига не работает! Ну, да, должны отфильтроваться записи приходящие от пользователей вне США, но вот в общем-то и все. И не так и много их должно быть, поскольку сайт заботливо сам признается, что не может их обслужить. А получается почти ничего.

Нет, честно. И вот, после шести часов я внимательно поглядел и понял... оказывается логическая переменная GeoFence, предназначенная для отличия записей с IP адресов внутри США от оных вне, означает что запись таки пришла из США... Обычно в таких случаях пишут много плохо читабельных символов вроде #$%&! @#& *()+ @#$%! Ну, и так далее....

В общем, переименование переменной в NoGeoFence и быстрая проверка мест, где она используется исправила проблему в пять минут, последовавших за этим открытием. А сколько на нее потратил времени, чтобы найти.... Нет, правда... "абыдно, да"?

No comments: