1. C++ / Говнокод #15885

    +17

    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
    cKeyCfg::types_t cConfiguration::SearchInType(string type)
    {
        CTint i = 0;
        const CTbyte * types[] = { "S", "D" };
    
        for(i = 0; i < sizeof(types)/sizeof(types[0]); i++) {
          if ( strcmp(type.c_str(),types[i]) == 0) {
            switch (i) {
            case 0: // Is string
              return cKeyCfg::stringa;
            case 1: // Is decimal
              return cKeyCfg::decimale;
            default: //Default value VT_BSTR
              return cKeyCfg::unknow;
            }
          }
        }
        return cKeyCfg::unknow;
    }

    сделано на родине Fiat'а.

    Запостил: Dummy00001, 02 Мая 2014

    Комментарии (6) RSS

    • М? Че не так? Расширяемо.
      Ответить
      • намек:
        const struct { char *name; cKeyCfg::types_t type; } types[] = { 
          { "S", cKeyCfg::stringa },
          { "D", cKeyCfg::decimale },
        };

        а если еще и отсортировать, то еще можно и bsearch использовать, для случая если типов и на самом деле будет много.
        Ответить
        • Да ладно перфекционировать. Меня вот только 0, 1, ... напрягли.
          Ответить
          • Перфекционизм - не перфекционизм, но отделение данных от логики всегда хорошо, даже если их будут отделять несколько строчек в пределах одной функции.
            Ответить
          • подтормаживаете батенька. ыы еще раз гляньте на код: в теле цикла switch/case по индексу цикла.

            если бы писал не тормоз, даже по быстрой быструхе это было бы: if ("D") then decimal; else if ("S") then string; else unknown.
            Ответить

    Добавить комментарий