编写代码,我是半路出家,没有哪位老师给出明确的建议怎么书写代码注释。所以,从来也没形成过自己的代码注释风格,汗颜。这一段时间在写PCI-CAN的驱动接口封装,感觉编写代码时候比较费力,绕路,有些基本性的编码技能需要改善。

1.代码注释

注释的目的是什么呢?代码是给人看的,给自己也给别人看。既然这样,注释应该简单、清晰、有用。这一点可以参加转载的文章编写易于理解代码的六种方式

注释是用中文还是英文呢?看习惯老外写的代码,总觉得中文注释别扭,表述不清晰,而且中文注释总是给你语法错误提示。结合自己的外语水平,还是用简单的英文注释。

什么地方加注释?

函数、全局变量、设计的数据结构、宏定义。其实准则很简单,你觉得,如果不加注释别人就比较费劲的理解时,就加注释。如果代码含义很清楚,变量名字一看就懂,那就没必要增加注释。少的注释不可取,多而乱的注释更加不可取。

编写代码的同时,增加注释。可能要说,编写代码后,很容易发现简单的错误,反过来修改代码,同时又得修改注释。那我认为,如果你没有想清楚自己的代码实现什么样的功能,输入输出关系,就最好在草稿纸上画一画,理清思路。然后再动键盘,这样其实大大的提高代码速度和代码设计能力。

 下边的函数注释风格值得推荐。

/******************************************************************************
*
* Function   :  canActivate
*
* Description:  send 0x20 can command to activate can devices.
*
* Parameters:   portHandle - contain pointers to pciDevice and MSG_BUF.
*
* Return:        V_SUCCESS
*                V_ERR_UNKOWN
*                V_ERR_WRONG_PARAMETER
*
*****************************************************************************/
Vstatus _stdcall canActivate(VportHandle portHandle)
{
    pciHandle* pDev=(pciHandle*)portHandle.pHandle;
    U8 portNum=portHandle.portIndex;
    if (pDev==NULL)
    {
        return V_ERR_WRONG_PARAMETER;
    }

    U8 cmd[5]={0xF0,0x02,0x20,0,0};
    cmd[3]=portNum;
    for (U16 i=0;i++;i<sizeof(cmd)-1)
    {
        cmd[4] = cmd[4] + cmd[i];
    }
    __send_cmd(pDev,cmd,sizeof(cmd));

    Vstatus rt=__wait_for_ack(&portHandle,(U8)0x20);

    return rt;
}

下边的数据结构设计注释风格,值得推荐。

// internal type,real works,input of most functions.
class pciHandle 
{
public:

    PLX_DEVICE_OBJECT plxHandle;    
    
    RV_Thread hThread;
    
    void* VaRAM;    // virtual offset of dual-static ram units in system space.
    
    void* VaSem;    // virtual offset of dual-static ram semaphores in system space.
    
    U8 portUsed;    // bit[0]indicate port1 is in use; bit[1] indicate port2 is in use
    
    MSG_BUF* pBufs[2];    // allocated when pci device opened. free when no port opened.
    
    CRITICAL_SECTION cs;    // can ports exclusively using pci device.
    
    U8 devIndex;    // pci device index,order by (bus,slot,function).

public:
    pciHandle();
    ~pciHandle();
};

2.代码编写风格

代码是给人看的,所以如果你编写了一行非常别扭的代码,连你自己每次看时候都非常小心,那么还是重新写,简单点好。如果是逻辑不清晰,在草稿纸上画一画;如果是语法晦涩,那么你就应该直接用最直白的方式,让别人看懂你的代码是干什么的。不要指望在代码风格上,向别人展现你对编程语言本身的高深理解,代码是给人看的,而不是圣经供人膜拜。

3.代码流程设计

切记,在你没想好你要写什么之前,不要轻易动键盘。很多时候,我们习惯在键盘上实验自己的想法,其实不如在草稿纸上画一画自己的想法。每个模块逐个捋一遍思路,看看关键数据结构的设计,关键函数流程的设计是不是合适。如果不合适,那好,继续在草稿纸上画。犯错误在草稿纸上,比敲击过一堆堆的代码返工好的多,省时间的多。

以上个人理解,待添加。

posted on 2014-03-26 14:23  木椅  阅读(232)  评论(0编辑  收藏  举报