2009-09-01 9 views
0

Juste curieux de savoir comment vous commenter cette ligne de code:code commentaire correct pour la situation Apostrophe

string customerNm = customerNm.EndsWith("s") ? customerNm+= "'" : customerNm+="'s"; 
+1

J'espère que vous savez avec certitude que votre application ne sera jamais, jamais être localisée dans une langue autre que l'anglais ... –

+0

Cela peut être vrai. Mais le client s'en fiche maintenant – bizl

Répondre

4

Mettre dans sa propre fonction, et le nom de la fonction appropriée. Cela devrait être assez clair. (Et vous pouvez le tester plus facilement, aussi!)

string makePossessive(string customerName) { 
    ... 
} 
+0

Je seconde cette approche. Maintenant, c'est testable à l'unité. – Amy

+0

Bien que je suis fan de fonctions d'une ligne, je vois le raisonnement. Merci – bizl

+0

Je suis d'accord avec vous, les fonctions d'une ligne peuvent être étranges. Cependant, certaines personnes ne préfèrent pas l'opérateur conditionnel car cela peut rendre les choses moins lisibles. Si vous avez étendu votre déclaration dans un if/else, ce ne serait plus un one-liner. –

1
// Enforce English grammar 
string customerNm = customerNm.EndsWith("s") ? customerNm+= "'" : customerNm+="'s"; 
+0

Merci pour le refactoring. – bizl

3

Je commenterait pas nécessairement du tout. C'est assez clair en l'état.

Si vous le commentez, vous devriez expliquer pourquoi vous le faites comme vous le faites.

.: par exemple

/* Don't add "'s" for names ending on "s" 
    (request by Important Customer in June 1978) */ 
+2

Tous les commentaires, autres que ceux d'une API publique, doivent répondre à la question "pourquoi". Je peux lire le code pour savoir ce que vous avez fait, mais je veux savoir pourquoi vous l'avez fait de cette façon, ou même du tout. –

1

//Apply genitive case 
string customerNm = customerNm.EndsWith("s") ? customerNm+= "'" : customerNm+="'s"; 
3

Je commentera avec « ne fonctionne pas ». Parce que vous accédez à 'customerNm' avant de l'affecter.

(Vous utilisez "customerNm + = ..." ce qui signifie: créer une nouvelle instance de chaîne en tant que concaténation de l'ancienne instance [qui n'est pas encore affectée] et ...).

Cela ne devrait même pas être compilé.

Je pense que ce que vous voulez dire:

customerNm += customerNm.EndsWith("s") ? "'" : "'s"; 

où customerNm est une chaîne déjà assignée à une fois avant.

2

Pas la question que vous posez, mais il semble que votre code viole grammar rules.

Un nom ne doit pas être traité comme un nom pluriel juste parce qu'il se termine par 's'. Par exemple, si James a un chien, c'est le chien de James, pas le chien de James. Cependant, si deux partenaires de vie nommés Mike ont un chien, c'est le chien de Mikes. Exception: si un nom multisyllabique se termine par un son "ess" ou "ezz", il peut être traité comme une fin plurielle en 's'. Si Linus a un chien, il peut être le chien de Linus, bien que je pense que Linus est également acceptable.

+0

Intéressant. Merci pour le lien – bizl

+0

LOL! J'ai corrigé ta grammaire avec une mauvaise grammaire! Dernier paragraphe, "as" au lieu de "an" et "than" au lieu de "then". Je vais le laisser. Pour l'ironie. –

Questions connexes