Как упростить оператор IF ELSE C #? - PullRequest
0 голосов
/ 12 февраля 2019
if(currency.equal("CND"))
       if (string.IsNullOrEmpty(member.LastName))
                    {
                        return $"{member.FirstName}".Trim();
                    }
                    else
                    {
                        return $"{member.LastName} {member.FirstName}".Trim();
                    }

                else
                    if (string.IsNullOrEmpty(member.LastName))
                    {
                        return $"{member.FirstName}".Trim();
                    }
                    else
                    {
                        return $"{member.FirstName} {member.LastName}".Trim();
                    }

Мне нужно упростить это утверждение, но я не уверен, как?Я новичок в этом деле, мне может понадобиться помощь по этому вопросу ... любое предложение?

Ответы [ 3 ]

0 голосов
/ 12 февраля 2019

Это не обязательно упрощает его, оно просто делает его однострочным

return $"{(!member.LastName.IsNullOrEmpty() ? member.LastName : "")}{member.FirstName}".Trim();

Однако для лучшей ясности и читаемости блок if/else идеально подходит ...

        if (string.IsNullOrEmpty(member.LastName))
        {
            return $"{member.FirstName}".Trim();
        }
        else
        {
            return $"{member.LastName} {member.FirstName}".Trim();
        }

Я бы определенно предпочел, чтобы блок if...else использовал однострочную интерполяцию строк

0 голосов
/ 12 февраля 2019

Вы можете переместить часть своего кода, чтобы исключить дублирование.Если фамилия не указана, печатается только первое имя, поэтому сначала проверьте его.Затем проверьте условие, которое печатает полное имя в предпочтительном порядке.

if (string.IsNullOrEmpty(member.LastName))
{
    return member.FirstName.Trim();
}
else
{
    return currency.equal("CND")
        ? $"{member.LastName} {member.FirstName}".Trim()
        : $"{member.FirstName} {member.LastName}".Trim();
}

Вы можете переписать его также как вложенную троичную операцию, хотя на самом деле она не короче, и то, насколько она более читаема, зависит от человека.читая это ...

return (string.IsNullOrEmpty(member.LastName)
        ? member.FirstName
        : currency.equal("CND")
          ? $"{member.LastName} {member.FirstName}"
          : $"{member.FirstName} {member.LastName}").Trim();
0 голосов
/ 12 февраля 2019

Это определенно чрезмерно спроектировано.Не короче, но цель яснее и легко расширяема.

public static string GetDisplayName(Member member, string currency)
{
    return string.Join(" ", GetDisplayNameParts(member, currency));
}

public static IEnumerable<string> GetDisplayNameParts(Member member, string currency)
{
    switch (currency)
    {
        case "CND":
            yield return member.LastName ?? ""
            yield return member.FirstName ?? ""
            yield break;

        default:
            yield return member.FirstName ?? ""
            yield return member.LastName ?? ""
            yield break;
    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...