代码优化:检测bug与逻辑,提升代码安全性
这段代码看起来没有明显的bug,但可以进行以下优化:
- 在第一个if语句中,应该加上对obj是否为NULL的判断,避免出现悬挂指针的情况。
- 在第二个if语句中,应该使用恒等于(===)进行比较,避免类型转换带来的潜在问题。
- 在第四个if语句中,应该使用恒等于(===)进行比较,避免类型转换带来的潜在问题。
优化后的代码如下:
if (!obj || !clonep(obj))
{
write('物品已经消失了。\n');
return 1;
}
if (wiz_level(me) < 3 && obj->query('no_drop') === 1)
return notify_fail(obj->name() + '不能被丢弃。\n');
if (no_drop === 1)
return notify_fail(stringp(no_drop) ? no_drop : '这里东西丢弃下去也看不见。\n');
if (!wizardp(me))
{
switch ((string)obj->query('equipped'))
{
case 'worn':
tell_object(me, obj->name() + '必须脱下来才能丢掉。\n');
return 0;
case 'wielded':
tell_object(me, obj->name() + '必须解除装备才能丢掉。\n');
return 0;
}
}
原文地址: https://www.cveoy.top/t/topic/m5O5 著作权归作者所有。请勿转载和采集!