很好奇你将如何评论这行代码:
string customerNm = customerNm.EndsWith("s") ? customerNm+= "'" : customerNm+="'s";
答案 0 :(得分:4)
将它放入自己的函数中,并适当地命名函数。这应该足够清楚了。 (你也可以更轻松地测试它!)
string makePossessive(string customerName) {
...
}
答案 1 :(得分:3)
我根本不会发表评论。现在已经很清楚了。
如果您对其进行评论,则应该按照您的方式解释为什么。
E.g:
/* Don't add "'s" for names ending on "s"
(request by Important Customer in June 1978) */
答案 2 :(得分:3)
我会用“不工作”来评论它。因为您在分配之前访问'customerNm'。
(您使用“customerNm + = ...”表示:创建一个新的字符串实例作为旧实例[尚未分配]和...的串联。)。
这甚至不应该被编译。
我认为你的意思是:
customerNm += customerNm.EndsWith("s") ? "'" : "'s";
其中customerNm是之前已分配过的字符串。
答案 3 :(得分:2)
不是您要问的问题,但看起来您的代码违反了grammar rules。
名称不应该被视为复数名词,因为它以's'结尾。例如,如果詹姆斯有一只狗,那就是詹姆斯的狗,而不是詹姆斯的狗。但是,如果两个名叫迈克的生活伴侣有一条狗,那它就是麦克斯的狗。
例外:如果多音节名称以“ess”或“ezz”声音结尾,则可以将其视为以's'结尾的复数形式。如果Linus有一条狗,它可能是Linus的狗,虽然我相信Linus也是可以接受的。
答案 4 :(得分:1)
// Enforce English grammar
string customerNm = customerNm.EndsWith("s") ? customerNm+= "'" : customerNm+="'s";
答案 5 :(得分:1)
//Apply genitive case
string customerNm = customerNm.EndsWith("s") ? customerNm+= "'" : customerNm+="'s";