Imbriquée ternaire opérateurs
J'ai ce code:
_viewModel.PhoneDefault = user == null ? "" :
(string.IsNullOrEmpty(user.PhoneDay) ?
(string.IsNullOrEmpty(user.PhoneEvening) ?
(string.IsNullOrEmpty(user.Mobile) ? "" :
user.Mobile) :
user.PhoneEvening) :
user.PhoneDay);
Est-il une meilleure façon d'écrire cela pour le rendre plus lisible?
- En évitant imbriquée ternaires va certainement rendre le code plus lisible
- Avez-vous considéré l'utilisation de "switch" ?
Vous devez vous connecter pour publier un commentaire.
Dans votre cas, vous pouvez écrire une fonction d'aide, comme ceci:
Puis il suffit d'appeler, comme ceci:
Écrire une autre méthode pour obtenir le numéro de téléphone, quelque chose comme ceci:
Et puis dans votre code:
Bien que j'aime Gabe et Vladimir réponses les plus. Voici une façon de faire de imbriquée ternaires look déchiffrable.
Accordée, puisque vous avez à les entourer avec des parenthèses, il devient plus difficile de le faire. En JavaScript, il s'agit en réalité très élégant car il
permet imbriquée ternaires sans les parenthèses. Bien que votre situation n'a pas vraiment besoin de cette syntaxe parfois, cette syntaxe est très pratique.
Maintenant, avec la puissance de LINQ, vous pouvez faire simple et lisible dans une seule ligne comme
Juste de répondre parce que je n'ai pas vu l'approche que j'utilise dans ce genre de scénarios dans aucun des réponses.
Ce sujet...
C'est gênant que vous avez à vérifier par l'utilisateur nullness au début parce que les forces de répéter
string.Empty
, mais néanmoins, je pense que c'est assez lisible.Mes deux cents 😉
Bien, aussi longtemps que les entrées peuvent être juste la valeur null ou valide:
Vous pouvez même définir une méthode d'extension sur la chaîne à convertir des chaînes vides à null et l'utiliser ici, mais je suis tout simplement fou.
Si elles peuvent être une chaîne vide, il suffit d'utiliser les autres personnes de réponses. Jason méthode est agréable et propres.
Ajouter un peu plus parenthèse pourrait le rendre plus lisible. Vous pouvez également le décomposer en une série de if/else