1. Java / Говнокод #11985

    +74

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    public void aMethod() {
        try {
            int t = 0;
            t = t / t;
        } catch (Exception e) {
            System.out.println("aMethod");
            for (StackTraceElement element : e.getStackTrace()) {
                System.out.println("aMethod" + element.getClassName() + " " + element.getMethodName() + " " + element.getLineNumber() );
            }
        }
    ...//дополнительная "логика"
    }

    оригинальный способ узнать кто же вызвал aMethod

    Cat4eg, 24 Октября 2012

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

    +136

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    double thresholdDepth = 0;
    if (!txtThresholdDepth.Text.Equals(String.Empty) && !txtThresholdDepth.Text.StartsWith(CultureInfo.CurrentCulture.NumberFormat.NegativeSign))
    {
    	thresholdDepth = Double.Parse(txtThresholdDepth.Text);
    }
    else
    {
    	Log.Print("Input threshold value");
    	return;
    }

    redrick, 24 Октября 2012

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

    +30

    1. 1
    if( str[0] == '<' || str[1] == '?' || str[2] == 'x' || str[3] == 'm' || str[4] == 'l') {...}

    Проверка на xml-ность

    bazhenovc, 24 Октября 2012

    Комментарии (20)
  4. JavaScript / Говнокод #11982

    +154

    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
    var num_normalize = function (num) {
            if (typeof num == 'string') {
                if (num.test('.')) {
                    return parseFloat(num).toFixed(2);
                }
                else {
                    return parseInt(num);
                }
            }
            else if (parseInt(num) == parseFloat(num)) {
                return parseInt(num);
            }
            else return parseFloat(num).toFixed(2);
        };

    Когда-то писал функцию для приведение чисел к одному виду, которые иногда приходили в виде стринги.
    За говнокод сойдет?

    Stud, 24 Октября 2012

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

    −126

    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
    1CClientBankExchange
    ВерсияФормата=1.01
    Кодировка=Windows
    Получатель=
    ДатаНачала=25.09.2012
    ДатаКонца=25.09.2012
    ...
    СекцияРасчСчет
    ...
    КонецРасчСчет
    СекцияДокумент=Платежное поручение
    ...
    КонецДокумента
    КонецФайла

    Формат файла: Стандарт обмена с системами "Клиент банка"
    http://v8.1c.ru/edi/edi_stnd/100/101.htm

    Пидорва изобрела ini-файлы. Но убило не это, а это:
    >Кодировка=Windows

    Centry, 24 Октября 2012

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

    +161

    1. 1
    eval( array.join('+') );

    Конечно, я понимаю что всякие Haskel там, то, сё...

    bot, 24 Октября 2012

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

    +175

    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
    with Ada.Integer_Text_Io, Ada.Text_Io;
    use Ada.Integer_Text_Io, Ada.Text_Io;
    
    procedure Test is
    v : Long_Float := 26.0;
    v1 : float := 26.0;
    begin
       while (v<27.0) loop
             Put_Line("Value = " & Long_Float'image(v));
            v:=v+0.2;
       end loop;
       while (v1<27.0) loop
             Put_Line("Value = " & float'image(v1));
            v1:=v1+0.2;
       end loop;
    
    end;

    ideone.com/pXIhvY
    Безопасный военный язык, да.

    3.14159265, 23 Октября 2012

    Комментарии (42)
  8. Куча / Говнокод #11978

    +132

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    main = do
            print [1 .. 9]
            print [1, 3 .. 9]
            print [1, 3 .. 10]
            print [26.0, 26.2 .. 27.0]
            print [25.5..30.0]
            print [25, 25 .. 25]

    В хаскеле сломан генератор списков. :(
    http://ideone.com/AvBSuz

    HaskellGovno, 22 Октября 2012

    Комментарии (140)
  9. Java / Говнокод #11977

    +91

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    public static 
    	String readFile(String file) {
    		return Read.file(  Reflection.getCallerClass(2), file,"\n");
    	}
    	public static 
    	String readFile(Class c, String file, final String lineBreaker) {
    		return Read.stream(c.getResourceAsStream(file),lineBreaker);
    	}

    Я уже как-то раз наступил на эту хрень.
    Но ничё - сегодня снова вот решил написать - удобно ведь.

    3.14159265, 22 Октября 2012

    Комментарии (22)
  10. Haskell / Говнокод #11976

    −82

    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
    {-# LANGUAGE ExistentialQuantification,
                 DeriveDataTypeable,
                 PatternSignatures #-}
    
    import Data.Typeable
    import Control.Concurrent
    import Control.Concurrent.MVar
    import Control.Concurrent.Chan
    
    -- Core data types
    
    data Message = forall t . Typeable t => Message t | StopMessage
        deriving Typeable
    
    data Handler = forall t . Typeable t => Handler (t -> IO ())
    
    
    -- Worker thread
    
    data Worker = Worker (Chan Message) (MVar ())
    
    workerThread :: [Handler] -> Chan Message -> MVar () -> IO ()
    workerThread handlers chan finish = loop where
        loop = do
            message <- readChan chan
            case message of
                StopMessage -> putMVar finish ()
                Message val -> do
                    foldr (tryHandler val) (putStrLn "Unhandled message") handlers
                    loop
        tryHandler val (Handler h) rest = maybe rest h (cast val)
    
    startWorker :: [Handler] -> IO Worker
    startWorker handlers = do
        chan <- newChan
        finish <- newEmptyMVar
        forkIO (workerThread handlers chan finish)
        return $ Worker chan finish
    
    send :: Typeable m => Worker -> m -> IO ()
    send (Worker chan _) message = do
        writeChan chan $ Message message
    
    stopWorker :: Worker -> IO ()
    stopWorker (Worker chan finish) = do
        writeChan chan $ StopMessage
        takeMVar finish
    
    
    -- Some tests
    
    data Test = Test Bool String deriving Typeable
    
    intHandler :: Int -> IO ()
    intHandler val = putStrLn $ "Int: " ++ show (val * 2)
    
    strHandler :: String -> IO ()
    strHandler val = putStrLn $ "String: " ++ reverse val
    
    testHandler :: Test -> IO ()
    testHandler (Test b s) = putStrLn $ "Test: " ++ show b ++ " " ++ show s
    
    main = do
        w <- startWorker [
            Handler intHandler,
            Handler (\(val::Char) -> putStrLn $ "Char: " ++ show val),
            Handler strHandler,
            Handler testHandler]
        send w (5::Int)
        send w False
        send w 'a'
        send w "foo"
        send w (Test True "bar")
        stopWorker w
        putStrLn "Finished!"

    Вот такая вот портянка была написана под влиянием дискуссии с HaskellGovno http://govnokod.ru/11968, и недавней его просьбой рассказать об общении потоков в хаскеле.

    Код запускает тред, в который можно передавать различные сообщения (ограничение только одно - тип сообщения должен быть инстансом тайпкласса Typeable). В треде исполняются указанные хендлеры, каждый из которых ловит свой тип сообщений.

    P.S. Для неимеющих хаскеля, но желающих посмотреть на работу кода: http://ideone.com/OMVamc.

    bormand, 22 Октября 2012

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