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

    Всего: 116

  2. Perl / Говнокод #12343

    −88

    1. 1
    2. 2
    3. 3
    % if ($ARGS{standalone_bhv}) {} else {
    %# Что-то делаем
    % }

    Mason. Автор явно знает толк..

    Elvenfighter, 24 Декабря 2012

    Комментарии (27)
  3. JavaScript / Говнокод #12251

    +160

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    for(var i = 0, l = requestParams.length; i < l; i++) {
        var param_pair = requestParams[i];
    
        key = encodeURIComponent(param_pair[0]);
        val = param_pair[1];
        if ( val && val.constructor.toString().match(/array/i) ) {
            val = val.join('+');
        }
        // ...
    }

    Кусочек велосипеда, который заменяет функционал jQuery.ajax

    Если вдруг наш параметр оказался массивом ... ну что ж еще с ним сделать кроме как соединить через "+". Обратите внимание на саму проверку.

    Elvenfighter, 05 Декабря 2012

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

    +6

    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
    template <typename T, size_t rows, size_t cols>
    class Matrix {
    public:
        Matrix() :
            m_matrix(reinterpret_cast<T*>(new char[sizeof(T) * rows * cols]))
        {
            memset(m_matrix, 0, sizeof(T) * rows * cols);
            new (m_matrix) T[rows * cols];
    
            if ( rows == cols ) {
                for ( size_t i = 0; i < rows; i++ )
                    m_matrix[i * cols + i] = 1; // FIXME: this is hack
            }
    
        }
    
        // ...
    private:
        T *m_matrix;
    };

    Из прошлого куска.

    Инициализируем память нулями. А вдруг тип скалярный? :)

    Elvenfighter, 01 Декабря 2012

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

    +10

    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
    30. 30
    template <typename T, size_t rows, size_t cols>
    class Matrix {
    public:
        Matrix() :
            m_matrix(new T[rows * cols])
        {
            // Make identity matrix, if possible
            if ( rows == cols ) {
                for ( size_t i = 0; i < rows; i++ )
                    m_matrix[i * cols + i] = 1; // FIXME: this is hack
            }
    
        }
    
        // ...
    
        Matrix<T, rows, cols>& operator =(Matrix<T, rows, cols> &&other) {
            if ( this != &other ) {
                delete [] m_matrix;
                m_matrix = other.m_matrix;
    
                other.m_matrix = new T[cols * rows];
                other = static_cast<const Matrix&>(Matrix());
            }
    
            return *this;
        }
    
        // ...
    };

    Издержки move construtor :)

    Прошу внимания к строчкам 19-23

    Elvenfighter, 30 Ноября 2012

    Комментарии (5)
  6. bash / Говнокод #12207

    −124

    1. 1
    2. 2
    3. 3
    4. 4
    #!/bin/sh
    
    for last ; do true ; done
    echo "last argument: $last"

    And you can't explain that.

    Оригинал: http://stackoverflow.com/questions/1853946/getting-the-last-argument-passed-to-a-shell-script

    Elvenfighter, 27 Ноября 2012

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

    −86

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    sub change_credit_limit {
        my ($self, $new_limit) = @_;
    
        return 0 if ( !validate_credit_limit($new_limit) );
    
        my $credit_limit = $self->get_credit_limit();
        if ( sprintf('%.5f', $new_limit) eq sprintf('%.5f', $credit_limit) ) {
            return 1;
        }
    
        return $self->update({ 'credit_limit' => $new_limit });
    }

    Оптимизация, такая оптимизация. Не совсем говнокод, но подход оригинален :)

    P.S. Немного поменял оригинальные имена

    Elvenfighter, 14 Ноября 2012

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

    −166

    1. 1
    2. 2
    3. 3
    4. 4
    for ( my $i = 0 ; $i < $pmcount ; $i ++ ) { 
        $_ = $array_ref->[$i]; 
        # workin' hard
    }

    if ( $perl eq 'C' ) { print "govnokod повсеместно" }

    Elvenfighter, 06 Ноября 2012

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

    −148

    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
    #!/usr/bin/perl
    
    use strict;
    use warnings;
    use Data::Dumper;
    
    sub get0 { print("get0\n"); return 0; }
    sub get2 { print("get2\n"); return 2; }
    
    my ($a, $b) = (1, 1);
    $a ? $b = get0() : $b = get2();
    
    print Dumper({
        'a' => $a,
        'b' => $b,
    });

    Результат несколько обескураживает :)
    http://ideone.com/V60Y1L

    Elvenfighter, 27 Октября 2012

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

    −108

    1. 1
    push @sqls, defined($result->{sql}) ? $result->{sql} : return;

    Не знаю, что тут написать. Сегодня это встретил в коде.

    Elvenfighter, 13 Сентября 2012

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

    +31

    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
    #include <iostream>
    using namespace std;
    
    struct RefStruct {
        RefStruct(int &ref) :
            m_ref(ref)
        {}
        
        int getRefValue() const {
            return m_ref;
        }
    
    private:
        int &m_ref;
    };
    
    int main(int argc, char *argv[]) {
        int a = 0xa;
        int b = 0xb;
    
        RefStruct s(a);
        RefStruct *p = &s;
        
        *(reinterpret_cast<int **>(p)) = &b;
        
        cout << "RefValue: " << hex << s.getRefValue() << endl;
    
        return 0;
    }

    С другом разговаривали - как бы получить указатель на ссылку.

    Как вы думаете, что будет на выхлопе?

    Elvenfighter, 15 Июля 2012

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