优化if -else语句问[关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优化if -else语句问[关闭]相关的知识,希望对你有一定的参考价值。

我有if-else语句,我想更优化它。有没有办法更优化它

if(entity[attributeName] != null)
{
    if (entity.FormattedValues.Contains(attributeName) && entity[attributeName].GetType() != typeof(EntityReference))
    {
        return entity.FormattedValues[attributeName];
    }
    else
    {
        return GetDisplayObjectFromRawValue(entity[attributeName]);
    }
}
else
{
    if (entity.FormattedValues.Contains(attributeName))
    {
        return entity.FormattedValues[attributeName];
    }
    else
    {
        return GetDisplayObjectFromRawValue(entity[attributeName]);
    }
}
答案

如果我理解你的意思正确,你的代码可以像这样重写:

if(entity[attributeName] != null)
{
    return entity.FormattedValues.Contains(attributeName) && entity[attributeName].GetType() != typeof(EntityReference)
        ? entity.FormattedValues[attributeName]
        : GetDisplayObjectFromRawValue(entity[attributeName]);
}

return entity.FormattedValues.Contains(attributeName) 
        ? entity.FormattedValues[attributeName]
        : GetDisplayObjectFromRawValue(entity[attributeName]);

P / S:这种方式与之无关:它使代码运行得更快,或者在运行时节省内存或类似的东西。只是为了可读性。

另一答案

如果只是代码长度,你可以像这样重写它:

if (entity.FormattedValues.Contains(attributeName) 
        && (entity[attributeName] == null || entity[attributeName].GetType() != typeof(EntityReference)))
{
    return entity.FormattedValues[attributeName];
}
else
{
    return GetDisplayObjectFromRawValue(entity[attributeName]);     
}

或表达为三元声明:

return entity.FormattedValues.Contains(attributeName) 
            && (entity[attributeName] == null || entity[attributeName].GetType() != typeof(EntityReference))
    ? entity.FormattedValues[attributeName]
    : GetDisplayObjectFromRawValue(entity[attributeName]);

我在示例here中将原始代码简化为布尔值:

  • v1(entity [attributeName]!= null),
  • v2(entity.FormattedValues.Contains(attributeName))
  • v3(entity [attributeName] .GetType()!= typeof(EntityReference))

请注意,您通常应该以一种简洁易读的方式编写代码。

以上是关于优化if -else语句问[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何优化嵌套if?

Symfony中if循环的PHP特定优化

小程序常用优化手段

优化涉及 IF EXISTS 的 SQL

适用于 Python 的 Gekko 优化套件 - if3 始终 <0

VUE性能优化总结