1. Лучший говнокод

    В номинации:
    За время:
  2. PHP / Говнокод #12233

    +50

    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
    public function getFilename($filename) {
            $string = ereg_replace("ж", "zh", $filename);
            $string = ereg_replace("ё","yo",$string);
            $string = ereg_replace("и", "i",$string);
            ......
    
            $string = ereg_replace("Т","T",$string);
            $string = ereg_replace("Б","B",$string);
            
            $string = ereg_replace(" ","_",$string);
            $filename = preg_replace("/[^\w\.\-_]/","",$string);
            
            return strtolower($filename);
        }

    UnnamedUser, 01 Декабря 2012

    Комментарии (5)
  3. 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)
  4. Си / Говнокод #12205

    +128

    1. 1
    "%s[@%s='%s']"

    Аццкий смайлик! Сборка запроса XPath для поиска элементов в XML DOM по значениям, переданным из другой функции.

    sprintf(str,"%s[@%s='%s']",elemPath,attrName,value);

    GoblinAlchemist, 27 Ноября 2012

    Комментарии (5)
  5. Python / Говнокод #12188

    −94

    1. 1
    $class = (preg_match("/^[0-9]+$/", $i/2)) ? "cssBgHex0F0F0F" : "cssBgHexAFAFAF";

    ПХП-коллега выдал: подсветка чётных номеров строк :)

    serpinski, 23 Ноября 2012

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

    +160

    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
    $('#info, #progress, #portfolio, #content1, #content2, #content3, #content4, #content5, #content6, #content7, #content8, #content9, #content10, #content11, #content12, #content13, #content14, #oneclick, #zoomer, #noback, #noinfo').fadeOut(0);
      $('#abouticon').toggle(function(){
    	  $('#pad, img[src*="line"]').fadeOut(500);
    	  $('#abouticon').css({'background' : '#dae2e6'});
    	  $('#info, #progress').delay(500).fadeIn(500);
    	  $('img[src*="iDrugov.png"]').fadeOut(500);
    	  //
    	  $('#portfolio').fadeOut(500);
    	  $('#icon3').css({'background' : '#83bdda'});
      }, function(){
    	  $('#pad, img[src*="line"]').delay(500).fadeIn(500);
    	  $('#abouticon').css({'background' : '#a3c7da'});
    	  $('#info, #progress').fadeOut(500);
    	  $('img[src*="iDrugov.png"]').delay(500).fadeIn(500);
      })

    Много хорошего, годного jQuery!

    nbspjr, 21 Ноября 2012

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

    +123

    1. 1
    2. 2
    var EditParameter = eval($('#droppable1').attr("data"));
    var parameter = eval($('#droppable1').attr("data1"));

    А Вам слабо ?!

    Vasiliy, 20 Ноября 2012

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

    +119

    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
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    public static Tuple<t1, t2,="" t3,="" t4,="" t5,="" t6,="" t7,="" tuple=""><t8>> Create<t1, t2,="" t3,="" t4,="" t5,="" t6,="" t7,="" t8="">(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8) {
                return new Tuple<t1, t2,="" t3,="" t4,="" t5,="" t6,="" t7,="" tuple=""><t8>>(item1, item2, item3, item4, item5, item6, item7, new Tuple<t8>(item8));
    
       Int32 IStructuralEquatable.GetHashCode(IEqualityComparer comparer) {
                // We want to have a limited hash in this case.  We'll use the last 8 elements of the tuple
                ITuple t = (ITuple) m_Rest;
                if(t.Size >= 8) { return t.GetHashCode(comparer); }
     
                // In this case, the rest memeber has less than 8 elements so we need to combine some our elements with the elements in rest
                int k = 8 - t.Size;
                switch(k) {
                    case 1:
                    return Tuple.CombineHashCodes(comparer.GetHashCode(m_Item7), t.GetHashCode(comparer));
                    case 2:
                    return Tuple.CombineHashCodes(comparer.GetHashCode(m_Item6), comparer.GetHashCode(m_Item7), t.GetHashCode(comparer));
                    case 3:
                    return Tuple.CombineHashCodes(comparer.GetHashCode(m_Item5), comparer.GetHashCode(m_Item6), comparer.GetHashCode(m_Item7), t.GetHashCode(comparer));
                    case 4:
                    return Tuple.CombineHashCodes(comparer.GetHashCode(m_Item4), comparer.GetHashCode(m_Item5), comparer.GetHashCode(m_Item6), comparer.GetHashCode(m_Item7), t.GetHashCode(comparer));
                    case 5:
                    return Tuple.CombineHashCodes(comparer.GetHashCode(m_Item3), comparer.GetHashCode(m_Item4), comparer.GetHashCode(m_Item5), comparer.GetHashCode(m_Item6), comparer.GetHashCode(m_Item7), t.GetHashCode(comparer));
                    case 6:
                    return Tuple.CombineHashCodes(comparer.GetHashCode(m_Item2), comparer.GetHashCode(m_Item3), comparer.GetHashCode(m_Item4), comparer.GetHashCode(m_Item5), comparer.GetHashCode(m_Item6), comparer.GetHashCode(m_Item7), t.GetHashCode(comparer));
                    case 7:
                    return Tuple.CombineHashCodes(comparer.GetHashCode(m_Item1), comparer.GetHashCode(m_Item2), comparer.GetHashCode(m_Item3), comparer.GetHashCode(m_Item4), comparer.GetHashCode(m_Item5), comparer.GetHashCode(m_Item6), comparer.GetHashCode(m_Item7), t.GetHashCode(comparer));
                }
                Contract.Assert(false, "Missed all cases for computing Tuple hash code");
                return -1;
            }
     
            Int32 ITuple.GetHashCode(IEqualityComparer comparer) {
                return ((IStructuralEquatable) this).GetHashCode(comparer);
            }
            public override string ToString() {
                StringBuilder sb = new StringBuilder();
                sb.Append("(");
                return ((ITuple)this).ToString(sb);
            }
     
            string ITuple.ToString(StringBuilder sb) {
                sb.Append(m_Item1);
                sb.Append(", ");
                sb.Append(m_Item2);
                sb.Append(", ");
                sb.Append(m_Item3);
                sb.Append(", ");
                sb.Append(m_Item4);
                sb.Append(", ");
                sb.Append(m_Item5);
                sb.Append(", ");
                sb.Append(m_Item6);
                sb.Append(", ");
                sb.Append(m_Item7);
                sb.Append(", ");
                return ((ITuple)m_Rest).ToString(sb);
            }

    Давно заприметил в C# кортежи. За них отвечаёт чудесный класс System.Tuple
    http://msdn.microsoft.com/en-us/library/system.tuple.aspx
    Вот стало интересно - как они там это дело реализовали, ведь постоянно вводит новые плюшки в язык.
    Посмотрел и ужаснулся - решили "в лоб" и кортежи обошлись в 1000 строк.
    http://reflector.webtropy.com/default.aspx/4@0/4@0/untmp/DEVDIV_TFS/Dev10/Releases/RTMRel/ndp/clr/src/BCL/System/Tuple@cs/1305376/Tuple@cs

    Хотел запостить в #12129. Но он утонул.

    3.14159265, 19 Ноября 2012

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

    +24

    1. 1
    QString("a=%1 b=%2").arg("[%1]").arg("Shit happens")

    Вы думаете, что результат будет "a=[%1] b=Shit happens"?
    Как бы не так! "a=[Shit happens] b=%2".

    Причем эта "фича" вполне документирована. Но документирована она не в самом первом описании arg'а, а только в arg(const QString &a1, const QString &a2), в доку по которому я естественно никогда не заглядывал...

    UPD: правильным вариантом будет QString("a=%1 b=%2").arg("[%1]", "Shit happens"), но тогда мы лишаемся поддержки форматирования, да и таким образом можно засунуть максимум 10 аргументов.

    bormand, 13 Ноября 2012

    Комментарии (5)
  10. Ruby / Говнокод #12087

    −109

    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
    #Кусок красивого кода контроллера сайта на Ruby On Rails
    class QuestionsController < ApplicationController
    
      #Извлекаем отвеченные вопросы методом говнокода
      def answered
          @subtitle = "Отвеченные"
          #Нам нужны все-все-все вопросы и даже не отвеченные. Скрестим пальцы на случай если их будет много
          @questions = Question.all
          #Обязательно преобразуем все в массив, сделаем N+1 запрос и успешно отфильтруем вопросы без ответа
          @questions.to_a.delete_if { |q| q.answer.nil? }
          #Чуть не забыл, нам же нужно извлечь 10 вопросов для 2-й страницы, а не все что есть
          paginate(@questions)
          #PROFIT
          render "index"
      end
    
    end

    Ну в общем, код хорошо прокоментирован, думаю все и так ясно. =)

    SunnyMagadan, 09 Ноября 2012

    Комментарии (5)
  11. 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)