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

    Всего: 108

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

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    struct Data { /* ... */ };
    
    class Items {
      void insert(Data&& data) {
        _storage.emplace_back(std::forward<Data>(data));
      }
    private:
      std::vector<Data> _storage;
    };

    Dumb luck. Nuff said.

    Elvenfighter, 08 Февраля 2019

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

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    struct ApplyFunctor {
      template <typename Rules, typename ... Args>
      bool operator()(const Rules &rules, Args && ... args) const {
        for (const auto &rule : rules) {
          if (!rule.apply(std::forward<Args>(args)...))
            return false;
        }
    
        return true;
      }
    };

    Perfect forwarding, сцуко, такой perfect. Но все же не заменяет мозг.

    Elvenfighter, 04 Января 2019

    Комментарии (29)
  4. PHP / Говнокод #24936

    0

    1. 1
    Грядет конец PHP

    В общем вот:

    https://www.linux.org.ru/forum/talks/14542930

    Компания Rogue Wave, финансовая основа разработки PHP, решила забить на развитие PHP, сосредоточившись на одном конкретном продукте на его основе - Zend Server. Два года назад из нее ушел первый сооснователь Zend. Теперь же... Ядро команды, включая второго сооснователя Zend, уходит из компании. Они заранее написали в своих бложиках обращение с просьбой взять их под свое крыло для разработки ядра PHP 8.

    Как-то это мрачновато звучит. Похоже, похапэ-капец настал.

    Подробности по-русски на Хабре: https://habr.com/post/426809/

    Elvenfighter, 18 Октября 2018

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

    +3

    1. 1
    [ '\uD83D\uDC14', '\uD83E\uDD5A' ].sort()

    Unicode порешал

    https://twitter.com/aBagorn/status/1051286652663025664

    Оригинал не влез, ибо:
    Application was halted by an exception.
    Debug-mode is off.

    Elvenfighter, 17 Октября 2018

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

    −1

    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
    #include <new>
    
    template <typename Lhs, typename Rhs>
    auto replace(Lhs *lhs, Rhs) {
      return *new (reinterpret_cast<void*>(lhs)) Rhs{};
    }
    
    int main() {
      auto f1 = &add;
      auto f2 = replace(add, [](int a, int b) { return a - b; });
    
      f1(4, 2);
      f2(4, 2);
    }

    Компилируется, не падает при запуске.

    Elvenfighter, 16 Октября 2018

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

    +1

    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
    std::size_t fib(const std::size_t index) {
      if (index < 3)
        return !!index;
    
      std::size_t  f2 = 1; // f(n - 2)
      std::size_t  f1 = 1; // f(n - 1)
      std::size_t result = 0;
      for (std::size_t i = 2; i < index; ++i)
      {
        result = f1 + f2;
        f1 = f2;
        f2 = result;
      }
    
      return result;
    }

    Что Clang вытворяет с несчастной функцией Фибоначчи?
    https://godbolt.org/z/2SFUm0

    Elvenfighter, 10 Октября 2018

    Комментарии (21)
  8. Perl / Говнокод #24884

    +1

    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
    #! /usr/bin/perl
    
    use strict;
    use warnings;
    
    my %h1 = (one => 1, two => 2);
    my %h2 = (three =>3 , four => 4);
    
    sub h_uno { \%h1 }
    
    sub h_multi {
        my %all = (%h1, %h2);
    
        \%all;
    }
    
    while (my ($k, $v) = each %{h_uno()}) {
        print "k=$k, v=$v\n";
    }
    
    # следующий цикл не завершится никогда
    #while (my ($k, $v) = each %{h_multi()}) {
    #    print "k=$k, $v=$v\n";
    #}

    Один из традиционных подколов собеседований на Perl вакансию.

    https://www.linux.org.ru/forum/job/14518840

    Elvenfighter, 09 Октября 2018

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

    −9

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    BOOL ShaderElement::equal(ShaderElement* S)
    {
        if (nullptr == S && nullptr == this)
            return TRUE;
        if (nullptr == S || nullptr == this)
            return FALSE;
        return equal(*S);
    }

    https://www.linux.org.ru/forum/development/14512625

    Elvenfighter, 05 Октября 2018

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

    +2

    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
    struct A { 
      virtual int transmogrify();
    };
     
    struct B : A {
      int transmogrify() override { new(this) A; return 2; }
    };
     
    int A::transmogrify() { new(this) B; return 1; }
     
    static_assert(sizeof(B) == sizeof(A));
    
    int main() {
      A i;
      int n = i.transmogrify();
      // int m = i.transmogrify(); // undefined behavior
      int m = std::launder(&i)->transmogrify(); // OK
      assert(m + n == 3);
    }

    Yo dawg, we heard you like kostyli, so we put our kostyli into your kostyli, so that you can use kostyli to support our kostyli!

    https://en.cppreference.com/w/cpp/utility/launder

    А если серьезно, мне еще не удалось соорудить пример, чтоб код с std::launder и без него работали по разному.

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

    Комментарии (19)
  11. Си / Говнокод #24736

    +1

    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
    /* Get LDAC handle */
    LDACBT_API HANDLE_LDAC_BT ldacBT_get_handle( void )
    
    /* Free LDAC handle */
    LDACBT_API void ldacBT_free_handle( HANDLE_LDAC_BT hLdacBT )
    
    /* Close LDAC handle */
    LDACBT_API void ldacBT_close_handle( HANDLE_LDAC_BT hLdacBT )
    
    /* Get ERROR CODE */
    LDACBT_API int ldacBT_get_error_code( HANDLE_LDAC_BT hLdacBT )
    
    /* Get Configured Sampling frequency */
    LDACBT_API int ldacBT_get_sampling_freq( HANDLE_LDAC_BT hLdacBT )

    СОНЭ умеет в комментарии.

    https://android.googlesource.com/platform/external/libldac/+/master/src/ldacBT_api.c

    Elvenfighter, 09 Сентября 2018

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