簡體   English   中英

改進 if 條件邏輯

[英]Improve if condition logic

我想改進我的代碼邏輯。 我在邏輯中有太多的 If 條件。 我想知道是否有更好的方法來執行此邏輯。 這是代碼

if (item != null && item.Fields != null && item.Fields["WilcardPage"] != null) {
    wildCardItemUrl = item.Fields["WilcardPage"].Value;     
}

if (string.IsNullOrEmpty(wildCardItemUrl)) {

    if (item.Children.Count == 1) {
        wildCardItemUrl = Sitecore.Links.LinkManager.GetItemUrl(item);
    } else {
        var settings = Sitecore.Context.Database.GetItem(ID.Parse(settingsItem));
        if (settings != null) {
            var wildcardItem = _workContext.SitecoreContext.Cast < SiteSettings > (settings);
            wildCardItemUrl = (wildcardItem.ItemWildcardPage != null) ? MediaReleaseHelper.FixMediaReleaseUrl(wildcardItem.ItemWildcardPage.ItemUrl) : string.Empty;
        }
    }
}

老實說,這里沒有太多需要改進的地方,但試試這個:

wildCardItemUrl = item?.Fields?["WilcardPage"]?.Value ?? wildCardItemUrl;

if (string.IsNullOrEmpty(wildCardItemUrl)) {
  if (item?.Children.Count == 1) {
    wildCardItemUrl = Sitecore.Links.LinkManager.GetItemUrl(item);
  } else {
    var settings = Sitecore.Context.Database.GetItem(ID.Parse(settingsItem));
    if (settings != null) {
      var wildcardItem = _workContext.SitecoreContext.Cast<SiteSettings> (settings);
      wildCardItemUrl = (wildcardItem.ItemWildcardPage != null) ? MediaReleaseHelper.FixMediaReleaseUrl(wildcardItem.ItemWildcardPage.ItemUrl) : string.Empty;
    }
  }
}

如果:

  1. Fields["..."]從不拋出和
  2. wildCardItemUrlif之前是 null

那么您可以將 if 替換為:

wildCardItemUrl = item?.Fields?["WilcardPage"]?.Value;

暫無
暫無

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

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