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

C# 3.0 入門【Lambda 表達式】第二章(三):匿名方法重構選單邏輯與 YAGNI 原則反思

     編輯:關於C語言

List 4:使用委派型別封裝可用性判斷

為應對「19:00 後才顯示」的需求變更,引入 SimpleMenuAvailability 委派:

public delegate bool SimpleMenuAvailability();

public class MenuItemC
{
    public readonly string Name;
    public readonly SimpleMenuAction Action;
    public readonly SimpleMenuAvailability IsAvailable;

    public MenuItemC(string name, SimpleMenuAction action, SimpleMenuAvailability isAvailable)
    {
        Name = name; Action = action; IsAvailable = isAvailable;
    }
}

List 5:匿名方法建立選單陣列

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

雖然滿足當前需求,但:

  • YAGNI 原則(You Aren't Going to Need It):為未知未來預寫代碼多半浪費。
  • 若需求改為「19:00–22:00」或「依星期幾」,仍需修改類別結構,脆弱性高。
  • 匿名方法語法冗長(delegate() { return ...; }),可讀性差。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved