1. Список говнокодов пользователя Elvenfighter

    Всего: 97

  2. C++ / Говнокод #24602

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    Чего такого умеют кресты, что не умеет Си?
    
    Шаблоны - никто не пользует.
    
    Перегрузка операторов - вообще дурь какая-то: не понятно чего ожидать от полюса или минуса.
    
    Очевидный ответ - объекты , а так уж они нужны? Ну вот есть объект - библиотека работы с сокетами. Создал экземпляр, заполнил поля с адресом и портом, выполнил метод connect. Попользовался, освободил память. И чем оно лучше, чем если бы я запилил структуру и набор функций для работы с ней?
    
    За скобки вынесем области применения, где преимущества объектного подхода очевидны: игры, ГУЙ и прочее. Поговорим об остальном.

    Псто не мое.
    Заходите на "огонек": https://www.linux.org.ru/forum/development/14396202

    Elvenfighter, 08 Августа 2018

    Комментарии (45)
  3. SQL / Говнокод #24243

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    select
      x1.airport, x1.amount, x1.exempt
    from
      Taxes x1
    where
      x1.code = 'departure'
      and x1.airport in (
        select
          xx1.airport
        from
          (select
            yx1.airport
          from
            Taxes yx1
          where
            yx1.airport = x1.airport
            and yx1.code = x1.code
          group by
            yx1.airport, yx1.amount, yx1.exempt
          ) xx1
        group by xx1.airport
        having count(xx1.airport) > 1
      )
    ;

    Давно я не копался в SQL. Вот что нагородил :(

    Суть такова: у аэропортов есть departure tax, который может быть разный в зависимости от некоторых критериев (нерелевантно каких).
    А может быть и одинаковый. Но все равно аэропорт может иметь несколько рядков в БД (с одинаковым amount). А еще может быть exempt = 'X',
    что тождественно amount = 0.

    Задача: выбрать все рядки с departure tax для аэропортов у которых taxamt/exempt разный в зависимости от некоторых других критериев.

    Elvenfighter, 10 Мая 2018

    Комментарии (11)
  4. C++ / Говнокод #24199

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    struct Bar {};
    
    class Foo {
    public:
        Bar& bar() const { return *bp; }
    
    private:
        Bar b;
        Bar * const bp = &b;
    };

    https://wandbox.org/permlink/7JPzrvslrUwbvREb

    Как называется данный говнопаттерн?

    Elvenfighter, 27 Апреля 2018

    Комментарии (5)
  5. C++ / Говнокод #24083

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    try
    {
      // ... code ...
    }
    catch (ErrorResponseException& ex) { throw; }

    Documenting-with-code?

    Elvenfighter, 06 Апреля 2018

    Комментарии (8)
  6. C++ / Говнокод #23979

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    // OK
    class foo {};
    void foo();
    
    // не ОК: error: 'void bar()' redeclared as different kind of symbol
    namespace bar {}
    void bar();

    "Двойные стандарты"

    Elvenfighter, 22 Марта 2018

    Комментарии (5)
  7. C++ / Говнокод #23872

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    bool MyClass::operator==(int elem){
        if (list.isExist(elem)){
            list.remove(elem);
            return true; // Операция завершена успешно
        }
        return false; // Элемент elem не найден в списке
    }

    (C) https://www.linux.org.ru/forum/development/14063699?cid=14063991

    Вырвано из контекста (треда), но считаю данная кучка должна лежать здесь.

    Elvenfighter, 05 Марта 2018

    Комментарии (6)
  8. C++ / Говнокод #23835

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    class PriceCache {
    public:
      FlightStorage(const std::size_t count) {
        for (std::size_t i = 0; i < count; ++i) {
          flights.emplace_back(FlightCache::get(i));
          prices.emplace_back(&flights.back(), Price::getFor(flights.back()));
        }
      }
    
    private:
      std::vector<Flight> flights;
      std::vector<const Flight *, double> prices;
    };

    "случайные сегфолты при обращении к PriceCache::prices"

    Elvenfighter, 28 Февраля 2018

    Комментарии (6)
  9. Perl / Говнокод #23788

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    #!/usr/bin/env perl
    
    use strict;
    use warnings;
    use utf8;
    use diagnostics;
    
    use LWP;
    use LWP::UserAgent;
    use HTTP::Request;
    use HTTP::Response;
    use JSON;
    use HTML::TreeBuilder;
    use HTML::FormatText;
    
    my $ua = LWP::UserAgent->new();
    $ua->agent('advice/0.9');
    
    my $uri = 'http://fucking-great-advice.ru/api/random';
    
    my $request = HTTP::Request->new('GET', $uri);
    my $response = $ua->request($request);
    my $content = from_json($response->content(), {utf8 => 1});
    
    binmode(STDOUT, ':utf8');
    my $tree = HTML::TreeBuilder->new->parse_content($content->{'text'});
    
    my $formatter = HTML::FormatText->new(leftmargin => 0, rightmargin => 50);
    print $formatter->format($tree);

    Пользуйтесь на здоровье

    Elvenfighter, 14 Февраля 2018

    Комментарии (11)
  10. Perl / Говнокод #23358

    +3

    1. 1
    print for <>

    Базовая функциональность программы cat на perl. Кто короче?
    (только возможности самого языка без exec и подобных, шеллы вне олимпиады)

    Elvenfighter, 24 Сентября 2017

    Комментарии (34)
  11. C++ / Говнокод #23352

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    bool valueToString(std::string_view str, float& value) try {
        const auto end = std::numeric_limits<std::size_t>::max();
        const float parsed = std::stof(str.data(), &end);
        if (end != str.size())
            return false;
        value = parsed;
        return true;
    } catch (...) {
        return false;
    }

    string_view пирформанс! Спойлер: да, там std::stof

    Elvenfighter, 22 Сентября 2017

    Комментарии (7)