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

    Всего: 67

  2. Куча / Говнокод #18716

    −11

    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
    {-# LANGUAGE FunctionalDependencies #-}
    {-# LANGUAGE UndecidableInstances #-}
    {-# LANGUAGE FlexibleInstances, FlexibleContexts, MultiParamTypeClasses, OverlappingInstances #-}
    
    class Filtering c a b where
      (/-) :: c -> [a] -> [b]
    
    class Containing a b | a -> b where
      getter :: a -> [b]
    instance (Containing a b, Containing b c) => Containing a c where
      getter l = getter l >>= getter
    
    instance Filtering (a -> Bool) a a where
      p /- l = filter p l
    instance (Filtering (a -> Bool) a a, Containing b a) => Filtering (a -> Bool) b b where
      p /- l = filter (not . null . filter p . getter) l
    instance (Filtering (c -> Bool) b b, Containing a b) => Filtering (c -> Bool) a b where
      p /- l = p /- (l >>= getter)
      
    data A = A { _ap :: Bool, _ab :: [B] } deriving (Show)
    instance Containing A B where
      getter = _ab
    
    data B = B { _bp :: Bool, _bc :: [C] } deriving (Show)
    instance Containing B C where
      getter = _bc
    
    data C = C { _cp :: Bool } deriving (Show)
    
    test = [ A True [B True [C False]]
           , A False [B True [C True, C False]]
           ]
    
    main = do print ((_cp /- test) :: [B])
              print ((_bp /- test) :: [A])
              print ((_cp /- test) :: [C])

    вы мечтали об операторах, жрущих любой тип a la PHP, в своём любимом статическом языке?
    всего пара расширений GHC, и они уже в вашем проекте!

    CHayT, 13 Сентября 2015

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

    −52

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    erl -run moduleful_of_elaborate_business_logic validate_data -noshell > erl.log
    if grep -E '(CRASH REPORT|ERROR REPORT|Error|Crash)' erl.log
    then 
      echo "Validation failed"
      exit 1
    fi

    Найдено в продакшне.

    CHayT, 25 Августа 2015

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

    +165

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    ID3DBlob* pErrorBlob;
        hr = D3DX11CompileFromFile( szFileName, NULL, NULL, szEntryPoint, szShaderModel, 
            dwShaderFlags, 0, NULL, ppBlobOut, &pErrorBlob, NULL );
        if( FAILED(hr) )
        {
            if( pErrorBlob != NULL )
                OutputDebugStringA( (char*)pErrorBlob->GetBufferPointer() );
            if( pErrorBlob ) pErrorBlob->Release();
            return hr;
        }
        if( pErrorBlob ) pErrorBlob->Release();

    Текст примера из MS DXSDK. Проверка - а вдруг pErrorBlob самоуничтожается после прочтения?

    CHayT, 07 Апреля 2011

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

    +157

    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
    struct Event
    {
       int priority;
       bool operator<(Event e) const
       {
          return e.priority>priority;
       }
       
       virtual void operator() () = 0;
    };
    
    priority_queue<Event*, deque<Event*> > eventQueue;
    
    template <typename T, void (T::*g)()>
    struct  TEvent : Event
    { 
       T* parent;
       virtual void operator() () 
       {
          (parent->*g)();
       }
       TEvent (T* _parent) : parent(_parent){}
    };
    
    struct Entity
    {
       int foo;
       void AFunc() 
       {
          cout<<foo;
       }
    
       void BFunc() 
       {
          cout<<"Ololo";
       }
               
       typedef TEvent<Entity,&Entity::AFunc> someEvent;
       Entity(int _foo): foo(_foo){}
             
       void addEvent()
       {
          eventQueue.push(new someEvent(this));
       }
    };
    
    int main()
    {
       Entity foo(10);
       foo.addEvent();
       (*eventQueue.top())();
       return 0;
    }

    Один из самых сложных и неочевидных способов вывести в консоль число 10.
    (Этот код - проверка, будет ли работать прототип велосипедного делегата)

    CHayT, 15 Февраля 2011

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

    +93

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    for i:=1 to 100 do
    begin
    for j:=1 to f do
    begin
    ...
    end;
    f:=f+1000;
    end;

    Бедные дельфины, им не повезло с циклами.

    CHayT, 12 Февраля 2011

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

    +159

    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
    try
    {
      for(..)
      {
         for(..)
         {
            if(...)
               throw;//генерация исключения
         }
      }
    }
    catch(..)
    {
    }

    Кому-то религия не позволяет юзать goto. Сорри, если было.

    CHayT, 05 Февраля 2011

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

    +162

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    Engine::GetSingleton()->SetCallbacks(
    	new myname::Method<void(void),Application>(&Application::Render, boost::weak_ptr<Application>(application)),
    	new myname::Method<void(void),Application>(&Application::Update, boost::weak_ptr<Application>(application)),
    	0,
    	0,
    	new myname::Method<void(void),Application>(&Application::Init, boost::weak_ptr<Application>(application)),
    	new myname::Method<void(void),Application>(&Application::Cleanup, boost::weak_ptr<Application>(application))
    );

    Особая шаблонная магия + ООП мозга.

    CHayT, 05 Февраля 2011

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