20130712--细节问题

代码效率问题!

实现一个功能,插入一个数组成员。


我写的:

int gw_cfm_md_set(const char *name, int level)
{
    int index = -1;
    int i = 0;
                                           
    for(i = 0; i < GW_CFM_MD_INSTANCES_NUM; ++i)
    {
        /* Check old */
        if(GW_CFM_MD_ACTIVE == gw_cfm_md[i].active)
        {
            if( 0 == strcmp(gw_cfm_md[i].md_name, name) )
            {
                index = i;
                break
            }
        }
        /* Set new */
        else
        {         
            gw_cfm_md[i].active = GW_CFM_MD_ACTIVE;
            if(name)
            {
                memcpy(gw_cfm_md[i].md_name, name, GW_CFM_MD_NAME_LEN);
            }
            gw_cfm_md[i].level = level;
            index = i;
            break;
        }
    }
    return index;
}



王荻写的:

int gw_cfm_md_set(const char *name, int level)
{
    int index = -1;
    int i = 0;
    /* Check old */
    for(i = 0; i < GW_CFM_MD_INSTANCES_NUM; ++i)
    {
        if(!strncmp(name, gw_cfm_md[i].md_name, GW_CFM_MD_NAME_LEN))
        {
            return i;
        }
    }
    /* Set new */
    for(i = 0; i < GW_CFM_MD_INSTANCES_NUM; ++i)
    {
        if(GW_CFM_MD_NON_ACTIVE == gw_cfm_md[i].active)
        {
            index = i;
            gw_cfm_md[i].active = GW_CFM_MD_ACTIVE;
            memcpy(gw_cfm_md[i].md_name, name, GW_CFM_MD_NAME_LEN);          
            gw_cfm_md[i].level = level;
            break;
        }
    }
    return index;
}

   我只用了一个for,效率高吧。


   等到用的时候就错了!如果数组下标用了0、1、2、3、4,删除了3之后,我想查找4。用我的代码,将会发现数组3没用,就会添加在数组下标3里,造成代码错误。

   所以,代码写完后,把自己当做使用人员,从各个角度考虑一下代码的可靠性,这样能省去很多的修改BUG时间,这才是真正的节约时间。



你可能感兴趣的:(无)