只是好奇你会如何评论这行代码:
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”结尾而被视为复数名词。例如,如果詹姆斯有一条狗,那是詹姆斯的狗,而不是詹姆斯的狗。但是,如果两个名叫 Mike 的生活伴侣养了一只狗,那么它都是 Mikes 的狗。
例外:如果一个多音节名称以“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";