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

    +165

    1. 1
    log::write(std::string() + "Opened \"" + filename + "\"");

    История не моя, но приложу её к коду:
    >Несколько лет назад у нас в проекте была такая строчка кода
    Функция log::write() принимала форматную строку и набор аргументов, как printf.
    Если имя файла содержит %, возможны неприятности, но такие файлы обычно не встречаются.
    Я когда это увидел, очень резко прокоментировал способности и интелектуальный уровень того, кто так написал.
    Как же так, если файл называется скажем "%s", программа грохнется с вероятностью близкой к 100%!

    Как оказалось, этот кусок кода писала жена начальника.
    Морские свинки и программистки, ага.
    Кажется она сильно обиделась, меня уволили.

    Запостил: Говногость, 21 Августа 2011

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

    • Cool story, Bro.
      Ответить
    • >Opened
      клозет
      Ответить
    • Кстати, а какая замена этому коду? Вроде он так нормальный...
      Ответить
    • А как вам приведение к std::string через конкатенацию?
      Ответить
      • можно пример? мы не в сишарпе
        тогда уж создание string переменной с нужными данными и последующей передачей в функцию лога
        Ответить
      • Это как раз нормально. Не самый эффективный способ, но разница не принципиальна в данном случае. Лаконичность стоит тактов.
        Ответить
    • С++0х:
      log::write("Opened \""s + filename + "\"");
      Ответить
      • Тем кто не верит, то привожу выдержку:
        >C++0x supports ``user-defined literals'' through the notion of literal operators that map literals with a given suffix into a desired type. For example:

        constexpr complex<double> operator "" i(long double d)	// imaginary literal
        	{
        		return {0,d};	// complex is a literal type
        	}
        
        	std::string operator""s (const char* p, size_t n)	// std::string literal
        	{
        		return string(p,n);	// requires free store allocation
        	}
        Ответить
    • Это конечно шутка, навеянная enum'ом FORCE_DWORD=0x7FFFFFFF из некоторых системных библиотек и библиотеки DirectX:
      log::write(FORCE_STRING+"Opened \"" + filename + "\"");
      Ответить
    • ололо, на башорк!
      Ответить
    • показать все, что скрытоvanished
      Ответить

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