您的位置:首页 > 其它

20130712--细节问题

2013-07-12 21:03 127 查看
代码效率问题!
实现一个功能,插入一个数组成员。

我写的:
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时间,这才是真正的节约时间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: