Пришло время приниматься за работу. Пальцы в нетерпении парят над клавиатурой.
Чем же я собирался заняться? Точно - ошибка! Вчера мне приглянулась замечательная ошибка. Очень интересная и вкусная, конечно с точки зрения программиста. Помню что то не простое.
Надо открыть систему отслеживания ошибок.
Вот она - лапочка. В этот раз коллеги постарались. Под нашим давлением отдел качества вынужден был прочитать несколько статей по правилам оформления ошибок. После чего описания ошибок можно читать без переводчика. Конечно отдельные контролеры качества продолжают пускаться в графоманию, а иные забывают описать суть явления, но, в целом, ситуация значительно изменилась в лучшую сторону.
Обнаружил орфографическую ошибку в имени переменной. Не критично, но я педант. Золотое правило программирования. Если код работает - трогать его нельзя. Но я не могу пройти мимо оставив в коде такую описку. Просто стыдно. Не важно кто это написал я или кто то из коллег. Аккуратно правой кнопкой мыши открываем меню редактора кода. Он у меня умный. Нажимаем на пункт "Переименовать переменную". Пускай за меня подумает компьютер, мне пока еще нельзя. Пока я не погрузился в нужное состояние вносить в код значительные изменения руками опасно. Редактор кода самостоятельно должен найти все места где встречается это неправильное название и заменить на предложенный мной вариант. Программа быстро закончила свою работу. Проверим. Вроде бы все правильно. Теперь пробуем запустить. Работает!
Нет есть же еще одно место - редактор кода не сможет туда заглянуть. Там имена переменных описаны в виде обычных строк. Так называемое "отражение". Странно - здесь имя переменной написано без орфографической ошибки. Эта часть кода не могла правильно работать.
Вот этот код. Вот эта строчка. Выглядит элегантно. Каждое отдельное слово предельно понятно. Прочитать еще раз. Ничего не пойму. Кто это писал и когда? Под рукой система контроля версий. Она все помнит. Кто и когда. А если программист был аккуратен, то система помнит и зачем. Интересно. Писал это я, два месяца назад. Зачем тоже понятно. Почему же я не помню что делает эта часть кода?
- Ты за булочками пойдешь?
"Ты за булочками пойдешь" - набрал. Теперь проверить. Не компилируется. Так а зачем здесь это вообще? Какой это язык?
- Очнись! Обед! За булочками идешь?
Смотрю в код. На экране подсвечена красным только что вбитая строка. Точно - надо обедать. Стираю нехарактерную для кода строчку и отправляюсь с коллегой. Немного сбился с мысли. Предыдущая конструкция. Обдумывание которой было нарушено так не вовремя наступившим обедом. Как то она меня раздражает. В чем же дело? Подходим к ларьку. Надо купить слойку и не забыть заплатить деньги, как в прошлый раз.
- Слойку пожалуйста.
Понял. Конструкция слишком жесткая. Если придется менять сторонний код, а его обязательно надо будет исправить, никто не догадается заглянуть в это место. И тогда все развалится. Жесткая - вот в чем проблема этого кода.
- Вам какую слойку?
- Жесткую... Ой, простите пожалуйста, со сгущенкой. С вареной сгущенкой, за четырнадцать рублей.
Надо срочно исправить, надо что бы эта часть кода подстраивалась.
- Молодой человек! Вы слойку забыли и сдачу.
Тьфу. Возвращаюсь. Почему слойка? Сейчас же обед а не утро.
- И сэндвич пожалуйста.
Хорошо что в очереди только знакомые, не первый год знающие меня люди. Да и продавщица давно работает здесь - привыкла.
Не на долго выбрасываю из головы все мысли. Расплатился, забрал сдачу, забрал сэндвич. Вот почему такой простой, линейный алгоритм постоянно вызывает сбои? Надо будет описать это в системе контроля ошибок. Стоп. Не надо.
Что я собирался сделать? Песок, пыль, вода. Не возможно схватить уплывающий, разлетающийся мир. Мысль проходит насквозь ни за что не цепляясь. Я просил жесткую слойку значит думал про что то жесткое. Жесткий диск? Нагрузка на жесткий диск? Нет. В той части где я нахожусь нет ничего связанного с жестким диском. Или есть? После обеда придется начинать заново.