程序员首页投稿(暂停使用,暂停投稿)编程语言爱好者

C++代码书写规范——给新手程序员的一些建议

2016-06-12  本文已影响6500人  拉普拉斯妖kk

代码就是程序员的面子,无论是在工作中在电脑上写程序代码还是在面试时在纸上写演示代码我们都希望写出整洁,优雅的代码。特别在工作中当我们碰到需要维护别人的代码,或者是多人参与一个项目大家一起写代码的时候,如果碰到一些丑陋的代码,我们还要看懂并且修改它的时候,那种难受,肯定会让我们回想起多年以前自己还是新手程序员的时候,写下的那些丑陋的代码,并且深深内疚于将它们留给了我们的后继者,不知道他们和它们是否还安好。所以,强调代码的规范性,写出整洁,优雅,可读性高的代码应该是成为一个合格的程序员的第一步。这里我就抛砖引玉,给大家一些关于C++代码规范性的一些建议。

一、关于添加空格和空行的一些建议

写代码的时候添加良好风格的空格和空行可以使代码看上去更整洁,布局更清晰。

1.空格

下面这段代码就会显得不优雅,看着有些别扭。

//不好的风格
void func (int a,int b,int c,int d)
{
    if(a>=0)
    {
        if(a>=b&&c>=d)
        {
            int * x = & a; 
            ...//doSomeThing();
        }
    }
}

我们希望将它改为这样。

//良好的风格
void func(int a, int b, int c, int d)//建议一,建议三
{
    if (a >= 0)//建议二,建议五
    {
        if ((a>=b) && (c>=d))//建议四
        {
            int *x = &a; //建议六
            ...//doSomeThing();
        }
    }
}

还有这样的for语句for (i = 0; i < 5; i ++),就属于空格滥用了,应该改为for (i=0; i<5; i++)

2.空行

当程序中没有空行时是这样的。

void func1()
{
    while (condition)
    {
        ...//doSomeThing();
        if (condition)
        {
            ...//doSomeThingRelated();
        }
        else
        {
            ...//doSomeThingRelated();
        }
        ...//doSomeThing();
    }
}
void func2()
{
    ...//doSomeThing();
}

而良好的空行不紧能使代码看上去更整洁,代码逻辑也会更清晰。

//良好的风格
void func1()
{
    while (condition)
    {
        ...//doSomeThing();

        if (condition)
        {
            ...//doSomeThingRelated();
        }
        else
        {
            ...//doSomeThingRelated();
        }

        ...//doSomeThing();
    }
}

void func2()
{
    ...//doSomeThing();
}

二、关于代码行格式的一些建议

//不好的风格
void func()
{
    int veryVeryLongWidth, veryVeryLongHeight;
    if ((veryVeryLongWidth > veryVeryLongHeight) || (veryVeryLongWidth < veryVeryLongHeight))doSomeThing();
}

过长的代码行无论是书写还是阅读对人来说都不是一个美好的体验,所以我们建议以上代码要这样写。

//良好的风格
void func()
{
    int veryVeryLongWidth; 
    int veryVeryLongHeight;
    if ((veryVeryLongWidth > veryVeryLongHeight)
      || (veryVeryLongWidth < veryVeryLongHeight))
    {
        doSomeThing();
    }
}

三、关于命名的一些建议

class Book; 
class ReadBook; 
void Draw(); 
void DrawImage();
int value;
void SetValueMode(int valueMode);
const int MAX = 100;
const int MAX_LENGTH = 100;
int g_maxValue;
static int s_maxValue;   
void Object::SetValue(int maxValue)
{
    m_maxValue = maxValue;
}

四、关于添加注释的一些建议

在C++中注释主要有两种,程序块的注释常采用“ /*…*/”,行注释一般采用“ //…”。注释主要用在3个地方。1、版权申明,2、函数说明,3、重要或复杂代码提示。对于前两种,每个人或者每个公司都有个人的规范和习惯,这里只要大家在公司内部统一即可。关于第三种给重要或复杂代码添加提示,我们有一下几点建议。

五、关于类中成员声明次序的一些建议

六、关于if语句中的变量“与零值比较”的一些建议

if (flag) // 表示 flag 为真
if (!flag) // 表示 flag 为假
if (value == 0)
if (value != 0)

也可以将0放在比较运算符前面。

if (0 == value)
if (0 != value)

这时如果将“==”写成“=”,编译器会报错。

if (x == 0.0) // 隐含错误的比较

修改为

const float EPSINON = 0.00001;
if ((x>=-EPSINON) && (x<=EPSINON))

其中 EPSINON 是允许的误差(即精度)。

if (p == NULL) // p 与 NULL 显式比较,强调 p 是指针变量
if (p != NULL)
上一篇 下一篇

猜你喜欢

热点阅读