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 коммент.:
В комменте упоминается обратная совместимость - возможно поэтому тушится.
NullReferenceException здесь - однозначно тупейший ляп программиста.
Отправить комментарий