簡體   English   中英

該方法嘗試的術語是什么?

[英]What is the terminology for what this method attempts?

我不知道:

  1. 如果這樣的話。
  2. 如果這是個好主意。
  3. 它的名稱是為了了解它的更多信息。

但我認為意圖非常明顯。

public static class DebugLogic
{
    public static bool ThrowIfNull = false;

    public static T OrNew<T>(this T obj) where T : class
    {
        if (obj != null) return obj;
        else if (ThrowIfNull) throw new ArgumentNullException(//to do...);
        else return Activator.CreateInstance<T>();

    }
}

預期用途: var customer = order.Sale.OrNew().Customer.OrNew().Name

我在做什么? 這是瘋了還是有幫助的? 似乎有幫助。

我認為使用OrNew方法的想法很好。 特別是如果你正在努力建立一個流暢的界面。 但是,我會改變3件事

  1. 沒有隱藏的標志來控制行為( ThrowIfNull )。 這使得某人無法閱讀OrNew電話了解它的作用。
  2. 使用new約束支持較不安全的Activator.CreateInstance<T>()調用
  3. 我稱之為DebugLogic以外的DebugLogic 通常(但不總是)擴展方法容器以Extensions名結尾。

例如

public static class LogicExtensions {
  public static T OrNew<T>(this T obj) where T : class, new() {
    if (obj != null) {
      return obj;
    }
    return new T();
  }
}

此操作的名稱顯然是: DefaultIfNull

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM