以下划线开头的变量
C++;
?系統頭文件里將宏名、變量名、內部函數名用?_?開頭就是為了避免與用戶用的名字沖突。因為當你#i nclude系統頭文件時,這些文件里的名字都有了定義,如果與你用的名字沖突,就可能引起各種奇怪現象。換句話說:我們寫程序時一定不要用?_?開頭的名字,以免與系統頭文件的名字沖突,產生奇怪的問題(很難debug、弄清楚,當心)。
?Python:
?核心風格:避免用下劃線作為變量名的開始。
?因為下劃線對解釋器有特殊的意義,而且是內建標識符所使用的符號,我們建議程序員避免用下劃線作為變量名的開始。一般來講,變量名_xxx被看作是“私有的”,在模塊或類外不可以使用。當變量是私有的時候,用_xxx?來表示變量是很好的習慣。因為變量名__xxx__對Python?來說有特殊含義,對于普通的變量應當避免這種命名風格。?
?"單下劃線"?開始的成員變量叫做保護變量,意思是只有類對象和自類對象自己能訪問到這些變量;而?"雙下劃線"開始的是私有成員,意思是只有類對象自己能訪問,連子類對象也不能訪問到這個數據。
?以單下劃線開頭(_foo)的代表不能直接訪問的類屬性,需通過類提供的接口進行訪問,不能用“from xxx import *”而導入;以雙下劃線開頭的(__foo)代表類的私有成員;以雙下劃線開頭和結尾的(__foo__)代表python里特殊方法專用的標識,如?__init__()代表類的構造函數。
?c++
?只是有些使用習慣符合命名標準,比如在我們自己寫的類中,為了避免和成員函數名稱重復,我們通常在類的成員變量前加上下劃線。
?
C/C codeclass 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
總結
- 上一篇: dos下截取字符串
- 下一篇: java中JFrame去掉边框设置背景