Perl:: Критик: Жизнь после Американского лося?

В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.

При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.

Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».

Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this. Возьмем этот пример:

public class Some {
    private int id;
    public int getId(){
        return this.id;
    }
    public setId( int newId ) {
        this.id = newId;
    }
}

И в другом месте вашего кода:

Some reference = new Some();    // Point to a new object of type Some()
Some otherReference = null;     // Initiallly this points to NULL

reference.setId( 1 );           // Execute setId method, now private var id is 1

System.out.println( reference.getId() ); // Prints 1 to the console

otherReference = reference      // Now they both point to the only object.

reference = null;               // "reference" now point to null.

// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );

// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...

Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference и otherReference оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.

18
задан Karsten S. 25 January 2012 в 19:35
поделиться

4 ответа

У меня нет проблемы с тестами Критика - по общему признанию я работаю в severity=3, по крайней мере частично потому что часть из того, с чем я должен работать, является унаследованным кодом, который у меня нет/time/для уборки, но мои паруса материала Американского лося через это.

3
ответ дан 30 November 2019 в 08:04
поделиться

Они оба могут быть настроены в деталь.

я понятия не имею, почему perltidy не хотел бы его, это не имеет никакого отношения к нему . Perltidy только управляет стилем. Можно изменить стиль кода, не изменяя функциональности, это - главным образом вопрос пробела действительно. Необходимо или изменить стиль или изменить perltidy конфигурацию с помощью .perltidyrc файла.

я не знаю, какие проблемы perlcritic имеет с ним (lvalue методы, возможно?), но Вы могли рассмотреть выключение тех определенных политик с помощью .perlcriticrc файла. Кроме того, если Ваш perlcritic стар, можно хотеть обновить его, поскольку некоторые старые версии дали некоторые неправильные ошибки в классах Американского лося.

6
ответ дан 30 November 2019 в 08:04
поделиться

Более ранние версии Perl:: "использование Критика, которое строгая" политика не знала, что Американский лось включил строгий для Вас, но это будет зафиксировано, если Вы обновите Perl:: Критик.

я использую оба Perl:: Критик и Perl:: Опрятный с Американским лосем, и я не вижу ничего особенно поврежденного. Ну, на самом деле я не могу получить Perl:: Опрятный к вещам расположения как это правильно:

my $apple = Apple->new({
    color => "red",
    type  => "delicious",
});

Опрятный настоит, что (и {два вводных уровня добавления отступа, и это просто посмотрит это глупое:

my $apple = Apple->new({
        color => "red",
        type  => "delicious",
});

, Но у нас была эта проблема прежде; конвенция кодирования в проекте состоит в том, чтобы использовать hashref, не хеш, для именованных параметров. Таким образом, это не действительно связанная с американским лосем проблема как таковая.

, Каковы точно Ваши признаки?

/J

6
ответ дан 30 November 2019 в 08:04
поделиться

Вы видели Perl :: Critic :: Moose ?

15
ответ дан 30 November 2019 в 08:04
поделиться
Другие вопросы по тегам:

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