1
votes

Comment réparer la validation pour être meilleur?

Je fais une validation téléphonique pour 2 marques et les deux validations ont presque la même signification que des chiffres différents.

        if (!MobileFormat(num, brand,currency))
        {
            if (brand.Equals(Brand.LED.ToString()))
            {
                key = "The number of phone numbers must be "9" digits.";
            }
            else
            {
                key = "The number of phone numbers must be "10" digits.";
            }

        }

Je m'attends à ce que la clé soit sur une seule ligne et non double et ne change que le chiffre.


2 commentaires

Pourquoi ne pas utiliser un opérateur ternaire si vous n'avez que if et else?


La première instruction if est correcte, comme pour la seconde, vous pouvez utiliser Opérateurs ternaires . et quant à vous, cela ressemblerait à quelque chose comme key = brand.Equals (Brand.LED.ToString ())? "Le nombre de numéros de téléphone doit être composé de" 9 "chiffres." : "Le nombre de numéros de téléphone doit être composé de" 10 "chiffres.";


3 Réponses :


2
votes

essayez ci-dessous:

key = string.Format("The number of phone numbers must be {0} digits.", brand.Equals(Brand.LED.ToString()) ? 9 : 10);


0 commentaires

1
votes

Il suffit de capturer la valeur numérique avant de créer une chaîne.

if (!MobileFormat(num, brand, currency))
{
    var digits = brand.Equals(Brand.LED.ToString()) ? 9 : 10;
    key = $"The number of phone numbers must be '{digits}' digits.";
}

Avec deux lignes, vous reconnaissez rapidement que deux opérations impliquent et économise de l'espace horizontal.


0 commentaires

1
votes

Si l'une ou l'autre des chaînes est nullable, vous pouvez le faire:

if (!MobileFormat(num, brand, currency))
     key = $"The number of phone numbers must be {(Equals(brand, Brand.LED.ToString()) ? 9 : 10)} digits";


0 commentaires