1. Perl / Говнокод #4638

    −116

    1. 1
    map { push @{ $cgih->{add_result}->{errors} }, 'НЕ добавлено: ' . $_->{title} } @failed_comps;

    Видимо теперь использовать for это уже не по-пацански!

    Запостил: antonfin, 15 Ноября 2010

    Комментарии (13) RSS

    • пиши в одну строку @ будь плохим парнем
      PS: push внутри map - сильно.
      Ответить
    • Плюсую, хотя бы переводы строк поставил бы.
      Ответить
    • ну зачем нам for, если это перл!
      Ответить
    • а где собственно говнокод ?
      Ответить
      • В первом комментарии же написано: "push внутри map - сильно.".
        Данный код можно было написать так:

        push @{ $cgih->{add_result}->{errors} }, 'НЕ добавлено: ' . $_->{title} for @failed_comps;
        Ответить
        • или так (для того чтобы было понятно Arigato и прочим людям, которых в детстве покусал перловик-маньяк :))
          my $error_pool = $cgih->{add_result}->{errors};
          foreach my $comp (@failed_comps) {
             my $error_message = 'НЕ добавлено: ' . $comp->{title};
             push @$error_pool, $error_message;
          }
          Ответить
        • Или так:
          push @{ $cgih->{add_result}->{errors} }, map{  "НЕ добавлено:  $_->{title}" } @failed_comps
          Ответить
    • Ну кроме как варианта через foreach, мне кажется остальные способы, в принципе монопеснесуальны, читаемости сильно не прибавляют, единственное, что push вызывается один раз.
      Вариант krushi мне понравился
      push @{ $cgih->{add_result}->{errors} }, map{  "НЕ добавлено:  $_->{title}" } @failed_comps

      Но единственное непонятно , чем же так плох вариант push внутри map ?
      Ответить
      • потому что не читабельно.

        ванила синтакс мапа это `@output = map { conversion; } @input` на что как бы имя оператора очень сильно и намекает.
        Ответить
      • Абсолютно согласен с Dummy00001. Map используется как конвеер: взял список, перелопатил, передал дальше. Push внутри map нарушает эту идиому. Зачем использовать гаечный ключ для забивания гвоздей, если рядом лежит молоток?
        Ответить
    • perl сосёт у С++са
      Ответить

    Добавить комментарий