一个属性的后备字段有什么标准的命名约定?

13

背景

我想遵循TypeScript最常用的命名约定。我注意到官方网站展示的 代码示例采用帕斯卡命名法(Pascal-case)表示类型和模块,而几乎所有其他地方都使用驼峰命名法(camel-case)

示例

我目前正在实现一个封装了后备值的属性:

class SomeClass {
    get status() {
        return statusBackingField;
    }
    set status(newValue: Status) {
        statusBackingField = newValue;
        //Do other work here
    }

    statusBackingField: Status;
}

问题

其他语言,例如C#和Java,似乎都有官方或事实上的标准惯例。在TypeScript中,是否有任何此类权威或事实上的标准惯例来命名后备字段?

注意

对于那些要关闭投票的人,请注意我并不想听取意见。我正在寻找上面总结的问题所要求的客观信息。

问题

属性的名称为status,在C#中,我通常会将该属性命名为Status,并将其后备值命名为status。由于约定是在属性中使用驼峰命名法,因此这样做行不通。我不确定我应该使用哪种惯例以保持与其他TypeScript代码的一致性。

3个回答

3

TypeScript没有代码约定标准。由于它是JavaScript的超集,遵循JavaScript代码约定可能是正确的方法。在这种情况下,您将使用带下划线前缀的属性_status。从习惯上讲,这也与编译器对编译后的箭头函数使用下划线前缀的_this和下划线前缀的_super用于超类相匹配。


在变量命名中一个好的原则是避免仅依赖大小写来区分变量 - 这就是为什么许多C#程序员使用 _name / Name 的约定,而不是 Name / name - Fenton

2
在C#和TypeScript中,我们使用private _status。在C#中,属性将为Status。如您所提到的,在TypeScript中它是status

在你的第二句话中,你是不是想说“属性”? - Sam
1
我正在寻找权威的推荐来源,比如微软,或者一些证据表明这种约定是事实上的标准。 - Sam
@Sam 这是Resharper设置的约定:https://dev59.com/-GMm5IYBdhLWcg3wO9Ly 生成的支持字段是 private type _name,你可以自己试试。 - basarat
这些示例看起来像是 C# 代码。我正在寻找在 TypeScript 代码中使用的标准命名约定的证据。 - Sam
1
@Sam TypeScript团队早就宣布他们想看看社区在推荐这种东西之前会做什么。虽然MS C#标准规定不应使用“_”作为私有字段的前缀,但越来越多的人认为这样做比依赖于在变量前加上“this.”更好,当存在冲突时。我认为下划线约定很可能会成为接受的标准,正如Basarat所说-但不要期望MS在这个阶段为您指定它。 - Fenton
显示剩余3条评论

0

我认为现阶段可以肯定地说,没有标准。

如果有人能够指出权威标准或事实上的标准证据,那么我可能会考虑接受他们的答案。


TypeScript手册建议使用_leadingUnderscore。在此处查看更多信息:https://www.typescriptlang.org/docs/handbook/classes.html#accessors。 - Emric Månsson

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