1. Python / Говнокод #12191

    −100

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    size = 3
    lines = ["___", "bcd", "___"]
    board = [[None]*size]*size
    for x in range(0, size):
      for y in range(0, size):
        if lines[x][y] != '_':
          board[x][y] = lines[x][y]
    print(board)

    я бы, очевидно, хотел видеть результат:
    [[None, None, None], ['b', 'c', 'd'], [None, None, None]]
    но питоша выводит:
    [['b', 'c', 'd'], ['b', 'c', 'd'], ['b', 'c', 'd']]

    serpinski, 24 Ноября 2012

    Комментарии (26)
  2. Си / Говнокод #12190

    +133

    1. 1
    2. 2
    3. 3
    #include <math.h>
     ...
    result = (thisCos ? cos : sin)(3.140);

    Коллега занимается инновациями в Сколково, так они там изобрели операцию NOT на континууме.

    serpinski, 24 Ноября 2012

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

    +161

    1. 1
    2. 2
    3. 3
    function toInt(number) {
        return number && + number | 0 || 0;
    }

    http://ideone.com/igo7ag

    Минут 10 назад меня ошарашили фразой о методе toInt(), который, якобы, есть в javascript. Гугл выдал всего одну ссылочку, в которой говорится о нем: http://javascript.ru/forum/misc/22100-funkciya-toint-razyasnite-pozhalujjsta-neskolko-momentov.html. Увидев данный код, я просто не мог не выложить его сюда.

    bormand, 23 Ноября 2012

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

    −94

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

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

    serpinski, 23 Ноября 2012

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

    +77

    1. 1
    delete[] Memory, leak; //Унарные операторы, такие уринарные.

    Былинный отказ.

    igumnovf, 23 Ноября 2012

    Комментарии (1)
  6. Pascal / Говнокод #12185

    +67

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    function IntToHex(N: integer): string;
    const
      S = '0123456789ABCDEF';
    var
      i: integer;
    begin
      SetLength(Result, 8);
      for i := 0 to 7 do Result[8 - i] := S[N shr (i shl 2) and $0F + 1];
    end;

    Носки менял, ноги мыл, все равно воняет хаккирством.

    И оно почему-то в модуле WinAPI.pas у Тараса лежит о_О

    PascalGovno, 23 Ноября 2012

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

    +105

    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
    protected override void WndProc(ref Message m)
                {
                    base.WndProc(ref m);
    
                    //All mouse messages have to be passed to the Master Edit Control
                    //because the panel intercepts them.  
                    if (m.Msg == PUtils.WM_MOUSEMOVE)
                        PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
                    else
                        if (m.Msg == PUtils.WM_LBUTTONDOWN)
                            PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
                        else
                            if (m.Msg == PUtils.WM_LBUTTONUP)
                                PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
                            else
                                if (m.Msg == PUtils.WM_LBUTTONDBLCLK)
                                    PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
                                else
                                    if (m.Msg == PUtils.WM_MOUSELEAVE)
                                        PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
                                    else
                                        if (m.Msg == PUtils.WM_RBUTTONDOWN)
                                            PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
                                        else
                                            if (m.Msg == PUtils.WM_MOUSEACTIVATE)
                                                PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
                }//Override WndProc

    паубивав бы !!!

    63F45EF45RB65R6VR, 23 Ноября 2012

    Комментарии (15)
  8. Java / Говнокод #12183

    +74

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    private static class NullReader extends Reader {
        public int read(char[] cbuf, int off, int len) {
            return 0;
        }
        public void close() {}
    }

    Однажды понадобилось работать с модулем, который что-то читает с помощью StreamTokenizer, но вместо реального файла подсовывать ему что-то своё, генерируемое на ходу, и при этом быть в курсе, какое место он сейчас читает. Решил пронаследоваться от StreamTokenizer и переопределить ему nextToken(). Оказалось, что у StreamTokenizer нет пустого конструктора, надо обязательно вызвать super и передать туда какой-нибудь Reader. Попробовал передавать null - оказалось, что в его конструкторе стоит проверка, которая сразу кидает NullPointerException. Блин, зачем ему Reader, если он к этому Reader никогда не обратится, ведь я nextToken переопределил! Пришлось сделать свой Reader-заглушку. Но чтобы пронаследоваться от абстрактного Reader, нужно обязательно определить методы read и close. Вот такая шняга в итоге получилась. Недавно случайно открыл код на этом месте и долго на неё пялился :-)

    GoblinAlchemist, 23 Ноября 2012

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

    +123

    1. 1
    val ret = method.invoke(this, args:_*)

    Превращаем Array[Any] в жабовый Object[] в Scala.

    myaut, 23 Ноября 2012

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

    +15

    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
    #include <iostream>
    #include <functional>
     
    template<class Container, class F, class A>
    auto accumulate(Container c, F f, A acc) -> A
    {
      auto id = [](const A& a) -> const A& {return a;};
      typedef decltype(std::begin(c)) Iterator;
      const std::function<A(const Iterator& lst, const std::function<A(const A&)>&)> doIt = 
      [&](const Iterator& lst, const std::function<A(const A&)>& cont) -> A
      {
        if(lst==c.end())
          return cont(acc);
        else
        {
          auto conter=[&](const A& acc) -> A {return cont(f(*lst, acc));};
          return doIt(lst+1, conter);
        }
      };
      return doIt(std::begin(c), id);
    }
     
    int main() {
            std::cout<<accumulate({1,2,3,4}, std::plus<int>(), 0);
            return 0;
    }

    Похоже написал какой-то монадолог.
    http://ideone.com/y4Dm9z
    Пример использования accumulate сам накатал.
    Я побаловался с этим примером, чтобы разобраться и GCC ожидаемо упал:
    http://ideone.com/XWfuoP
    Я убежден, что эта функция должна была выглядеть как-то так:

    template<class Container, class F>
    accumulate(const Container& c, const F& f=std::plus<decltype(*(std::begin(c)))>(), const decltype(*(std::begin(c))) acc=decltype(*(std::begin(c)))()) -> decltype(*(std::begin(c)))
    {
    return std::accumulate(c.begin(), c.end(), acc, f);
    }
    //Вызов этой функции:
    accumulate({1,2,3,4});

    Ну и я погуглил на тему этого говнокода и нашел на функциональном языке похожий:
    let fold_right func acc list =
    let rec loop list cont = //сюда мы передаем текущую функцию континуации
    match list with
    |[] -> cont acc //а вот и наше ключевое вычисление.
    |head::tail -> loop tail (fun racc -> cont (func head racc))
    loop list (fun x -> x)

    LispGovno, 23 Ноября 2012

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