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

    +131.4

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    internal static System.Drawing.Font ToWindowsFont(Microsoft.Office.Interop.PowerPoint.Font ppFont)
    {
    	FontStyle style = ToGdiFontStyle(ppFont.Style);
    	System.Drawing.Font gdiFont = new System.Drawing.Font(ppFont.Name, ppFont.Size, style);
    	// из-за следующей строчки проект не скомпилируется под .NET 2.0, требуя ещё и один из более новых SP
    	if ( windowsFont.Name != windowsFont.OriginalFontName )
    	{
    		windowsFont = new System.Drawing.Font(TextConverter.DefaultUnicodeSubstituteFont, ppFont.Size, style);
    	}
    	return windowsFont;
    }

    Баг был случайно найден на виртуалке с чистой Windows XP и MS Visual Studio 2005, поскольку мы по собственной глупости упустили тот факт, что на хост-машинах давно стоит .NET 3.5. Строчка "if ( windowsFont.Name != ppFont.Name )" решает проблему совместимости. Вот как иногда из-за маленькой, не бросающейся в глаза, ошибки можно завалить весь проект. Каюсь, этот код - мой. ))

    Запостил: cyba, 31 Декабря 2009

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

    • где тут говнокод? только ошибка при обеспечении совместимости со старыми фрэймворками, и то ЕСЛИ это надо. кг/ам.
      Ответить
      • наверно, говно состоит в том, что мелкая ошибка приводит к несовместимости. более того, указано ведь же не менее мелкостный фикс. и уж тем более, насколько мне известно, Font из BCL возвращает в .Name значение "MS Sans Serif", когда не может найти требуемый шрифт (собссно, с ним и нужно сравнивать). да, и по поводу "ЕСЛИ": множество кастомеров требует поддержки дотнет дваноль без каких-либо эспи (я уже не говорю о том, что проект, по всей видимости, в VS2005 делался - не спроста же)
        Ответить
        • >>множество кастомеров требует поддержки дотнет дваноль без каких-либо эспи
          смотря что за софт. если ширпотреб - да.
          Ответить
    • к тому же, налицо говнотестер, раз проект завалился
      Ответить
      • там не было сказано о том, что проект завалился
        было сказано только, что из-за пустяка "можно завалить весь проект"
        Ответить

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