1. C# / Говнокод #12228

    +107

    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
    //  define types
    const int FB2 = 0;
    const int TXT = 1;
    
    // private
    private int Type;
    …
    
    //  class methods
    public CVBook(string path, string type) {
        switch(type)
        {
            case "fb2":
                {
                    Type = 0;
                }
                break;
            case "txt":
                {
                    Type = 1;
                }
                break;
            default:
                {
                    throw new Exception("Unknown Book Format");
                }
        }
        …
        switch (Type) {
            case FB2: { … }
            case TXT: { … }
            default:
                {
                    throw new Exception("Unknown Book Format");
                }
            }
        }
    }

    Парсер книг, все в одном методе.

    Запостил: ArtFeel, 30 Ноября 2012

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

    • Полиморфизм во всей красе.
      Ответить
    • > string type
      > int Type
      белая горячка, Типичный случай.
      Ответить
      • А в Паскале использовать такое говно, как переменные, чьи имена отличаются только регистром, нельзя.
        Ответить
        • Затоможно в одном месте писать tYpE, в другом TYPE, в третьем type и все это будет одним именем.
          Ответить
          • Да. Я в начале конструкции пишу ключевые слова с заглавной буквы (например, Begin, Repeat, If, While, For, Case), а в середине конструкции — со строчной (then, of, do, until, end), потому что считаю это синтаксически верным. Паскаль — один из немногих языков с синтаксисом, приближенным к естественному. Даже программа заканчивается точкой.
            Ответить
            • COBOL и Gherkin language во все поля.
              Ответить
            • Тут есть хорошая традиция - помечать текст зелёным. Сам её не одобряю, но в этом случае нужно добавить и выделение жирным.
              Ответить
              • Комментарии набираются мелким шрифтом
                Функция объявляется жирным, тип переменной определяется ее цветом (int красный, string зеленый и т.п.):
                MyFunction x y text
                    mid = (x + y)/2
                В конце функции пишется ее зачеркнутое имя
                MyFunction
                Если функция возвращает значение - ее имя подсвечивается нужным цветом
                Sum x y
                    x + y
                Sum
                Ответить
                • Джва года такой язык жду.
                  Ответить
                  • Еще можно будет венгерскую нотацию перефигачить.

                    string
                    integer
                    real
                    pointer

                    И получить различные комбинации, вроде:
                    pointer to integer
                    Ответить
                  • у нас в ынтырпразе было colored-exCell programming,
                    с болдом и италиканками
                    Ответить
                • APL круче.
                  Ответить
              • > но в этом случае нужно добавить и выделение жирным
                Только если текст очень зеленый.
                Ответить
      • С ударением на 1й слог?
        Ответить
    • Процедурненько. А еще очень мило вводить символические константы, а потом использовать магические.
      Ответить
      • > Процедурненько

        Дейкстра, Вирт и Бэкус крутятся на своих профессорских стульях.
        Ответить
      • Полиморфизм можно мутить и на процедурах без всякого там ООП. Так что ни разу не оправдание.
        Ответить
        • Пример? Структура указателей на методы? Структура с функцией принимающей сообщения? Статический полиморфизм через перегрузки методов? Он же через шаблонные функции? Что-то ещё?
          Ответить
          • Ну еще к примеру указатель на функцию, хранящийся в самой структуре. От этого ведь эта структура не станет объектом, ведь правда?
            struct Test {
                void (*cleanup)();
                ...  поля ...
            };
            Ответить
            • >Структура указателей на методы?
              >Ну еще к примеру указатель на функцию, хранящийся в самой структуре
              Я это и имел ввиду.
              Ответить
              • Что имею, то и ввиду.
                Ответить
              • А, а я думал, что вы имели в виду аналог крестовой таблицы виртуальных методов.
                Ответить

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