阅读<SQL语言艺术>实践二

【摘要】

SQL的进攻式编程{OffensiveCoding with SQL}

与之对应防御式编程Code defensively在开始处理之前先检查所有参数的合法性。

进攻式编程的本质特征是:以合理的可能性(reasonable probabilities)为基础。

比较二者:常规的编程都是采用防御式编程,用户录入什么,程序得检查录入是否合法,比如前台开发、业务逻辑开发;在数据库编程中,尽量同时做几件事情的进攻式编程有切实的优势(注意仅仅是针对据库编程。进攻式编程在数据库编程的前提是,以合理的假设基础上开发,定义错误集合。

举例:

在信用卡付款的处理:

1、检查提交的客户身份和卡号是否有效,以及二者是否匹配;

2、检查信用卡是否过期

3、检查当前的支付额是否超过信用卡额度。

4、通过上述检查后,才执行支付操作。

防御式编程,预先使用3个查询语句来检查这些信息;

进攻式编程,直接支付操作,条件必须满足上述3个前提;支持成功,@@RowCount=1;反之,@@RowCount=0,这个时候再查询一个错误集合,以特定的结论来判断是那个部分错误。

执行效率来说,进攻式编程要简洁、更节约时间

个人认为:无论防御还是进攻,都要以成功且二者输出一致作为最终判断;成功执行的基础上,考虑防御和进攻策略

posted @ 2010-12-17 09:59  西就东城  阅读(260)  评论(0编辑  收藏  举报