Hungry Mind , Blog about everything in IT - C#, Java, C++, .NET, Windows, WinAPI, ...

SendKeys suck

Недавно пришлось поколупаться в исходном коде класса SendKeys. Его отвратительное качество меня просто поразило. Но самый больший ахуй случился когда я там наткнулся на следующий WTF:

[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")] 
private static void LoadSendMethodFromConfig()
{ 
   if (!sendMethod.HasValue) 
   {
       sendMethod = SendMethodTypes.Default; 

       try
       {
           // read SendKeys value from config file, not case sensitive 
           string value = System.Configuration.ConfigurationManager.AppSettings.Get("SendKeys");
 
           if (value.Equals("JournalHook", StringComparison.OrdinalIgnoreCase)) 
               sendMethod = SendMethodTypes.JournalHook;
           else if (value.Equals("SendInput", StringComparison.OrdinalIgnoreCase)) 
               sendMethod = SendMethodTypes.SendInput;
       }
       catch {} // ignore any exceptions to keep existing SendKeys behavior
   } 
}

Если в файле конфигурации приложения отсутствует настройка SendKeys - value.Equals вываливает NullReferenceException, который успешно тушится блоком catch {}. Это пиздец, господа. Класс писал студент в качестве тестового задания для Microsoft? Не удивительно, что во фреймворке столько говнокода, ведь студента видимо приняли.

2 коммент.:

coderoid комментирует...

В комменте упоминается обратная совместимость - возможно поэтому тушится.

Chabster комментирует...

NullReferenceException здесь - однозначно тупейший ляп программиста.

Отправить комментарий

Copyright 2007-2011 Chabster