首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 3.0 入門【Lambda 表達式】第二章(四):Lambda 簡潔語法應對需求變更——從 19 點到 19-22 點的瞬間修改

     編輯:關於C語言

匿名方法版本的痛點

List 5 的匿名方法寫法:

new MenuItemC("選項4", 執行方法, delegate() { return DateTime.Now.Hour >= 19; })

若需求改為「19:00–22:00」,匿名方法語法冗長(delegate() { return ...; }),修改成本高,違反 YAGNI 原則卻又不得不改。

Lambda 表達式版本:一行搞定

private static MenuItemC[] MenuItems4 =
{
    new MenuItemC("選項1", 執行方法, () => true),
    new MenuItemC("選項2", 執行方法, () => true),
    new MenuItemC("選項3", 執行方法, () => true),
    new MenuItemC("選項4", 執行方法, () => DateTime.Now.Hour >= 19)
};

() => true、() => DateTime.Now.Hour >= 19 一眼可讀,無冗長關鍵字。

需求再變:19:00–22:00,瞬間修改

new MenuItemC("選項4", 執行方法,
    () => DateTime.Now.Hour >= 19 && DateTime.Now.Hour < 22)

只改 Lambda 本體,零結構調整。若用匿名方法或早期委派欄位法,需增欄位、改判斷邏輯、重構建構函式,工程量大增。

結論:Lambda 表達式的簡潔性質變了「修改成本」,使「為未來預留彈性」成為低成本決策,實踐了「恰如其分的防禦性程式設計」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved