以下划线开头的变量
来源:互联网 发布:编程需要哪些数学知识 编辑:程序博客网 时间:2024/04/29 15:07
C++;
系统头文件里将宏名、变量名、内部函数名用 _ 开头就是为了避免与用户用的名字冲突。因为当你#i nclude系统头文件时,这些文件里的名字都有了定义,如果与你用的名字冲突,就可能引起各种奇怪现象。换句话说:我们写程序时一定不要用 _ 开头的名字,以免与系统头文件的名字冲突,产生奇怪的问题(很难debug、弄清楚,当心)。
Python:
核心风格:避免用下划线作为变量名的开始。
因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避免用下划线作为变量名的开始。一般来讲,变量名_xxx被看作是“私有的”,在模块或类外不可以使用。当变量是私有的时候,用_xxx 来表示变量是很好的习惯。因为变量名__xxx__对Python 来说有特殊含义,对于普通的变量应当避免这种命名风格。
"单下划线" 开始的成员变量叫做保护变量,意思是只有类对象和自类对象自己能访问到这些变量;而 "双下划线"开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。
以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用“from xxx import *”而导入;以双下划线开头的(__foo)代表类的私有成员;以双下划线开头和结尾的(__foo__)代表python里特殊方法专用的标识,如 __init__()代表类的构造函数。
c++
只是有些使用习惯符合命名标准,比如在我们自己写的类中,为了避免和成员函数名称重复,我们通常在类的成员变量前加上下划线。
C/C code class InitParamSetting { public: InitParamSetting();~InitParamSetting(); public: void ReadRegInfo(); void WriteRegInfo(); CString _localRecPath;//本地录像存放路径 int _maxLocalRecTime;//最大录像时间(以分钟为单位) CString _capPicPath;//抓图存放路径 CString _vedioWndLabel;//视频窗口标签 };
在我们自定义的类中,类的成员变量一般都加上前缀“_”,这样可以避免数据成员与成员函数的参数同名。
VC中TCHAR系列的C库函数都带_,
_t...这个是一般的命名规范,你可以采用也可以不采用
好像华为有这种规范,比如做ACE方面编程,你看ACE的源代码就是了。
如果内部使用的话定义函数为protected或者private就是了,没必要用_开头。主要是看个人的编程习惯。库函数内部的东西, 还要不要去弄。
另:最好不要轻易声明首字母为 _的变量。就是说库函数内部实现用了这些函数,因为很多时候一个库函数功能的实现完全放在这一个函数里面可能不合适,或者某些库函数有共用的代码,怎么办的呢,就设计函数供库函数的实现调用。加下划线用意是避免命名重复。如果文档没有明确提及用法之类,最好不要用,以免实现改变了导致程序行为出现变化。
以前就有过微软的内部函数被破解,然后被人公布使用了,美其名曰技巧...后来微软想要改变函数,本来是自己内部用的,只要改操作系统代码就可以,结果发现后多程序运行不起来了,最后没办法只好保留这些函数,再去设计新的函数来实现想要的功能。所以最好不要依赖实现,不要依赖没有形成文档的东西
自己定义的名字最好不要在前面加下划线,以免不小心和人家的函数重名~
原文地址:http://www.cnblogs.com/zhulin/archive/2011/12/27/2303398.html
- 以下划线开头的变量
- 定义以下划线开头的变量
- CSS 变量以数字开头以下划线开头的问题。
- 【C++】关于以下划线开头的变量名
- C语言允许以下划线开头的函数存在
- 只含有汉字、数字、字母、下划线不能以下划线开头和结尾正则表达式
- oracle字段名或表名可以以下划线开头吗?
- $开头的内置变量
- PHP中用下划线开头的变量含义
- PHP中用下划线开头的变量含义
- linux shell 以$开头的几个变量
- Javascript中以$开头的变量
- Python开发——带下划线的变量和函数
- 带下划线的变量名ios学习笔记
- python中带下划线的变量和函数
- html中 target 的所有 4 个值都以下划线开始。任何其他用一个下划线作为开头的窗口或者目标都会被浏览器忽略,因此,不要将下划线作为文档中定义的任何框架 name 或 id 的第一个字符。
- eclipse生成boolean型变量的getter是is开头
- JS变量传值以0开头的处理
- Centos破解root密码
- 骨骼动画(bones animation)
- jQuery无刷新多文件上传,批量上传,单独文件进度显示
- C++编程规范之16.避免使用宏
- C++中如何定义动态数组
- 以下划线开头的变量
- 待字闺中:括号匹配分析
- tiny扩充语法分析
- 串口 奇偶校验代码
- 论cin流与内存的关系
- MFC调用.exe等待进程结束。
- Wap打电话
- xcode5.0生成protobuf2.5 ios静态库的方法
- JAVA学习笔记----面向对象