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

    Всего: 3

  2. C++ / Говнокод #15763

    +14

    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
    typedef CStatisticsCalculator* (*TCalcCreator)(string&, const TUltimateStatDataPtr&);
    typedef std::map <CStatisticsCalculator::eCalcKind, boost::tuple<string, TUltimateStatDataPtr, TCalcCreator>> TCalcImplMap; 
    
    static TCalcImplMap CalcsMap;
    
    CStatisticsCalculator* CStatisticsCalculator::MakeNewCalculator(CStatisticsCalculator::eCalcKind Kind, 
                                                                    const TUltimateStatDataPtr& Data )
    {
        if (CalcsMap.empty())
        {
          CalcsMap[eCalcKind::eExtremeDealPrice] = 
            boost::make_tuple(string("be.commons.calculators.extreme_prices"), Data,
                   [](string& Name, const TUltimateStatDataPtr& Data_)->CStatisticsCalculator* 
                       { return new CExtremePricesCalculator(Name.c_str(), Data_);});
        
          CalcsMap[eCalcKind::eTurnOver] = 
            boost::make_tuple(string("be.commons.calculators.turnover"), Data,
                   [](string& Name, const TUltimateStatDataPtr& Data_)->CStatisticsCalculator* 
                       { return new CTurnOverCalculator(Name.c_str(), Data_);});
          
        };             
        
        auto i = CalcsMap.find(Kind);
        
        if (i == CalcsMap.end())
            return 0;
        
        auto& tpl = i->second;
        
        return tpl.get<2>()(tpl.get<0>(), tpl.get<1>());
    };

    Фабричный метод теперь выглядит так

    ABBAPOH, 16 Апреля 2014

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

    +8

    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
    //список строк
    QStringList rows_list = text.split("\n");
    
    uint32_t row=0;
    uint32_t col=0;
    for(QStringList::iterator itR=rows_list.begin(); itR!=rows_list.end(); itR++,row++)
    {
       QStringList columns_list=itR->split(";");
    
       col=0;
       for(QStringList::iterator itC=columns_list.begin(); itC!=columns_list.end(); itC++,col++)
       {
          //*itC,row,col
       }
    }

    Человек осилил итераторы в с++...
    (для тех, кто не в теме - QStringList имеет доступ по индексу за константное время)
    А еще мне нравятся uint32_t вместо int или, на худой конец, quint32.

    ABBAPOH, 22 Февраля 2013

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

    +24

    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
    int MyForm::modelId(int button, bool rarefied, bool grouped)
    {
        if (button == 4)
            return 9;
        else
        {
            Q_ASSERT(button == 1 || button == 2 || button == 3);
            if (!rarefied)
                return (button - 1);
            else
            {
                if (!grouped)
                    return 3 + (button - 1);
                else
                    return 6 + (button - 1);
            }
        }
    }

    Энумы? Не, не слышал.

    ABBAPOH, 14 Февраля 2013

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