只是好奇,你如何評價這行代碼:正確的註釋代碼
string customerNm = customerNm.EndsWith("s") ? customerNm+= "'" : customerNm+="'s";
只是好奇,你如何評價這行代碼:正確的註釋代碼
string customerNm = customerNm.EndsWith("s") ? customerNm+= "'" : customerNm+="'s";
把它放進自己的功能,並適當命名的功能。這應該足夠清楚。 (你可以更容易地測試它,太!)
string makePossessive(string customerName) {
...
}
// Enforce English grammar
string customerNm = customerNm.EndsWith("s") ? customerNm+= "'" : customerNm+="'s";
感謝您的重構。整齊 – bizl 2009-09-04 10:58:53
我不一定會評論它。這是很清楚的。
如果你對它做出評論,你應該解釋一下爲什麼你是這樣做的。
例如爲:
/* Don't add "'s" for names ending on "s"
(request by Important Customer in June 1978) */
所有評論,除了那些公共API,應該回答「爲什麼」的問題。我可以閱讀代碼來了解你做了什麼,但我想知道你爲什麼這樣做,或者甚至完成了。 – 2009-09-01 15:47:17
//Apply genitive case
string customerNm = customerNm.EndsWith("s") ? customerNm+= "'" : customerNm+="'s";
我會用「不工作」發表評論吧。因爲您在分配給它之前訪問'customerNm'。 (您使用「customerNm + = ...」表示:創建一個新的字符串實例作爲舊實例[尚未分配]和...)的串聯。
這甚至不應該被編譯。
我想你的意思是:
customerNm += customerNm.EndsWith("s") ? "'" : "'s";
其中customerNm是前一次已經被分配給一個字符串。
不是你問的問題,但它看起來像你的代碼違反grammar rules。
一個名稱不應該被當作複數名詞來對待,因爲它以's'結尾。例如,如果詹姆斯有一隻狗,那就是詹姆斯的狗,而不是詹姆斯的狗。但是,如果兩個叫邁克的生命夥伴有一條狗,那麼它就是米克斯的狗。例外:如果多音節名稱以「ess」或「ezz」聲音結尾,則可以將其視爲「s」中的複數結尾。如果Linus有一條狗,它可以是Linus的狗,儘管我相信Linus也是可以接受的。
有趣。感謝您的鏈接 – bizl 2009-09-04 11:01:40
大聲笑!我用錯誤的語法糾正了你的語法!最後一段,「as」代替「an」和「than」代替「then」。我要離開它。諷刺。 – 2009-09-04 12:15:41
我希望您確切地知道您的應用程序永遠不會被本地化爲除英語之外的任何語言...... – 2009-09-01 18:33:29
這可能是對的。但客戶現在不在意 – bizl 2009-09-04 10:57:24