發現lambda表達式後,他們爲匿名函數使用的實踐,我發現自己寫了很多瑣碎的事件,如這些:建議使用lambda表達式事件處理程序
txtLogin.GotFocus += (o, e) =>
{
txtLogin.Text = string.Empty;
txtLogin.ForeColor = SystemColors.ControlText;
};
txtLogin.LostFocus += (o, e) =>
{
txtLogin.Text = "Login...";
txtLogin.ForeColor = SystemColors.InactiveCaptionText;
};
我已經也是從事件處理程序剛剛調用等功能搬走,小lambda表達式其做同樣的替換它們:
backgroundWorker.DoWork += (o, e) => DatabaseLookup.Open(e.Argument as string);
,我發現了一些類似的問題解決performance concerns並指出你can't remove them,但我沒有發現任何解決這個簡單的問題是個好主意嗎?
是否以這種方式使用lambda表達式被認爲是很好的形式,或者做更多的經驗程序員看不起?它是否隱藏難以找到的地方的事件處理程序,還是通過減少簡單事件處理程序的數量來實現代碼服務?
將自己限制在一個出口點是IMO可讀性災難的祕訣。如果我知道一行之後的方法的結果(例如,因爲這是一種特殊情況),那麼沒有理由讓讀者通過其餘的方法來到出口點。 – 2010-07-14 16:52:23
我同意,我總是傾向於提前退出。但我知道有些人反對這一點。 – 2010-07-15 07:59:08
我的理念是避免在有副作用的第一個語句和最後一個這樣的語句之間退出函數,除了從'try'塊中返回一個值可能比在阻止並從外部返回。 – supercat 2012-06-27 16:12:14