zoukankan      html  css  js  c++  java
  • 代码重构的疑惑

    以前是用GotDotNet.ApplicationBlocks.Data  3.0版的访问类 以OleDb方式访问Oracle 817的.很好。
     
    但是在连Oracle 816时不稳定的一塌糊涂。所以打算用OracleClient来访问。重构代码。
     
    不过在重构时有两种方法。自己有点拿不定主意。
     
    以下是以前的封装函数。
     
    当时直接返回IDataReader类型的Reader.
     
    static public IDataReader ComFun_ExeReader(string Sql)
      {
       AdoHelper helper = GetAdoHelper("OleDb");
       IDataReader myreader=helper.ExecuteReader(GetConnectionString("OleDb"),CommandType.Text,Sql);
       return myreader;
      }
     
    重构方法1:
    生成一个OracleDataReader ,然后强制类型转化成IDataReader。这样以前一行代码都不用动就可以。但是不知类型转化上会不会出问题。粗粗试了一下好像可以。代码也能通。
     
     IDataReader ComFun_ExeReader(string Sql)
      {
       OracleConnection Conn=new OracleConnection("....");
       OracleCommand Cmd=new OracleCommand();
       Cmd.CommandText=Sql;
       Cmd.Connection=Conn;
       Conn.Open();
       OracleDataReader Reader= Cmd.ExecuteReader(CommandBehavior.CloseConnection);
       return (IDataReader)Reader;
      }
        但是如果可以这样easy的把OracleDataReader 转成IDataReader 的话。
        为什么大家在写代码时都大量的用与数据库相关的Reader,把自己的程序写的绑死到专用数据库上,弄的以后数据库转型都不好转。比如OracleDataReader ,还有mssqlserver的专用DataReader呢
        难到只是为了性能。????????????????。狂想不通呀。总不会说大家没想到这一点吧。:(不然为什么大家又要用专用的reader.
     
    重构方法2:
     
       就是直接返回OracleDataReader 。然后把所有用到封装函数的地方
    比如  IDataReader Reader=ComFun_ExeReader("select person_id,Person_name from person");
    转成  OracleDataReader Reader=ComFun_ExeReader("select person_id,Person_name from person");
    不过这样的工作量实在是大的要疯掉为止。
    要改动的代码行目前算了一下可能有252个cs要改。一共856个文件。
    就是用IDE的替换功能,也会把我吓得开始怀疑代码是否可以安全编译通过。
  • 相关阅读:
    由"跨域"引出的一个终极思想(jsonp)
    SQLAlchemy 使用教程
    rbac-基于角色的权限控制系统(8种常用场景再现)
    Django中间件 (middleware)
    tcp粘包问题原因及解决办法
    细说【json&pickle】dumps,loads,dump,load的区别
    python面向对象--快速入门
    python三大器(装饰器/生成器/迭代器)
    django神器 <自定义过滤器filter 和 标签tag>
    python 基础数据类型汇总
  • 原文地址:https://www.cnblogs.com/tongzhenhua/p/13612.html
Copyright © 2011-2022 走看看