程序中的风险控制
在项目初期,项目组长一般都会建立TOP RISK LIST(风险清单),随着项目的推进,有些风险已经避免,或者发生转移,也有可能遇到新的风险。
较悲观的情况是,你意识到了风险在哪儿,且传达了足够的风险警告,但由于开发人员水平的限制,或者没有考虑到所有可能的情况,最终问题还是如期而至了。
在最近的项目中,就发生了类似的情况。最后决定在问题代码块,引入“风险控制”机制。
基本的策略是:
针对问题模块,用户的所有操作,写入数据库时只允许写入“经过正确处理的数据” 。即会导致DB中的数据错误的操作,先屏蔽掉,并记录到log,发送给相关人员。
风险控制伪代码:
function dataProcess($data)
{
……..; // data processing
if(validateResult($result))
{
return $result;
}else
{
writeLog($data);//将导致错误的$data记录至log文件,供完善程序用
sendReportMail();//报告错误情况。
return false;
}
}
function validateResult($result)
{
......;// result validate
}
上述方案虽然是在非常时期引入的。但后来发现,运用在项目开发和测试阶段也是很有帮助的:开发时增加上述报错机制后,可以提高开发效率,完善开发人员的思维;在测试阶段,分析bug原因变得非常直观,修改bug效率大大提高。