Вероятно, худшим примером злоупотребления абстракцией, который я когда-либо видел, был этот свободный C # , который обернул основные элементы управления потоком (если, whiles, упорядоченные выражения) в свободный интерфейс.
Итак, ваш совершенно идиоматичный, чистый код:
var selectedTextBox = (TextBox)sender,
if (IsAdmin)
{
selectedTextBox.Enabled = true;
selectedTextBox.Text = superSecretPassword;
}
else
{
selectedTextBox.Clear();
}
Становится этот беспорядок:
Cast<TextBox>(sender).
WithIf(IsAdmin,
With(selectedTextBox => selectedTextBox.Enabled = true).
With(selectedTextBox => selectedTextBox.Text = superSecretPassword),
With(selectedTextBox => selectedTextBox.Clear());
Потому что с лямбдами все лучше!