このコード行にどのようにコメントするか興味があります:
string customerNm = customerNm.EndsWith("s") ? customerNm+= "'" : customerNm+="'s";
このコード行にどのようにコメントするか興味があります:
string customerNm = customerNm.EndsWith("s") ? customerNm+= "'" : customerNm+="'s";
それを独自の関数に入れ、関数に適切な名前を付けます。それは十分に明確なはずです。(そして、より簡単にテストすることもできます!)
string makePossessive(string customerName) {
...
}
必ずしもコメントする必要はありません。そのままでも十分クリアです。
コメントする場合は、なぜそのようにするのかを説明する必要があります。
例えば:
/* Don't add "'s" for names ending on "s"
(request by Important Customer in June 1978) */
「機能していません」とコメントします。割り当てる前に「customerNm」にアクセスするためです。
(「customerNm+=...」を使用します。これは、古いインスタンス [まだ割り当てられていない] の連結として新しい文字列インスタンスを作成し、...) を使用します。
これはコンパイルされるべきではありません。
私はあなたが何を意味すると思います:
customerNm += customerNm.EndsWith("s") ? "'" : "'s";
ここで、customerNm は、以前に一度割り当てられた文字列です。
ご質問の内容とは異なりますが、コードが文法規則に違反しているようです。
名前が「s」で終わるという理由だけで、複数名詞のように扱われるべきではありません。たとえば、ジェームズが犬を飼っている場合、それはジェームズの犬ではなく、ジェームズの犬です。ただし、マイクという名前の 2 人の人生のパートナーが犬を飼っている場合、それは両方ともマイクの犬です。
例外: 複数音節の名前が「ess」または「ezz」の音で終わる場合は、's' で終わる複数形のように扱うことができます。Linus が犬を飼っている場合、Linus の犬でもかまいませんが、Linus の犬でもかまいません。
// Enforce English grammar
string customerNm = customerNm.EndsWith("s") ? customerNm+= "'" : customerNm+="'s";
//Apply genitive case
string customerNm = customerNm.EndsWith("s") ? customerNm+= "'" : customerNm+="'s";