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

    +1003

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    class fileOutStream : public ostream
    {
    public:
        /* ... */
        virtual inline int printf( const char * fpFormat, ... )
        {
            /* ... */
        }
        /* ... */
    }

    virtual inline метод.

    Запостил: Dummy00001, 08 Февраля 2012

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

    • ну в inline тут ничего страшного, компилятору будет всё равно - тело функции и так описывается в классе
      а вот printf действительно нужен? насколько он безопасно реализован?
      Ответить
      • >насколько он безопасно реализован?
        По элипсису видно насколько он безопасно реализован. Но думается мне, что всё ещё хуже.
        Ответить
        • > безопасно
          ну то, что в аргументы обязательно придется передавать POD, даже не обсуждалось
          просто раз это какбе "fileOut", то, надеюсь, внутри использован vfprintf в файл, а не vsprintf в промежуточный буфер, размера которого никогда не хватит
          Ответить
    • >printf
      А велосипедист реализовал точно такой же велосипед и добавил новую наклейку.


      >/* ... */
      Велосипедист хоть догадался заюзать стандартный printf или всё по честному с нуля?
      Ответить
      • >или всё по честному с нуля?
        Только потоки, только хардкор! Это ж плюсы.
        Ответить
      • перенаправляется в FILE* либо коллбэк. как правило коллбэк, который перенаправляет вывод в другую либу, которая тоже типа Сшный stdio эмулирует. вообщем, стандартное корпоративно-коллективное-никто-ни-за-что-не-отвечает кодирование, минимум в три-четыре лэера.
        Ответить
      • Так а почему вы называете автора "велосипедистом", еще не зная, переиспользовал он стандартные функции или нет? Где тут велосипед?
        Ответить
        • велосипед - это если не использовать готовые библиотеки, в том числе и стандартные
          тут не используется стандартная функция, а пишется кривая обертка над функцией
          видимо это имел ввиду гг
          Ответить
          • Что тут используется, а что не используется - из приведенного кода не видно совершенно. Это во-первых. А во-вторых, кто вам сказал, что в данном случае вообще немедлено применима какая-либо существующая стандартная функция или какие-либо "готовые библиотеки"?

            Каким образом вообще можно делать такие далеко идущие выводы из одной декларации?
            Ответить
    • И? Что странного вы увидели в 'virtual inline'? Я нередко слышу эту байку от новичков, мол, комбинация 'virtual' и 'inline' не имеет смысла. Что интересно, им периодически втолковывают, что ничего странного или необычного в этой комбинации нет и что смысл она имеет, но тем не менее байка продолжает жить. Заставляет сделать вывод, что у этой байки где-то есть "гнездо", из которого она постоянно и расползается. Вот бы найти это гнездо, да дустом туда побрызгать... Говнокнига что-ли какая-то?

      "Виртульность" функции влияет лишь на "виртуальные" ее вызовы, т.е. на вызовы, которые разрешаются динамически, с учетом динамического типа объекта. "Инлайновость" функции влияет лишь на "невиртуальные" ее вызовы, т.е. вызовы которые разрешаются статически, с учетом статического типа объекта. В результате эти два свойства - виртаульность и инлайновость - никак друг с другом не пересекаются и никак друг другу не мешают.
      Ответить

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