Unity3d 什么是统一的良好命名约定?

Unity3d 什么是统一的良好命名约定?,unity3d,naming-conventions,Unity3d,Naming Conventions,我几乎是个团结的傻瓜。作为C++程序员,统一中的命名约定让我有点烦恼。而且强迫症发作让我发疯;) 对象有一个属性变换,该属性又有一个属性位置。 但必须通过在代码中使用小写字母编写transform.position来访问这些属性。这对我来说不是很直观。所以我想知道我如何看待它,以便更容易地避免并发症。通过快速查看变量,我应该使用哪些约定来告诉所有事情。Unity约定实际上相当简单:所有事情都是以Pascal大小写的,类型(类、结构、枚举)和方法以大写开头,字段和属性以小写开头。枚举值大写,常量小

我几乎是个团结的傻瓜。作为C++程序员,统一中的命名约定让我有点烦恼。而且强迫症发作让我发疯;)

对象有一个属性
变换
,该属性又有一个属性
位置

但必须通过在代码中使用小写字母编写
transform.position
来访问这些属性。这对我来说不是很直观。所以我想知道我如何看待它,以便更容易地避免并发症。通过快速查看变量,我应该使用哪些约定来告诉所有事情。

Unity约定实际上相当简单:所有事情都是以Pascal大小写的,类型(类、结构、枚举)和方法以大写开头,字段和属性以小写开头。枚举值大写,常量小写(通常)。 所以
ClassName
MethodName
myField
myProperty{get;set;}
MyEnum.CaseA
。。。就这样

例如,
Transform
是一个类,而
Transform
是该特定游戏对象/组件中
Transform
实例的访问器。 另外,
Transform
没有
Position
属性,它有一个
Position
属性(总是小写)

这或多或少是基于C#的约定和标准.NET库(MS对此有过介绍),除了标准.NET对公共/受保护的方法和属性使用大写,对私有使用小写(同样,通常;私有的内容更多地取决于编码人员的喜好)

作为旁注,对于任何语言的任何代码库,最好的方法总是遵循现有的约定。每一位经验丰富的程序员都会告诉你这一点。相信我,我理解强迫症,但在这种情况下,我建议你还是放手吧。 关于为什么一个约定优于另一个约定(根据定义,约定是任意的),几乎没有什么客观的论据,即使有,你也可以做的最糟糕的事情是混合使用几个约定,因为这样你就根本没有约定,永远不知道会发生什么


至少C#尝试标准化;我已经研究了几个C++代码库,但我没有看到一个共同的分母:<代码> UpCaseCassNeX[/COD],<代码> LoeCaseCassNeX[/COD],<代码> BuffeSeReSe> <代码>,<代码> TraseNoX,<代码>枚举>上> <代码>,或不…它很少是一致的,所以混合得越少越好。

我只是认为,当Inspector面板显示它的方式与代码中应该调用的方式不同时,这仍然有点误导。Inspector面板只是试图让类/属性名称看起来更易于人读。我不明白这怎么会引起问题。据我所知,Unity(和/或C#)使用的命名约定非常标准和直观。。。我想如果你试着去理解它们,你会很快习惯的。啊,这就是你所说的“位置”。。。是,检查员在单词(=大写字母)之间插入空格;它还删除了任何前导的m_3;,诸如此类的东西。这个过程被称为“nicifying”:检查器是为每个人准备的,而不仅仅是程序员;驼峰式大小写在历史上只是一种技巧,因为编译器不喜欢空格。。。但是人类有!空格总是比驼峰格和下划线更具可读性。我认为一个问题是,将Unity项目与其他(非Unity)库混合在一起,最终总是会将它们混合在一起——这对我来说是一个让我恼火的部分:)您无法保持所有内容的一致性。