前段時間,我在實現JavaScript代碼生成框架時不得不解決某個C#設計問題。我提供的解決方案之一是使用「使用」關鍵字完全不同(如果您願意,可以採用駭人聽聞的方式)。我用它作爲語法糖(好吧,原來它是一個),用於構建分層代碼結構。東西是這樣的:Ab-using languages
CodeBuilder cb = new CodeBuilder();
using(cb.Function("foo"))
{
// Generate some function code
cb.Add(someStatement);
cb.Add(someOtherStatement);
using(cb.While(someCondition))
{
cb.Add(someLoopStatement);
// Generate some more code
}
}
這是工作,因爲功能和雖然方法返回IDisposable的對象,即,一旦脫手,告訴生成器來關閉當前範圍。這樣的事情對任何需要硬編碼的樹狀結構都有幫助。
你認爲這樣的「黑客」是合理的嗎?例如,因爲你可以說在C++中,模板和運算符重載等許多功能都被濫用,這種行爲受到許多人的鼓勵(例如看看boost)。另一方面,你可以說許多現代語言不鼓勵這種濫用,並給你特定的,更多的限制性功能。
我的例子當然有點深奧,但卻是真實的。那麼你怎麼看待特定的黑客攻擊和整個問題呢?你遇到過類似的困境嗎?你可以容忍多少濫用?
不錯,我不得不看更多的C#3.0 – Untrots 2009-02-19 13:31:03