Что происходит на этом моем объявлении?

Хорошие ответы все. Я добавил бы несколько способов избежать темной стороны TDD:

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

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

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

5
задан Qantas 94 Heavy 17 February 2014 в 14:01
поделиться

3 ответа

Из http://perldoc.perl.org/functions/my.html :

my TYPE EXPR: ATTRS

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

Точная семантика и интерфейс TYPE и ATTRS все еще развиваются. TYPE в настоящее время привязан к использованию директивы fields, а атрибуты обрабатываются с помощью директивы attributes или, начиная с Perl 5.8.0, также через модуль Attribute :: Handlers.

6
ответ дан 18 December 2019 в 09:50
поделиться

Он проверяет наличие пакета с таким же именем и, на данный момент, привязан к прагме fields , которая помогает проверять опечатки в именах полей.

Например:

package MyPackage;
use fields qw/ foo bar /;
sub new { fields::new(shift) }

Затем, если вы попытаетесь запустить

use MyPackage;
my MyPackage $p1 = MyPackage->new;
print $p1->{notpresent}, "\n";

, вы получите

No such class field "notpresent" in variable $p1 of type MyPackage at ...
11
ответ дан 18 December 2019 в 09:50
поделиться

Помимо использования полями, лексический тип используется экспериментальной прагмой types (доступной на CPAN).

0
ответ дан 18 December 2019 в 09:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: