c、c++变量和函数命名规范

转自http://blog.csdn.net/k_shmily/article/details/52396869

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】类名和函数名用大写字母开头的单词组合而成。

    例如:

    class Node;      // 类名

    class LeafNode;    // 类名

    void Draw(void);   // 函数名

    void SetValue(int value); //  函数名

    对于成员函数,这里个人更倾向于opencv的编程风格,即成员函数的首字母小写。

    例如:

    class Node;      // 类名

    class LeafNode;    // 类名

    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

猜你喜欢

转载自blog.csdn.net/qq_39524140/article/details/79350858
今日推荐