• Mojolicious Perl Style

      Хочу описать стиль программирования на языке Perl, к которому я стремлюсь и который в основном перенял от современного web-фреймворка Mojolicious, но наверное много где еще применяется подобный. Мне кажется выработать правильный стиль кодинга — очень важно.

      Пример 1:
      Методы в одну строку.
      Если обращение к каждому аргументу функции происходит лишь один раз, и порядок применения их в коде соответствует порядку переданных аргументов, то предлагается извлекать их с помощью стандартной функции shift, которая если вызывается без аргументов, по-умолчанию работает с массивом @_, в котором хранятся все переданные аргументы функции, выталкивает первый аргумент из массива и возвращает его.
      sub node { shift->tree->[0] }
      #
      sub parse { shift->_delegate(parse => shift) }
      #
      sub _tag { shift->new->tree(shift)->xml(shift) }
      

      Пример 2:
      Сначала извлекаем первый параметр, имя класса например, все остальные аргументы передаем другой функции и пусть она их обрабатывает.
      sub tree { shift->_delegate(tree => @_) } 
      # т.е. может превратиться в это _delegate(tree => [], deep => 5) или это _delegate(tree => [], 5, 0) 
      sub log { shift->emit('message', lc shift, @_) }
      

      Пример 3:
      Тоже для метода в одну строчку.
      Здесь происходит обращение к одному и тому же аргументу целых 3 раза, потому для доступа к аргументу используется прямое обращение к элементу массива аргументов $_[0].
      sub _instance { ref $_[0] ? $_[0] : $_[0]->singleton }
      #
      sub find { $_[0]->_collect(@{$_[0]->_css->select($_[1])}) }
      

      Читать дальше →