当我看到GNU库的实现(主要是libstdc ++)时,我可以看到命名中有重复的模式。模板类型名为export default class FlatListBasics extends Component {
constructor() {
super();
this.state = {
data: [
{key: 'Devin', done: true},
{key: 'Jackson', done: true},
{key: 'James', done: true},
{key: 'Joel', done: true},
{key: 'John', done: true},
{key: 'Jillian', done: false},
{key: 'Jimmy', done: true},
{key: 'Julie', done: true}
]
}
}
_renderRow(rowData) {
return <ListItem>
<CheckBox checked={rowData.item.done} onPress={
() => {
rowData.item.done = !rowData.item.done;
return rowData;
}
}/>
<Text> {rowData.item.key}</Text>
</ListItem>
}
render() {
return (
<FlatList
data={this.state.data}
renderItem={this._renderRow}
extraData={this.state}
/>
);
}
,成员具有前置_Tp
,一些令牌具有前置双下划线等。我试图找到有关命名约定的文档无济于事。 GNU有一个样式指南,代码中也跟着它,但更像是这个命名约定的一个子集。
您是否知道有关GNU gcc库实现的样式细节的任何文档?
提前致谢。
答案 0 :(得分:4)
下划线不是编码惯例&#34;而是避免与用户定义的宏等进行名称冲突。
来自https://www.gnu.org/software/libc/manual/html_node/Reserved-Names.html(这实际上是针对libc的,但我认为它也适用于libstdc ++):
除了本手册中记录的名称外,还有保留名称 包括所有外部标识符(全局函数和变量) 以下划线('_')和所有标识符开头,不管用途如何 以两个下划线或下划线后跟一个开头 大写字母是保留名称。这是图书馆和 头文件可以为内部定义函数,变量和宏 目的,没有与用户程序中的名称冲突的风险。
GNU网站还提供了有关其他保留名称的更多信息。 另请参阅this问题的答案。看起来C ++标准本身就决定了命名约定。
<强>更新强>
OP要求的信息似乎有点分散在不同的页面上。我将尝试总结下面最重要的几点:
首先,可以找到有关_T
或_M_
等名称的信息here。
摘录:
对于出现在标准标题中的非标准名称,我们是 约束使用以下划线开头的名称。这就是所谓的 &#34;丑化&#34 ;.惯例是:[...]
输入名称和模板形式参数名称:_ [A-Z] [^ _]。*
示例:_Helper _CharT _N
成员数据和函数名称:_M _。*
示例:_M_num_elements _M_initialize()
静态数据成员,常量和枚举:_S _。*
示例:_S_max_elements _S_default_value
进一步挖掘引导我到libstdc++ contributing page,在那里说:
GNU C ++库是GCC的一部分,遵循相同的开发 模型,因此适用一般规则for contributing to GCC。
按照上面的链接,您将进入GNU GCC贡献页面,其中显示(在编码标准下)
所有贡献必须符合GNU编码标准。有 GCC还有一些额外的编码约定;这些包括 文档和测试套件要求以及要求 代码格式化。
将退回不符合标准的提交内容 要求解决任何此类问题。帮忙 准备可以使用脚本的补丁 contrib/check_GNU_style.sh
这最终将导致GCC Coding Conventions,这是一般指导原则。
我希望这能提供更好的信息。