zoukankan      html  css  js  c++  java
  • 阅读<SQL语言艺术>实践二

    【摘要】

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

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

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

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

    举例:

    在信用卡付款的处理:

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

    2、检查信用卡是否过期

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

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

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

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

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

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

  • 相关阅读:
    什么是 Linux
    Java常用几种加密算法
    Java多线程
    SpringSecurity相关配置【SpringSecurityConfig】
    应用上下文配置【AppConfig】
    web.xml
    Web上下文配置【MvcConfig】
    SpringMVC4零配置--Web上下文配置【MvcConfig】
    HTML <meta> 标签 遇到<meta http-equiv="refresh" content="0; url=">详解
    java如何获取当前机器ip和容器port
  • 原文地址:https://www.cnblogs.com/GoGoagg/p/1908869.html
Copyright © 2011-2022 走看看