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

    Всего: 101

  2. Си / Говнокод #19996

    −27

    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
    #include <stdio.h>
    
    void print_first_three(int a[static 3]) {
        for (int i = 0; i < 3; i++) {
            printf("%i ", a[i]);
        }
        printf("\n");
    }
    
    int main() {
        int nums[] = {1, 2, 3, 4, 5};
        print_first_three(nums);
        return 0;
    }

    int a[static 3], господа. Минусуем те, кто знал о таком.

    In function parameter lists, additional syntax elements are allowed within the array declarators: the keyword static and qualifiers, which may appear in any order before the size expression (they may also appear even when the size expression is omitted).
    In each function call to a function where a parameter of array type uses the keyword static between [ and ], the value of the actual parameter must be a valid pointer to the first element of an array with at least as many elements as specified by expression.

    --http://en.cppreference.com/w/c/language/array

    roman-kashitsyn, 13 Мая 2016

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

    −25

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    public final class FeedReaderContract {
        // To prevent someone from accidentally instantiating the contract class,
        // give it an empty constructor.
        public FeedReaderContract() {}
    }

    http://developer.android.com/training/basics/data-storage/databases.html
    Надёжно защитили

    roman-kashitsyn, 20 Апреля 2016

    Комментарии (34)
  4. Куча / Говнокод #18581

    +2

    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
    import qualified Data.Map as M
    import Data.Maybe
    import Data.Array
    import Control.Monad
    import Control.Monad.State
    import Control.Monad.IfElse
    
    type Graph = Array Int [Int]
    
    isBipartite g = isJust $ runStateT (mapM_ fill (indices g)) M.empty
      where
        fill     v = whenM (M.notMember v`fmap`get) $ spread True v
        spread k v = whenM (paint k v)              $ mapM_ (spread (not k)) (g!v)
    
    paint k v = get >>= \c -> case M.lookup v c of 
        Nothing     -> put (M.insert v k c) >> return True
        Just x|x==k ->                         return False
              |True ->                         fail ""

    Проверка двудольности графа.
    http://antilamer.livejournal.com/298055.html?format=light

    roman-kashitsyn, 06 Августа 2015

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

    +144

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    var::var (double initial) {
        (*this) = initial;
    }
    var::var (char *initial) {
        (*this) = initial;
    }

    С воландесайта.http://habrahabr.ru/post/261351

    roman-kashitsyn, 29 Июня 2015

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

    +57

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    for (i = MAX_PATH; 5; i--){
        if (CurProfileF[i] == 't' && CurProfileF[i-3] == '.'){
            i = i-3;
            break;
        }
    }

    http://trac.miranda-ng.org/browser/trunk/protocols/Xfire/src/variables.cpp?rev=5315#L194

    roman-kashitsyn, 25 Ноября 2014

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

    +42

    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
    class Message {
    public:
        explicit Message(Level level);
        ~Message();
    
        Level level() const { return level_; }
        const time_t& time() const { return time_; }
        std::string text() const { return s_.str(); }
        bool enabled() const { return enabled_; }
    
        template<class T>
        Message& operator << (const T& t)
        {
            if (enabled_)
                s_ << t;
            return *this;
        }                                                                                       
    
        Message(Message& msg) { moveFrom(msg); }
        Message& operator = (Message& msg) { moveFrom(msg); return *this; }
        struct Ref {
            explicit Ref(Message& msg): msg_(&msg) {}
            Message* msg_;
        };                                                                                                                                
        operator Ref() { return Ref(*this); }
        Message(Ref r) { moveFrom(*r.msg_); }
        Message& operator = (Ref r) { moveFrom(*r.msg_); return *this; }
    
    private:
        Level level_;
        time_t time_;
        std::ostringstream s_;
        bool enabled_;
    
        void moveFrom(Message& msg)
        {
            level_ = msg.level_;
            time_ = msg.time_;
            s_.str(msg.s_.str());
            enabled_ = msg.enabled_;
            msg.enabled_ = false;
        }
    };

    move головного мозга

    roman-kashitsyn, 30 Октября 2014

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

    +145

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    Connection::Connection(const Options& opts): impl_(new Impl)
    {
        impl_->isInitialized = false;
        impl_->options = std::move(*opts.impl_);
       
        if (!options().lazyInit)
            conn();
    }

    Вся соль в строке 4: из объекта opts, переданного по константной ссылке, подло выжимают содержимое. Видимо, никто не пробовал создать два коннекта из одного объекта опций.

    roman-kashitsyn, 28 Октября 2014

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

    +53

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    /* set _god=true temporarily, safely */
    class GodScope {
        bool _prev;
    public:
        GodScope();
        ~GodScope();
    };

    mongo/db/client.h
    Почувствуй простор божий

    roman-kashitsyn, 23 Октября 2014

    Комментарии (10)
  10. Java / Говнокод #16719

    +82

    1. 1
    Boolean hasRefId = !node.getAttributes().getNamedItem("refid").equals(null);

    equals(null)

    roman-kashitsyn, 18 Сентября 2014

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

    +62

    1. 1
    2. 2
    wchar_t c1 =
        (wchar_t)LOWORD(::CharUpperW((LPWSTR)(DWORD_PTR) MAKELONG(*i1, 0)));

    Шиндовс, штроки, штрадания
    http://llvm.org/bugs/show_bug.cgi?id=20712

    roman-kashitsyn, 21 Августа 2014

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