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

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

    −203

    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
    // Тут начинается сильнейший программинг - формирование GET запроса на основе уже существующего, курите.
    
      private function getFilterURLParams($filter = 0, $option_id, $value_id, $variable = '') {
        // При изменении этих параметров, нужно будет поменять соответсвенно их в других файлах. Менять их не советую.
    
        $sep_par = ';'; // разделитель пар опций -> значений: opt1=val1,val2,val3;opt2=val1,val2,val3 ...
        $sep_opt = '='; // разделитель внутри пары опция -> значения: opt1=val1,val2,val3 ...
        $sep_val = ','; // разделитель для параметров опции: val1,val2,val3 ...
    
          if ($filter) {
    
          $matches = explode($sep_par, $filter);
    
          $options = array();
          $values = array();
          $parts = array();
    
         foreach ($matches as $option) {
            $data = explode($sep_opt, $option);
            $parts[] = $option;
            $options[] = $data[0];
            $values[] = explode($sep_val, $data[1]);
          }
    
          if (in_array($option_id, $options)) { // если эта опция уже есть в запросе, то мы не добавляем её
    
            $key = array_keys($options, $option_id); // вычисляем ключ массива для дальнейшей работы с именно этой опцией
    
            if (in_array($value_id, $values[$key[0]])) { // если это значение уже есть в запросе
              if (count($values[$key[0]]) == 1) { // и если оно единственное
                if (count($matches) == 1) { // еще и с единственной опцией, то удаляем из запроса весь фильтр
                  $out = '';
                } else { // если опция не одна, удаляем только эту опцию с её параметром
                  $out = '&' . $variable . '=' . str_replace((array_search($parts[$key[0]], $parts) ? $sep_par . $parts[$key[0]] : $parts[$key[0]] . $sep_par), '', $filter);
                }
              } else { // если значений несколько, удаляем это значение, оставляя другие с опцией
                $out = '&' . $variable . '=' . str_replace($parts[$key[0]], $options[$key[0]] . $sep_opt . str_replace((array_search($value_id, $values[$key[0]]) ? $sep_val . $value_id : $value_id . $sep_val), '', implode($sep_val, $values[$key[0]])), $filter);
              }
            } else { // если значения нет в запросе, то добавляем его к значениям этой опции
              $out = '&' . $variable . '=' . str_replace($parts[$key[0]], $options[$key[0]] . $sep_opt . $value_id, $filter);
            }
          } else { // если этой опции нет в запросе
            $out = '&' . $variable . '=' . $filter . $sep_par . $option_id . $sep_opt . $value_id;
          }
        } else { // если в запросе вообще нет переменной filter
          $out = '&' . $variable . '=' . $option_id . $sep_opt . $value_id;
        }
    
        return $out; // фух.
      }

    я после этого долго и нервно курил. чувствовал себя отбросом, а не программистом

    Snickers, 25 Сентября 2012

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

    +168

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    function confirmDialog(sMessage) {
        if (confirm(sMessage)) {
            return true;
        } else {
            return false;
        }
    }

    Lokich, 19 Сентября 2012

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

    +140

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    private void SendFile(string root, string url, DateTime dateTimeBegin)
    {
    	if ( ... isSend ... )
    	{
    		...MoveToArchive();
    		...Dispose();
    	}
    	else
    	{
    		SendFile(root, url, dateTimeBegin);
    	}
    }

    Ну тут всё ясно...
    Если файлики отсылаются нормально, то всё работает хорошо.
    Зато если файлики не отсылаются, то начинается злая рекурсия, которая постепенно сжирает всю память :).

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

    Комментарии (12)
  5. Си / Говнокод #11710

    +116

    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
    #define KRATNOST6_STEPE32_(VAL) \ 
      (                            \ 
      (\ 
      (VAL/32*32)+(((VAL/32)^1)*(\ 
        (VAL/16*16)+(((VAL/16)^1)*(\ 
          (VAL/8*8)+(((VAL/8)^1)*(\ 
            (VAL/4*4)+(((VAL/4)^1)*(\ 
              (VAL/2*2)\ 
            ))\ 
          ))\ 
        ))\ 
      ))\ 
      )\ 
      +\ 
      ((\ 
      (VAL/32)+(((VAL/32)^1)*(\ 
        (VAL/16)+(((VAL/16)^1)*(\ 
          (VAL/8)+(((VAL/8)^1)*(\ 
            (VAL/4)+(((VAL/4)^1)*(\ 
              (VAL/2)\ 
            ))\ 
          ))\ 
        ))\ 
      ))\ 
      )^1)*32\ 
      ) 
    #define KRATNOST6_STEPE32(MAX_STEPEN6,VAL) KRATNOST6_STEPE32_(((int)VAL&((1<<(MAX_STEPEN6+1))-1)))

    Вычисление ближайшей кратности к степ 2 в препроцессоре, такую байду сорудил. (не знаю правильно ли выразился)
    Тут максимальная 32. Если есть выше то вот тут выставляется 32 всёравно.

    Проще не варик?

    TarasB, 05 Сентября 2012

    Комментарии (12)
  6. PHP / Говнокод #11646

    +62

    1. 1
    2. 2
    3. 3
    4. 4
    $date = substr($row[date], 0, 16);
    $dat1 = explode(" ", $date);
    $dat = explode("-", $dat1[0]);
    $date = "$dat[2]/$dat[1]/$dat[0]";

    Изящно

    kindofbear, 24 Августа 2012

    Комментарии (12)
  7. Куча / Говнокод #11633

    +115

    1. 1
    2. 2
    3. 3
    4. 4
    -- Настало время запостить самое главное гавно Хаскеля:
    -- http://www.johndcook.com/blog/2010/05/18/pure-functions-have-side-effects/
    -- У чистых функций всегда есть side-effects, которые выражаются в пожирании памяти и CPU. 
    -- Очевидно конечно, но почему об этом не орут на первой странице каждой книги по функциональному программированию?

    Я проверил, код компилируется:
    http://ideone.com/sozuV

    HaskellGovno, 23 Августа 2012

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

    +20

    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
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    class NetGetPlmnListReply: public Message {
                    public:
                        virtual uint8_t command() const;
                        virtual uint8_t subcommand() const;
                        virtual RequestType requestType() const;
                        virtual bool deliver(IUnsolicitedReceiver *receiver);
    
                        static inline bool isTypeOf(Message *message) {
                            return message->command() == 8 && message->subcommand() == 4;
                        }
    
    
    
    std::string inspect() const;
    bool writeToStream(DataStream &stream);
    bool readFromStream(DataStream &stream);
    
    
    
            inline uint8_t count() const { return m_count; }
            inline void setCount(uint8_t count) { m_count = count; }
    
    
    
    
                class PlmnListItem {
                public:
    
    
    std::string inspect() const;
    bool writeToStream(DataStream &stream);
    bool readFromStream(DataStream &stream);
    
    
    
            enum Status {
    
                    Available = 2,
    
                    Current = 3,
    
                    Forbidden = 4,
    
            };
    
            inline Status status() const { return (Status) m_status; }
            inline void setStatus(Status status) { m_status = (uint8_t) status; }
    
    
    
    
    
            inline const std::vector<unsigned char> &plmn() const { return m_plmn; }
            inline void setPlmn(const std::vector<unsigned char> &plmn) { m_plmn = plmn; }
    
    
    private:
    
    
            uint8_t m_status;
    
    
    
            std::vector<unsigned char> m_plmn;
    
    
    
                };
    
    
            inline const std::vector<PlmnListItem> &plmnList() const { return m_plmnList; }
            inline void setPlmnList(const std::vector<PlmnListItem> &plmnList) { m_plmnList = plmnList; }
    
    
    
    private:
    
    
            uint8_t m_count;
    
    
    
            std::vector<PlmnListItem> m_plmnList;
    
    
    
                    };

    Один из тысячи сгенерированных классов.

    Grindars, 18 Августа 2012

    Комментарии (12)
  9. 1C / Говнокод #11558

    −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
    Перем СтрокаСрокДействия;
    
    Функция СтрокаСрокДействия()     
    
                Если ТекущийЭлемент().ФлагБессрочного = 1 Тогда
                      Если ПустоеЗначение(ТекущийЭлемент().СрокДействия.Получить(РабочаяДата())) = 1 Тогда
                            СтрокаСрокДействия = "от "+ ТекущийЭлемент().ДатаДоговора+" до ";
                      Иначе
                            СтрокаСрокДействия = "от "+ ТекущийЭлемент().ДатаДоговора+" до "+ТекущийЭлемент().СрокДействия.Получить(РабочаяДата());
                      КонецЕсли;
                ИначеЕсли ТекущийЭлемент().ФлагБессрочного = 2 Тогда
                      СтрокаСрокДействия = "бессрочно"; 
                ИначеЕсли ТекущийЭлемент().ФлагБессрочного = 3 Тогда
                      СтрокаСрокДействия = "пролонгируемый";
                КонецЕсли;     
    
          Возврат(СтрокаСрокДействия);           
    
    КонецФункции

    1C 7.7 Такая расчудесная функция была в модуле формы списка справочника. Функция была назначена на текстовое поле формы списка... И таким образом при пролистывании формы списка, в поле "Срок действия" непонятным образом попадали абсолютно левые значения, но зато в каждой из строк было одно и то же до следующего пролистывания...

    ok0504, 09 Августа 2012

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

    +131

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    if (Cache[articlesRssData] != null)
    {
         return Cache[articlesRssData] as ArticleRssData?;
    }
    
    return null;

    uusb, 08 Августа 2012

    Комментарии (12)
  11. PHP / Говнокод #11507

    +64

    1. 1
    2. 2
    3. 3
    $is_root = ($node_id == 0) ? 'yes' : ''; 
    //и потом..
    if (!is_null($name_node) && $is_root != 'yes') {

    Есть у меня падаван-джуниор, девушка. Есть вот в коде перлы типа такого.
    булеан, не не слышал =\ И не понятно почему yes и пустая строка, пусть бы было уже yes и no.. Женская логика?

    vitaly, 31 Июля 2012

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