ValueTuple 命名约定

37
在为ValueTuple元素命名时,它们应该大写还是小写?
(string Name, int Index) rec;

或者

(string name, int index) rec;

编辑:

看起来惯例是使用帕斯卡命名法

参见:https://github.com/dotnet/runtime/issues/27939#issuecomment-531420515

编辑2:

我选择始终使用驼峰命名法。我认为'ValueTuple'只是一个用于从函数中返回多个值的值集合,几乎不用作状态,我总是更喜欢使用records


10
为了与Tuple的属性Item1Item2保持一致,应该将其大写。 - Jasen
8
不幸的是,这似乎将成为冲突建议的来源。在我看到的所有代码示例中,C#语言团队一直偏爱(string name, int index)。不幸的是,BCL团队似乎打算采用(string Name, int Index)。希望他们会重新考虑,我们可以都同意前者是“正确”的选择。 - David Arno
6
@Jasen,元组在底层是Tuple结构体只是一种实现细节。在我看来,这并不是使用元组语法的CamelCase写法的合理理由,因为它隐藏了这个实现细节。 - David Arno
5
即使是微软的核心开发者也无法就命名约定达成一致。他们唯一的共识是,ValueTuple 可能不应该用于公共 API。在其他地方,名称并不是很重要。 - Panagiotis Kanavos
3
虽然现在可能被认为是“主观性较强”的,但它不应该是这样的,并且应该重新开放。在C#中,建议的命名约定大多已经明确定义,我认为这只是一个暂时的例外。 - Josh Noe
显示剩余5条评论
1个回答

9

把元组看作是变量的集合,因此惯例是使用驼峰命名法。


2
那对于类似 List<(int index, string name)> 这样的情况是否仍然适用呢?在这种情况下,它更像是一个结构体而不是一组变量。 - kofifus
3
元组是一组值/变量的集合。List<(int index, string name)> 是一组变量集合的列表。 - Paulo Morgado
2
+1元组的设计原则之一是它们应该与参数列表相对应——再次,就像一个变量的集合。 - jnm2
25
我不同意。他们应该使用 Pascal case。重要的是元组值的使用方式。调用者使用它们就像公共字段或属性一样,对于调用者来说,它们在 Tuple 中而不是 Class 中的事实是无关紧要的。在这里使用驼峰式命名法是匈牙利表示法(Hungarian notation)我个人认为应该避免。 - Josh Noe
8
https://github.com/dotnet/corefx/issues/33553 - Paulo Morgado
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接