Статьи

Атака ошибок убийц!

Perl, без сомнения, очень сложный язык программирования. Самая крошечная опечатка может привести к сообщению об ошибке, которое ученые могли бы потратить годы на расшифровку. Однако большинство людей не знают, что Perl предлагает средства, специально предназначенные для устранения наиболее распространенных ошибок.

Есть тысячи вещей, которые вы можете сделать, чтобы избавиться от ошибок, но здесь я собираюсь выделить три наиболее эффективных совета. Вы должны быть готовы немного изменить свой стиль кодирования, но абсолютно необходимо, чтобы вы использовали встроенные в Perl функции поиска ошибок в коде: именно это отделяет новичков от профессионалов.

Даже если вы думаете, что ваш текущий стиль работает на вас, отойдите и подумайте об этом. Вы тратите часы на каждую ошибку? Вы мечтаете о том, чтобы раздавить жуков во сне только потому, что у вас нет времени искать и уничтожать их всех в течение дня? Если это так, вы главный кандидат на эти советы. Не просто читайте эту статью — действуйте по ней. И если вы мастер Perl, всегда есть возможности для совершенствования, не так ли?

Выберите свой редактор с умом

Не все редакторы кода одинаковы. Некоторые просто текстовые редакторы, такие как Блокнот. Некоторые включают подсветку синтаксиса, но не намного больше. Некоторый баланс скорости и удобства. А другие, похоже, страдают от перегрузки функций.

Вы должны тщательно выбирать. Редактор без подсветки синтаксиса даст вам большой недостаток. Подсветка синтаксиса показывает, завершили ли вы круглые скобки, кавычки и любые другие типы символов-разделителей. Ошибки цитирования почти невозможно сделать с помощью правильного редактора, но они могут поставить вас в тупик, если вы решите использовать Блокнот или подобный редактор.

Подсветка синтаксиса — не единственная функция, которую вам нужно искать в редакторе. Проверьте на способность:

  • открыть несколько файлов,
  • менять шрифты,
  • для автоматического отступа и
  • сопоставить фигурные скобки (выделить открывающую фигурную скобку при закрытии блока кода).

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

использовать строгое;

«Строгая» прагма Perl, как ее называют, — это файл, который говорит Perl, что нужно быть более разборчивым в отношении вашего кода. Придирчивый Perl предупредит вас, когда увидит что-либо, что может быть ошибкой. Возможно, вы обнаружите, что строгий запрет не позволяет вам писать свой код так, как вы привыкли, — на первый взгляд это наверняка покажется таким.

Чтобы дать вашей программе преимущество в строгости, просто добавьте use strict; наверх, после любых строк #!/usr/bin/perl , но перед любым другим кодом. Итак, ваш код должен выглядеть примерно так:

 #!/usr/bin/perl  # weather.pl by Perl F. Anatic  use strict; 

Основным правилом строгого соблюдения является явное объявление переменных. Вы больше не можете просто начать использовать переменную, так как теперь вам нужно заранее сообщить об этом Perl. Это влечет за собой использование моего, как видно ниже.

 my $fruit = fruit_of_the_day(); 

Обычно это было бы написано следующим образом.

 $fruit = fruit_of_the_day(); 

Почему выгодно использовать этот новый стиль? Строгость хороша тем, что делает невозможным неправильное написание имени переменной. Ну, не невозможно, но если вы сделаете это, это даст вам очень четкое предупреждение и предотвратит вас в еще большее замешательство. Рассмотрим следующий пример, где во второй раз, когда мы используем переменную @input , мы ее неправильно @input .

 my @input = <>;  print join(":", @inpt); 

Видишь, что мы сделали? Интерпретатор Perl этого не делает, это точно! Он проходит через наш код, даже не подозревая, что что-то не так. Если бы мы добавили, use strict; к началу нашего Perl-кода мы бы увидели это предупреждение.

 Global symbol "@inpt" requires explicit package name at -e line 1.  Execution of -e aborted due to compilation errors. 

Поскольку каждая переменная должна быть объявлена ​​перед использованием, а мы не сообщили интерпретатору о @inpt , это говорит нам о нашей ошибке. Насколько проще может быть кодирование? Без этих полезных советов от переводчика Perl мы могли бы часами искать причину наших проблем. В файле с сотнями строк (в отличие от этого примера из двух строк) это облегчает поиск ошибок по экспоненте.

использовать предупреждения;

Другой похожий полезный инструмент — встроенные предупреждения Perl. Как и строгая прагма, они заранее предупреждают вас о любых причудах, которые могут быть или не быть ошибками, но, вероятно, есть. Опять же, точно так же, как и в Strict, вы можете добавить их в свою программу, просто добавив предупреждения об использовании; наверх Верхняя часть вашего файла кода теперь должна выглядеть следующим образом, при условии, что вы хотите добавить как строгие, так и предупреждения.

 #!/usr/bin/perl  # weather.pl by Perl F. Anatic  use strict;  use warnings; 

Но что именно делают эти предупреждения? Они покажут вам ваши ошибки при наборе, например, если вы попытаетесь использовать = вместо == в блоке if, или вы попытаетесь добавить строку к числу, например print "fish" + 4; , Это может показаться глупыми ошибками, но на самом деле они довольно распространены. Если вы думаете об ошибках, которые вы делаете во время отладки, вы обнаружите, что большинство из них «глупы», и что вы просто не правильно думали, когда кодировали этот бит.

Завершение всего этого

Отладка всегда займет больше времени, чем нужно. Независимо от того, занимает ли вы вдвое больше времени, чем программирование новых функций, или занимает всего несколько секунд каждую неделю (удача!), Эти советы значительно сократят время, которое вы тратите на разочарование при поиске этой ошибочной ошибки. С инструментами, которые доступны, у вас нет оправдания, чтобы не использовать их!

Для каждой ошибки, которую вы делаете, подумайте, как вы могли предотвратить ее, как только вы протестировали свой код. Автоматизируйте исправление ошибок, которое можно автоматизировать. Позвольте интерпретатору Perl выполнить грязную работу и оставить трудные проблемы и новые возможности для нас, людей. Программирование — это создание программного обеспечения, а не ошибок!

связи

use strict; документацию, посетите http://perlmonks.org/index.pl?node=strict

Для получения дополнительной информации об use strict; и warnings , посещение строгое; Это не Perl, а использовать строгие и предупреждения .