Как программисту не оступиться? Предусмотреть ошибку!
Из серии «Парадоксы программирования» Взбирается по крутому склону альпинист. Представляете, что будет, если он оступится, а страховочный трос подведет? Представили? Не успели? А он уже долетает. Дно пропасти совсем близко…
Стоп, простите, я имел в виду — программист, и не взбирается, а сидит. Двигается только мышка в его руке. «Программист — это совсем другое дело», — скажете Вы. Но думаете, ему оступиться негде? Есть! И в гораздо большей степени, чем альпинисту. Сбой компьютера, потеря информации, вкравшаяся в программу ошибка, завалившаяся система… Всего не перечислишь. Только до дна пропасти он не долетит. На пути встретит отдел кадров. А там уж с ним разберутся. Если до отдела кадров не долетит, то до крупных неприятностей — это точно. По крайней мере, мелкие всегда гарантированы.
Но не будем так мрачно. Есть элементарные действия, которые позволяют избежать такого исхода. Рассмотрим их.
1. Делайте регулярные копии своих работ или убедитесь, что они делаются автоматически (я бы подстраховался сам).
2. При копировании важной информации из одного окна в другое лучше, чтобы окно-приемник было пустым. Тогда Вы никогда не перепутаете, из какого окна в какое копировать. (Представьте, что во втором окне предыдущая копия информации, а Вы на какой-то момент отвлеклись и случайно переместили мышку. И первое окно в Вашем сознании вдруг стало вторым, а второе — первым. ) Случаи, когда копия затирала оригинал, у меня в практике были. Один раз я даже такое сделал сам.
3. Избегайте элементарной путаницы! Предположим — у Вас два ярлычка или модуля. Сначала надо проработать с одним, потом с другим. Интерфейс у них одинаков, не различишь. И только на глубоком расчетном уровне будет разница. Вы проработали с первым и ушли на обед. Вернувшись, Вы озадачились, какой же модуль осталось запустить. Вы мысленно перепутали их!
На практике лучше не иметь эти ярлычки рядом. В крайнем случае временно переместите второй, чтобы случайно на него не нажать, или удалите! Потом восстановите. Зато Вы будете уверены, что проработали с тем, что надо. У меня была такая проблема. Надо было в десяти директориях запустить модуль М1, а рядом находился модуль М. Видимых различий при их запуске не наблюдалось. Я действовал быстро, но на пятом запуске я поймал себя на том, что запускаю, как обычно, модуль М, а не М1, который был временным. Сколько раз я уже ошибся? Этого отследить простым путем я не мог. Поэтому я временно избавился от присутствия модуля М и провел всю работу заново.
4. Не загружайте мозги лишним! Если надо ввести какой-то оператор в программу или нужную команду, то лучше, если возможно, скопировать ее из уже отлаженного блока, чем набирать заново. Элементарная ошибка при вводе может дорого обойтись! У меня бывали проблемы и с одним единственным словом, которое я каким-то чудом не смог набрать правильно. То буква не на том регистре, то цифра пропущена. А мозги уже решают следующую проблему и всецело доверяют рукам — казалось бы, простое дело. Старался я, старался, потом плюнул (не на монитор, конечно), взял и скопировал. Проблемы испарились.
5. Защищайте места расположения важной информации от случайного доступа, да и своего собственного тоже. Опишу забавный случай. Звонит мне бывший коллега-системщик с прежнего места работы и заявляет, что неожиданно перестала работать крупная графическая система. А без нее нельзя прочитать несколько тысяч моделей, запроектированных в течение ряда лет. Авария ни с чем на связывается. Вечером все работало, утром не запускается. Полтора дня уже простояли. Начал думать. Анализирую сообщение программы. Все говорит за то, что пропал доступ к директории С. Задаю по телефону вопросы:
— Директория «А» на месте? — Да. — Директория «В»? — На месте. — Директории «С»? — Тоже. — А что в директории «С»?
Он называет. Все правильно. Не подкопаешься. И не работает. Прерываемся на обед. Потом начинаю опять пытать насчет директорий, только в обратном порядке. «Зачем? — спросите Вы. — Ведь уже все ясно!» А как раз при обратном рассмотрении и выявляется, причем совершенно случайно, что директория «С» оказалась внутри директории «В», а не рядом, где ей положено быть.
Чьи-то ловкие руки случайно подцепили мышкой «С» и неосознанно закинули ее внутрь «В». Этими руками могли вполне быть и руки моего коллеги-системщика. Работал на клавиатуре он быстро, а мышкой пользовался стремительно. Да и у меня самого бывали аналогичные случаи. Самое лучшее — это запретить всеобщий доступ к таким тонким местам. Если невозможно, то ограничить только чтением. Но не всегда это применимо. Если из программы в директорию идет запись? Ну, тут уж думайте сами. Выкрутиться всегда можно. Надо не наказывать человека за ошибку (если нашли, конечно, кого наказывать), а ликвидировать саму возможность ошибки.
6. Никогда не подменяйте программно созданные форматы данных ручной компоновкой! Пусть даже их составить легко и просто. Был у меня такой случай. Из банка пришла дискета с очередной информацией, которую надо было ввести в нашу систему. Бухгалтер вставлял дискету в компьютер, вызывал программу и через минуту имел на экране необходимые данные. Так же он поступил и на этот раз. Однако через минуту, посмотрев на экран, он в ужасе схватился за телефонную трубку. Я появился перед экраном через две. У меня все похолодело внутри. Все фамилии нашей огромной базы данных были заменены на одну единственную. Не буду называть какую, но я могу забыть свою собственную, а эту, пожалуй, не забуду никогда. Полтора дня ушло на восстановление. Заменены были не только фамилии, но и многие личные данные, включая и зарплату.
Как потом выяснилось, в банке появился новый человек, который при записи на дискету пренебрег старой программой и набрал информацию вручную. Так ему было быстрее. Несомненно, в нашем обеспечении существовал контроль, но всего предусмотреть невозможно. Редкостная накладка ошибок заставила нашу программу сотворить чудеса.
7. В заключении хочется сказать — будьте осторожны с промышленными базами данных. Никогда при отладке не подключайтесь к ним! Вы можете забыть вернуться к отладочной базе, и тогда… В крайнем случае, если необходимо проверить что-то именно на промышленной базе и нет никакой возможности сделать это на ее копии, призовите на помощь коллегу. Вы при нем подключитесь, а отключиться он Вам поможет.
Так вот, чтобы ваши программы творили поменьше лишних чудес, пользуйтесь этими несложными правилами. Они вас защитят от многих напастей, о которых вы и знать не будете. А что альпинист? Пускай себе взбирается, но оступиться у него шансов теперь гораздо меньше.