我正在使用C ++编写游戏引擎,我有类似setColour的方法和使用英语语法的东西。虽然我在想C ++编译器大多使用英语(如果我错了就纠正我)以及大多数API如何使用美国语法,我是否应该顺其自然地继续语法程序员高级委员会的非官方标准或者是反叛者?
我不确定是哪一个。
答案 0 :(得分:27)
您应该使用美国拼写color
。 99%的代码使用此代码,甚至包括英国或澳大利亚英语使用者编写的大部分代码。如果你使用不同的东西,你(或使用你的代码的其他人)最终会忘记在某些时候使用哪些并犯下一个不必要的错误。
答案 1 :(得分:11)
是反叛者!跟你的母语一起去。
如果您想在美国人身上sop,,请提供错误拼写的封面功能(诙谐:但只要确保它们运行得足够慢以至于他们更喜欢使用正确的拼写)。< / p>
答案 2 :(得分:11)
我是英国人,我认为正确的做法是咬牙切齿并使用Color
。我通常不希望讲德语的程序员在公共API [*]中使用Farbe
,我不希望提供finalize
vs finalise
之类的替代拼写或localization
与localisation
。
编译器会指出任何错误,所以我认为提供事物的替代名称是错误的。想想看,它甚至可能会阻碍一些程序员,因为IDE自动完成将有更多的东西可以咀嚼。如果你要使用单个拼写单词“Color”是API中常见的单词,通常拼写没有“u”,那么任何其他方式拼写它都是故意的特质。它对任何人都没有帮助。
显然没有争论 - 如果你愿意,你可以调用你的函数method001
,method002
,代码仍然有用,所以Colour
相比之下是一个小怪癖。但是“古怪”和“厌恶”之间存在着微妙的界限。
[*]仅仅因为他发现它比Color
更具可读性,我的意思是。如果他根本不会说英语,他别无选择。
答案 3 :(得分:9)
您选择的命名约定并不重要。使用您更熟悉的形式,只要您保持一致,,无论是在您自己的代码中,还是与您合作的任何相关API。
答案 4 :(得分:5)
你选择哪个并不重要,但只要确保你保持一致。
答案 5 :(得分:5)
作为澳大利亚人,我有同样的考虑。
在工作中,我们不使用美国拼写,主要是因为我们拼写这种方式不是第二天性,所以如果我们坚持使用美国惯例,它(理论上)会花费更长的时间来编码,因为我们将永远不得不第二个猜测自己。这样做,我们似乎没有任何问题在我们的API和外部美国会议风格库之间跳跃,但如果您认为可能,那将需要考虑。
我相信你应该选择自然而然的事情,因为这对你来说会更容易。
如果这意味着坚持你的英国拼写,那就带着一丝骄傲去做;)
答案 6 :(得分:5)
我一直在使用他们在名为England的小岛上使用的疯狂拼写,原因有很多:
然而,主要是我编写C#,HTML,CSS,JS等。我可以保持顽固并使用我们自己的拼写,但所有这些语言都使用美国化的关键字和成员名称。我最终得到了一个血腥的tosh !
在我的 C#:
中public Color BrightenColour(Color colour); // eew, minging
或在我的 CSS :
中.greyColoured { color: gray; } /* not semantic? crikey! */
或我的 jQuery :
function serialiseForm() {
return $('input, textarea, select').serialize() // cor' blimey!
}
或我的 HTML :
<div align="center">Centre</div> <!-- goodness gracious me! -->
所以,今天,我终于放弃并在所有旧的传统拼写中进行了解决方案范围的查找替换。虽然我不喜欢我所有新的跨大西洋拼写,但我的代码现在更清晰了:D
帐簿浩!
答案 7 :(得分:3)
绝对最聪明的做法是选择一个约定并坚持使用它(以及记录它)。 C ++只“使用”少量保留关键字。其他一切都取决于你(但当然一个疯狂的命名惯例只会激怒那些追随你的人)。
但是,为了提出更一般的观点,绝对没有理由改变你习惯拼写的方式。我听说很多人继承了法语或德语注释的代码:现在 可能是维护方面的问题!
编辑:我认为所有答案都没有涉及到你应该坚持使用美国拼写的一个观点:在很多情况下(据我所知)美国拼写本身并没有收敛,例如: “参数化”与“参数化”(并注意我使用“z”,所以这两个都是美国拼写)。答案 8 :(得分:2)
作为加拿大人,我的规则是在标识符中使用“颜色”,在注释中使用“颜色”。例如:
/// <summary>Return the colour in CIE Lab space.</summary>
public GetLabColor() : double * double * double;
答案 9 :(得分:1)
为什么不将您的方法名称国际化。我为此提出两种选择。 *按以下方式命名你的方法'method1“,”method2“,并为不同的本地人提供不同的备忘单,这样英国人就会有method1 = setColour,而在美国,他们会看到method1 = setColor。
另一个选择是使用类似ASM的东西来重写jar文件中的类文件,这样对于美国人来说,这个方法是“setColor”,而在英国和其他英联邦他们看到“setColour”。这将消除对其他人建议的重复setColor / setColour的需要。