[Moscow.pm] refactoring

Vladimir Timofeev vovkasm на gmail.com
Чт Окт 15 01:58:36 PDT 2015


Гм...

push @person_row, $person->get_father_id, $person->get_mother_id,
$person->get_email, $person->get_homepage;

my $date = $person->get_display_date_of_birth;

package Person;

sub get_father_id {
  my $self = shift;
  if (my $self->get_father) {
    return $self->get_father->get_id;
  }
  return;
}

... и  т.д.

Это раз.

Можно пойти дальше и объединить построение @person_row в  один метод:

  push @person_row, $person->get_person_fields

Хотя использование массива здесь выглядит очень подозрительно, но это
уже к вопросу не относится.

С датами, помимо выноса в отдельный метод кода форматирования, можно
потом вынести код форматирования в класс даты. Потом можно переписать
код форматирования даты, так, чтоб работал корректно во всех случаях.
А то сейчас можно сделать "3/" к примеру (задан только месяц).




2015-10-15 5:43 GMT+03:00 Nikolay Mishin <mi на ya.ru>:
> Hi Moscow.PM!
>
> Существует ли какой-либо сбособ сделать более читаемым такой код?:
>
>     push @person_row, (defined $person->get_father()) ? $person->get_father()->get_id() : undef;
>     push @person_row, (defined $person->get_mother()) ? $person->get_mother()->get_id() : undef;
>     push @person_row, ($person->get_email(), $person->get_homepage());
>
>     my $date = "";
>     if(defined $person->get_date_of_birth()) {
>       my $date_of_birth = $person->get_date_of_birth();
>       $date .= defined $date_of_birth->day ? $date_of_birth->day."/" : "";
>       $date .= defined $date_of_birth->month ? $date_of_birth->month."/" : "";
>       $date .= defined $date_of_birth->year ? $date_of_birth->year : "";
>     }
>
> источник https://github.com/mishin/Ftree-cpan/blob/master/lib/Ftree/Exporters/ExcelExporter.pm#L53
>
> --
> С уважением
> Николай Мишин
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org



-- 
Vladimir Timofeev <vovkasm на gmail.com>


Подробная информация о списке рассылки Moscow-pm