0

只是好奇你会如何评论这行代码:

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

6 回答 6

4

将其放入自己的函数中,并适当地命名该函数。这应该足够清楚了。(您也可以更轻松地对其进行测试!)

string makePossessive(string customerName) {
    ...
}
于 2009-09-01T15:27:03.397 回答
3

我不一定会评论它。照原样很清楚。

如果你确实评论它,你应该解释为什么你这样做。

例如:

/* Don't add "'s" for names ending on "s" 
  (request by Important Customer in June 1978) */
于 2009-09-01T15:22:55.030 回答
3

我会用“不工作”来评论它。因为您在分配给它之前访问了“customerNm”。

(您使用“customerNm+=...”,这意味着:创建一个新的字符串实例作为旧实例 [尚未分配] 和...的串联。)。

这甚至不应该被编译。

我想你的意思是:

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

其中 customerNm 是之前已经分配过一次的字符串。

于 2009-09-01T17:29:36.490 回答
2

不是您要问的问题,但看起来您的代码违反了语法规则

名称不应仅仅因为它以“s”结尾而被视为复数名词。例如,如果詹姆斯有一条狗,那是詹姆斯的狗,而不是詹姆斯的狗。但是,如果两个名叫 Mike 的生活伴侣养了一只狗,那么它都是 Mikes 的狗。

例外:如果一个多音节名称以“ess”或“ezz”结尾,则可以将其视为以“s”结尾的复数形式。如果 Linus 有一条狗,它可以是 Linus 的狗,虽然我相信 Linus 的也可以接受。

于 2009-09-01T18:31:20.703 回答
1
// Enforce English grammar
string customerNm = customerNm.EndsWith("s") ? customerNm+= "'" : customerNm+="'s"; 
于 2009-09-01T15:21:11.740 回答
1

//Apply genitive case
string customerNm = customerNm.EndsWith("s") ? customerNm+= "'" : customerNm+="'s";
于 2009-09-01T15:45:09.103 回答