1. 程式人生 > >c、c++變數和函式命名規範

c、c++變數和函式命名規範

Linux 和 window程式設計都有所接觸,經常不注意程式碼風格,有時候還會混用,這一點也是程式猿的大忌。

因此這裡總結一些簡單可行的命名規則,以便督促自己走上正道。

Windos:

    C 語言變數和函式命名規範: 關於C語言變數和函式命名規範 據考察,沒有一種命名規則可以讓所有的程式設計師贊同,程式設計教科書一般都不指定命名規則。命名規則對軟體產品而言並不是“成敗悠關”的事,我們不要化太多 精力試圖發明世界上最好的命據考察,沒有一種命名規則可以讓所有的程式設計師贊同,程式設計教科書一般都不指定命名規則。命名規則對軟體產品而言並不是“成敗 悠關”的事,我們不要化太多精力試圖發明世界上最好的命名規則,而應當制定一種令大多數專案成員滿意的命名規則,並在專案中貫徹實施。

    1. 共性規則

    本節論述的共性規則是被大多數程式設計師採納的,我們應當在遵循這些共性規則的前提下,再擴充特定的規則,如3.2節。

    【規則1-1】識別符號應當直觀且可以拼讀,可望文知意,不必進行“解碼”。

    識別符號最好採用英文單詞或其組合,便於記憶和閱讀。切忌使用漢語拼音來命名。程式中的英文單詞一般不會太複雜,用詞應當準確。例如不要把CurrentValue寫成NowValue。

    【規則1-2】識別符號的長度應當符合“min-length && max-information”原則。

    幾十年前老ANSI C規定名字不準超過6個字元,現今的C++/C不再有此限制。一般來說,長名字能更好地表達含義,所以函式名、變數名、類名長達十幾個字元不足為怪。那麼 名字是否越長約好?不見得! 例如變數名maxval就比maxValueUntilOverflow好用。單字元的名字也是有用的,常見的如i,j,k,m,n,x,y,z等,它們 通常可用作函式內的區域性變數。

    

    【規則1-3】命名規則儘量與所採用的作業系統或開發工具的風格保持一致。

    例如Windows應用程式的識別符號通常採用“大小寫”混排的方式,如AddChild。而Unix應用程式的識別符號通常採用“小寫加下劃線”的方式,如add_child。別把這兩類風格混在一起用。

    【規則1-4】程式中不要出現僅靠大小寫區分的相似的識別符號。

    例如:

    int x, X;    // 變數x 與 X 容易混淆

    void foo(int x);  // 函式foo 與FOO容易混淆

    void FOO(float x);

    【規則1-5】程式中不要出現識別符號完全相同的區域性變數和全域性變數,儘管兩者的作用域不同而不會發生語法錯誤,但會使人誤解。

    【規則1-6】變數的名字應當使用“名詞”或者“形容詞+名詞”。

    例如:

    float value;

    float oldValue;

    float newValue;

    【規則1-7】全域性函式的名字應當使用“動詞”或者“動詞+名詞”(動賓片語)。類的成員函式應當只使用“動詞”,被省略掉的名詞就是物件本身。

    例如:

    DrawBox();  // 全域性函式

    box->Draw(); // 類的成員函式

    【規則1-8】用正確的反義片語命名具有互斥意義的變數或相反動作的函式等。

    例如:

    int minValue;

    int maxValue;  

    int SetValue(…); 

    int GetValue(…);              

    【建議1-1】儘量避免名字中出現數字編號,如Value1,Value2等,除非邏輯上的確需要編號。這是為了防止程式設計師偷懶,不肯為命名動腦筋而導致產生無意義的名字(因為用數字編號最省事)。

    2. 簡單的Windows應用程式命名規則

    作者對“匈牙利”命名規則做了合理的簡化,下述的命名規則簡單易用,比較適合於Windows應用軟體的開發。

    【規則2-1】類名和函式名用大寫字母開頭的單詞組合而成。

    例如:

    classNode;      // 類名

    classLeafNode;    // 類名

    voidDraw(void);   // 函式名

    voidSetValue(int value); //  函式名

    對於成員函式,這裡個人更傾向於opencv的程式設計風格,即成員函式的首字母小寫。

    例如:

    classNode;      // 類名

    classLeafNode;    // 類名

    void    draw(void);   // 函式名

    void    setValue(int value); //  函式名


    【規則2-2】變數和引數用小寫字母開頭的單詞組合而成。

    例如:

    BOOL flag; 

    int drawMode;

    【規則2-3】常量全用大寫的字母,用下劃線分割單詞。

    例如:

    const int MAX =  100; 

    const int MAX_LENGTH =  100;

    【規則2-4】靜態變數加字首s_(表示static)

    例如:

    void Init(…)      {

    static  int s_initValue; // 靜態變數

    …     

    }

    【規則2-5】如果不得已需要全域性變數,則使全域性變數加字首g_(表示global)。

    例如:

    int g_howManyPeople;    // 全域性變數

    int g_howMuchMoney;    // 全域性變數

    【規則2-6】類的資料成員加字首m_(表示member),這樣可以避免資料成員與成員函式的引數同名。

    例如:

    void  Object::SetValue(int width, int height)

    {

    m_width = width;

    m_height = height;

    }

    【規則2-7】為了防止某一軟體庫中的一些識別符號和其它軟體庫中的衝突,可以為各種識別符號加上能反映軟體性質的字首。例如三維圖形標準OpenGL的所有庫函式均以gl開頭,所有常量(或巨集定義)均以GL開頭。

Linux/Unix:

aaa

自己的規則:

類(結構)的定義:
例如:

class ImageAlg 

    int sharpenImage();

    int m_imageThreshold;

}; 或者 
class CImageAlg
{
    int sharpenImage();
    int m_imageThreshold;
 }
結構體定義:

例如:
typedef struct _test
{

    ...
} Test;

普通函式定義:

int readFile();//windos

int read_file();//linux

變數定義:
global     g_aaa_bbb;
static      s_aaa_bbb;
const      c_aaa_bbb;
pointer   p_aaa_bbb;
struct      t_aaa_bbb;

標頭檔案:

#ifndef _IMG_PROC_H
#define _IMG_PROC_H

....

#endif

通用簡寫表

縮 寫 全 稱
addr Address
adm Administrator
app Application
arg Argument
asm assemble
asyn asynchronization
avg average
DB Database
bk back
bmp Bitmap
btn Button
buf Buffer
calc Calculate
char Character
chg Change
clk Click
clr color
cmd Command
cmp Compare
col Column
coord coordinates
cpy copy
ctl / ctrl Control
cur Current
cyl Cylinder
dbg Debug
dbl Double
dec Decrease
def default
del Delete
dest / dst Destination
dev Device
dict dictionary
diff different
dir directory
disp Display
div Divide
縮 寫 全 稱
dlg Dialog
doc Document
drv Driver
dyna Dynamic
env Environment
err error
ex/ext Extend
exec execute
flg flag
frm Frame
func / fn Function
grp group
horz Horizontal
idx / ndx Index
img Image
impl Implement
inc Increase
info Information
init Initial/Initialize/Initialization
ins Insert
inst Instance
INT / intr Interrupt
len Length
lib Library
lnk Link
log logical
lst List
max maximum
mem Memory
mgr / man Manage / Manager
mid middle
min minimum
msg Message
mul Multiply
num Number
obj Object
ofs Offset
org Origin / Original
param Parameter
pic picture
pkg package
pnt / pt Point
pos Position
pre / prev previous
縮 寫 全 稱
prg program
prn Print
proc Process / Procedure
prop Properties
psw Password
ptr Pointer
pub Public
rc rect
ref Reference
reg Register
req request
res Resource
ret return
rgn region
scr screen
sec Second
seg Segment
sel Select
src Source
std Standard
stg Storage
stm Stream
str String
sub Subtract
sum summation
svr Server
sync Synchronization
sys System
tbl Table
temp / tmp Temporary
tran / trans translate/transation/transparent
tst Test
txt text
unk Unknown
upd Update
upg Upgrade
util Utility
var Variable
ver Version
vert Vertical
vir Virus
wnd Window



相關推薦

cc++變數函式命名規範

Linux 和 window程式設計都有所接觸,經常不注意程式碼風格,有時候還會混用,這一點也是程式猿的大忌。 因此這裡總結一些簡單可行的命名規則,以便督促自己走上正道。 Windos:     C 語言變數和函式命名規範: 關於C語言變數和函式命名規範 據考察,

csdn學習筆記:lua擴充套件c程式 c/c++訪問lua變數函式

aa.lua teacher = "guilinwang"; org = "nzhsoft"; object = "lua"; age = 28; tab = { teacher = "guilinwang_tab", org = "nzhsoft_tab",

C++】C語言static變數函式

使用 static 修飾的變數或函式的作用域僅限於當前模組,對其他模組隱藏,利用這一特性可以在不同的檔案中定義同名的變數或函式,而不必擔心命名衝突。 static 除了可以修飾全域性變數,還可以修飾區域性變數,被 static 修飾的變數統稱為靜態變數(Static

C語言中變數函式的宣告與定義

一、變數在將變數前,先解釋一下宣告和定義這兩個概念。宣告一個變數意味著向編譯器描述變數的型別,但並不為變數分配儲存空間。定義一個變數意味著在宣告變數的同時還要為變數分配儲存空間。在定義一個變數的同時還可以對變數進行初始化。 區域性變數通常只定義不宣告,而全域性變數多在原始檔中定義,在標頭檔案中宣告。 區域性變

C中全域性變數函式宣告的認識

在C中可以定義全域性變數,全域性變數是在程式載入初始化時分配空間並進行初始化。在c程式碼中定義/宣告全域性變數的方式如下 1. int n;     定義或者宣告(如果在其他檔案中已定義)全域性變數。 2. int n = 10;     定義全域性變數並初始化。 3.

C語言的變數函式與java的屬性方法有什麼區別

想要了解面向物件和麵向過程的區別,一般從最基本的封裝,繼承,多型入手 封裝性 變數和方法的區別:c語言的變數只有區域性變數和全域性變數,沒有訪問修飾符,但java的屬性可以有訪問修飾符(public ,private等),增加了訪問許可權,java沒有全域性變數,方法同理。

FreeRTOS變數函式命名規則

1、變數名         在 FreeRTOS 中,定義變數的時候往往會把變數的型別當作字首加在變數上,這樣的 好處是讓使用者一看到這個變數就知道該變數的型別。 c :  char 型變數. s : sho

C語言靜態變數靜態函式

static C語言        C語言程式可以看成由一系列外部物件構成,這些外部物件可能是變數或函式。而內部變數是指定義在函式內部的函式引數及變數。外部變數定義在函式之外,因此可以在許多函式中使用。由於C語言不允許在一個函式中定義其

混合編譯:c++檔案呼叫c檔案變數函式c檔案呼叫c++檔案變數函式

1.c++檔案呼叫c檔案變數和函式 前言:以前見到extern "C"這樣的語句,只是簡單地知道跟外部連結有關,但是沒有深刻理解它的意思。 首先,為什麼要使用extern "C"修飾符? C++呼叫其它語言的函式,由於編譯器生成函式的機制不一樣,所以需要經過特殊處理,才可以

c++記憶體模型,變數函式

1、c++中方法 儲存在單獨的方法表中,fuction——table,類中有方法指標來指向方法表中方法的實際地址,static和nonstatic 方法都儲存在方法表中。 2、c++中類的物件的 成員變數存在class中,static 變數儲存在class之外。 3、c++的成員指標式類似slot 插槽式設

CC++中經const修飾的常量變數普通變數的區別

1.在C89標準下的const const 修飾的型別是一個常變數,不能作為陣列的下標。常變數不能作為左值。 如: const int a = 10; int b = a; //其編譯的過程和一般變數編譯的過程相同 //並不會把引用符號的地方替換為對應的資

C++ 模板類中的static變數函式 初始化

關鍵詞: C++ 模板 static 變數 函式  初始化 這篇文章主要介紹關於模板類中如果有static變數如何初始化問題。 重要:如果不初始化static變數,那麼編譯可能沒有問題,但是程式有問題,可能編譯有問題,但是不能確定是初始化問題。 #include"ios

C++是定義全域性變數函式常用方法.

1:在標頭檔案是宣告變數,然後在使用的檔案中用exten標識。 ".h":int ntemp;".cpp":exten int ntemp; 2:定義一個全域性變數類,使用時包含標頭檔案即可: "GlobalVar.h"Class CGlobalVar{        

CC++Java,AIHDOI

c++和java ++ 安全 思維方式 編譯 繼承 編程語言 健壯性 包含 C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。 盡管C語言提供了許多低級處理

C++必備基礎知識編程規範

C++C++必備基礎知識和編程規範C語言是面向過程的程序設計,強調程序的執行順序,自上而下,而C++是面向對象的程序設計,將程序看做多個對象組成,每個對象有自己的屬性(變量)和行為(函數)。2.屬性是描述對象特征的數據,行為是對象能進行的操作,如英雄聯盟裏每一個英雄都有自己的屬性(生命值,法力值,防禦力,攻擊

Ubuntu下怎麽編譯並運行CC++Pascal語言?

tro 開始 用戶 步驟 ide gcc 但是 col inf 很多同學在安裝了Ubuntu的環境後,發現在Windows下的許多東西都打不開了,但是用網站上的在線IDE又不是很方便。 所以,ljn教你如何在Ubuntu下編譯並運行C、C++和Pascal。 一.編譯並

C++靜態全域性變數全域性變數的區別

    靜態全域性變數 非靜態全域性變數 儲存方式 靜態儲存 靜態儲存 作用域 定義該變數的原始檔內 所有原始檔   解釋: 共同點:

C#中靜態變數 靜態方法

C#中靜態變數和 靜態方法 static節省了構造物件時造成的效能損耗,其次還能用於一些特殊環境(如惡漢式單例) 但是由於靜態成員在程式載入之前就進入記憶體,直到程式結束才會銷燬,所以 在程式中如果大量使用static來宣告型別或成員,也會造成系統資源的浪費。 一般靜態的就代表全域性。表示任何類

C++中預設引數函式過載

預設引數概念:        預設引數是宣告或定義函式時為函式的引數指定一個預設值,在呼叫該函式時,如果沒有指定實參則採用該預設值,否則使用指定的實參。 舉例說明: #include<malloc

C#】靜態變數方法該如何使用?

什麼是靜態變數? 簡單的來說就是:用static修飾的變數,它屬於它所在的類所有,而不是具體的某一個物件。 靜態變數也被稱為全域性變數,就是它在程式執行的時候就被初始化,如果你在它初始化或使用的時候,沒有給它賦值,系統就會給它一個預設值。   靜態方法同理,簡單瞭解一下