dsi*_*cha 11 performance abstraction anti-patterns
在今天的编程中你看到的最糟糕的(由于流行程度或严重程度)抽象反转的例子是什么?
对于那些不熟悉这个概念的人来说,抽象反转是在高级构造之上实现低级构造.更确切地说,假设你有构造A和B.B是在A之上实现的,但A不会在任何地方暴露.因此,如果你真的需要较低级别的构造A,那么当B首先用A实现时,你最终会在B之上实现A. 见http://en.wikipedia.org/wiki/Abstraction_inversion.
Jul*_*iet 11
可能是我见过的最糟糕的抽象滥用示例是这个流畅的C#,它在流畅的界面中包含了基本的流控制元素(if,whiles,Sequenced expressions).
所以你完美的惯用,干净的代码:
var selectedTextBox = (TextBox)sender,
if (IsAdmin)
{
selectedTextBox.Enabled = true;
selectedTextBox.Text = superSecretPassword;
}
else
{
selectedTextBox.Clear();
}
Run Code Online (Sandbox Code Playgroud)
变成这个烂摊子:
Cast<TextBox>(sender).
WithIf(IsAdmin,
With(selectedTextBox => selectedTextBox.Enabled = true).
With(selectedTextBox => selectedTextBox.Text = superSecretPassword),
With(selectedTextBox => selectedTextBox.Clear());
Run Code Online (Sandbox Code Playgroud)
因为lambdas的一切都更好!
| 归档时间: |
|
| 查看次数: |
1860 次 |
| 最近记录: |