hel*_*hod 19 bash coding-style function
当你看到你选择的Linux附带的bash函数时,你经常会看到private(在推荐意义上是私有的)函数是这样编写的:
__private_func() {
:
}
Run Code Online (Sandbox Code Playgroud)
所以,你首先想知道为什么不只是一个下划线(_)用于私有函数...然后你看到bash完成函数通常以一个下划线开始,通常用一个双下划线调用私有函数,就像之前的例子中一样:
_complete_func() {
__private_func
}
Run Code Online (Sandbox Code Playgroud)
我想知道的是:这是什么原因?是否有一些关于如何为私有函数添加前缀的约定?
cwg*_*gem 12
我查看了bash手册页和POSIX shell标准,但无法找到有关此命名约定的任何内容.也就是说,在C中使用下划线表示保留名称或内部名称.引用保留名称的libc手册:
除了本手册中记录的名称外,保留名称还包括以下划线('_')开头的所有外部标识符(全局函数和变量)以及所有标识符,无论使用哪个以下划线开头,或者下划线后跟一个下划线大写字母是保留名称
这种命名约定的主要逻辑是:
这样,库和头文件可以为内部目的定义函数,变量和宏,而不会有与用户程序中的名称冲突的风险
它还有一个好处,就是能够轻松地在"私有"和"公共"函数之间进行grep(我将其置于引号中,因为用户可以调用任何一种形式而不管命名).