C# 和 Java 允许在类名、方法名、局部变量等中使用几乎任何字符。使用非 ASCII 字符是否是不好的做法,测试了糟糕的编辑器和分析工具的界限,并使某些人难以阅读,或者美国的傲慢是唯一反对的理由?

有帮助吗?

解决方案

我会坚持使用英语,因为您通常永远不知道谁在处理该代码,并且因为构建/测试/错误跟踪进度中使用的一些第三方工具可能存在问题。在非德语键盘上输入 äöüß 简直就是 PITA,我只是相信任何参与软件开发的人都应该说英语,但也许这只是我作为非英语母语人士的傲慢。

你所说的“美国式傲慢”不是你的程序是否使用国际变量名,而是你的程序认为“Währung”和“Wahrung”是同一个词。

其他提示

我想说这完全取决于谁在代码库上工作。

如果您有一小群使用共同语言的开发人员,并且您不打算需要任何不会说该语言的人来处理代码,那么请继续使用您想要的任何字符。

如果您需要让不同文化和语言的人来编写代码,那么最好坚持使用英语,因为它是世界上几乎每个人的共同点。

如果您的企业不讲英语,并且您认为领域驱动设计有其用处,那么还有另一个方面:作为开发人员,我们如何在不产生任何翻译开销的情况下使用与我们的业务相同的领域语言?

这不仅意味着英语和挪威语等语言之间的翻译,还意味着不同单词之间的翻译。我们应该对我们的实体类和服务使用与我们的业务完全相同的词语。

我发现屈服并使用我的母语更容易。现在我的代码使用相同的单词,与我的领域专家进行对话变得更容易。一段时间后,您就会习惯它,就像您习惯了没有匈牙利表示法的编码一样。

我曾经在一个开发团队中工作,他们很乐意用任何命名(以及任何其他编码)约定来擦屁股。不管你相信与否,必须处理代码中的 ä 和 ö 是我辞职的一个因素。虽然我是芬兰人,但我更喜欢使用美式键盘设置编写代码,因为在芬兰语键盘中编写大括号和方括号很麻烦(尝试使用右 alt 以及 7 和 0 来表示大括号)。

所以我说坚持使用 ascii 字符。

这是一个例子 我使用非 ASCII 标识符的地方,因为我发现它比用英文名称替换希腊字母更具可读性。尽管我的键盘上没有 θ 或 φ(我依靠复制粘贴。)

然而这些都是局部变量。我会将非 ASCII 标识符保留在公共接口之外。

这取决于:

  • 您的团队是否符合任何要求您使用 ASCII 的现有标准?
  • 您的代码是否会被不会说您母语的人重用或阅读?
  • 您是否设想过一种情况,您需要在线寻求帮助,因此无法按原样复制粘贴代码示例?
  • 您确定您的整套工具都支持代码编码吗?

如果您对上述任一问题的回答为“是”,请仅保留 ASCII。如果没有,请自行承担风险。

如果你过去了 其他先决条件 然后你就多了一个(恕我直言,更重要)一个 - 符号输入有多难。

在我的常规 en-us 键盘上,我知道输入字母 ç 的唯一方法是按住 alt,然后在数字键盘上按 0227,或者复制并粘贴。

这将是快速打字的一个巨大障碍。如果不是被迫的话,您不想因为这样的琐碎事情而减慢编码速度。国际键盘可能会缓解这种情况,但是如果您必须在没有国际键盘等的笔记本电脑上编码,会发生什么情况?

部分问题在于 Java/C# 语言及其库基于英语单词,例如 iftoString(). 。我个人不想在阅读代码时在非英语和英语之间切换。

但是,如果您的数据库、UI、业务逻辑(包括隐喻)已经采用某种非英语语言,则无需将每个方法名称和变量翻译成英语。

我会坚持使用 ASCII 字符,因为如果您的开发团队中有人使用仅支持 ASCII 的 SDK,或者您希望将代码开源,则可能会出现很多问题。就我个人而言,即使您不打算让任何不会说该语言的人参与该项目,我也不会这样做,因为您正在经营一家企业,而在我看来,经营一家企业的人会希望他的业务扩大,在当今时代意味着超越国界。我的观点是,英语是该领域的语言,即使您用不同的语言命名变量,在编程中使用任何非 ASCII 字符也几乎没有意义。如果您处理的是 UTF8 数据,则将其留给语言来处理:我的 iPhone 程序(涉及手机和服务器之间传输的大量用户数据)具有完整的 UTF8 支持,但源代码中没有 UTF8。打开这么一大堆蠕虫似乎几乎没有任何好处。

使用非 ASCII 字符还有另一个危险,尽管它可能只会在一些不起眼的情况下出现。允许的字符是 定义的 从方法上来说 字符.isJavaIdentifierStart(int)字符.isJavaIdentifierPart(int), ,它们是根据 Unicode 定义的。但是,所使用的 Unicode 的确切版本取决于 Java 平台的版本,如文档中指定的 java.lang.Character.

由于字符属性从一个 Unicode 版本到下一个版本略有变化,因此有可能(但可能非常不可能)您的标识符在一个 Java 版本中有效,但在下一版本中无效。

正如已经指出的,除非方法名称大多与语言匹配,否则在阅读时不断切换语言有点奇怪。

对于斯堪的纳维亚语言和德语,我可以说并代表它们,我至少建议使用标准替换,即。

ä/æ -> ae、ö/ø -> oe、å -> aa、ü -> ue

ETC。以防万一其他人可能会发现在不更改键盘/键盘映射的情况下很难输入原始字母。想象一下,如果您突然需要使用开发人员使用第三种语言(例如包括法语 ç)的代码库,但您没有这样做。根据我的经验,在 2 个以上的键盘映射之间切换以高效打字会很痛苦。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top