Вложенные стрелки разыменования в Perl: пропускать или не пропускать?

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

my $hash_ref = { 1 => [ 11, 12, 13 ], 3 => [31, 32] };

my $elem1 = $hash_ref->{1}->[1]; 
my $elem2 = $hash_ref->{1}[1]; # exactly the same as above

Теперь мой вопросесть ли веская причина выбрать один стиль над другим?

Кажется, это популярная кость стилистического раздора (просто на SO я случайно наткнулся наэтот а такжеэтот в течение 5 минут).

Пока что почти никто из обычных подозреваемых не говорит ничего определенного:

perldoc просто говорит: «Вы можете опустить стрелку разыменования указателя».В «Perl Best Practices» Конвея говорится «когда это возможно, разыменование стрелками», но, похоже, это применимо только к контексту разыменования главной ссылки, а не необязательных стрелок на 2-м уровне вложенных структур данных.

Автор книги «Освоение Perl для биоинформатики» Джеймс Тисдалл также не дает особого предпочтения:

«Сообразительный читатель, возможно, заметил, что мы, похоже, опускаем операторы стрелок между индексами массива. (В конце концов, это анонимные массивы анонимных массивов анонимных массивов и т. Д., Поэтому их не следует писать [$ array- > [$ i] -> [$ j] -> [$ k]?) Perl позволяет это: требуется только оператор стрелки между именем переменной и подстрочным индексом первого массива. Это облегчает жизнь и помогает избежать запястья туннельный синдром. С другой стороны, вы можете предпочесть держать стрелки разыменования на месте, чтобы было ясно, что вы имеете дело со ссылками. Ваш выбор. "

ОБНОВЛЕНО «Промежуточный Perl», по словам его соавтора Брайана Д. Фоя, рекомендует не использовать стрелки. Смотрите полный ответ Брайана ниже.

Лично я на стороне «всегда вставлять стрелки, так как они более читабельны и очевидны, они имеют дело со ссылкой».

ОБНОВИТЬ Чтобы быть более точным с точки зрения читабельности, в случае выражения с несколькими вложениями, где сами индексы являются выражениями, стрелки помогают визуально маркировать выражения, более явно отделяя индексы друг от друга.

Ответы на вопрос(3)

Ваш ответ на вопрос