• 代码坏味道特别篇————Long parameter List 过长的参数列表


    刚开始学习编程时,老师说:讲方法所需要的东西都以参数的形式传入,那是我们好像还没学OO这个东东,要不就弄成全局变量,我擦,全局变量可牛逼了,刚开始学习的时候我们都在用全局变量,可是后来工作了,经理说不要用全局变量,我当时就有些醉了,突然间觉得就不会写代码了,其实我们可以用对象来解决这个问题,这样我们就不会开到过长的参数列表了

     1     private DataTable getSentInfo(string Pno, string Pname, string Psytle, string SentTime,string DealerNo,string DealerName)
     2     {
     3         string sqlStr = "select convert(decimal(18,2),round(sum(sc.Price*srd.SentNum ),2))as countPrice,sum(srd.SentNum) as num "
     4             + "from  LB_Sent_Rec sr inner join LB_Sent_RecDetail srd "
     5            + "on sr.SentID=srd.SentID inner join LB_Sale_Rec sc "
     6            + "on sc.SaleID=srd.SaleID where sc.cid='" + cidH.Value + "' and sc.Pno='" + Pno + "' and sc.Pname='" + Pname + "' and sc.PStyle='" + Psytle + "' "
     7            + "and sc.DealerNo='" + DealerNo + "' and sc.DealerName='" + DealerName + "' "
     8            + "and sr.SentTime between '" + SentTime + " 00:00:00' and '" + SentTime + " 23:59:59'";
     9         return DbHelperSQL.GetDataTable(sqlStr);
    10     }
    View Code

    使用对象后的代码

     1 public class Product
     2 {
     3     public Product()
     4     {
     5         //
     6         //TODO: 在此处添加构造函数逻辑
     7         //
     8     }
     9 
    10     public string Pno { get; set; }
    11     public string Pnamr { get; set; }
    12     public string Psytle { get; set; }
    13     public string SentTime { get; set; }
    14     public string DealerNo{get;set;}
    15     public string DealerName { get; set; }
    16 }
    View Code
     1  private DataTable getSentInfo(Product pr)
     2     {
     3     string  sqlStr = "select convert(decimal(18,2),round(sum(sc.Price*srd.SentNum ),2))as countPrice,sum(srd.SentNum) as num "
     4             + "from  LB_Sent_Rec sr inner join LB_Sent_RecDetail srd "
     5            + "on sr.SentID=srd.SentID inner join LB_Sale_Rec sc "
     6            + "on sc.SaleID=srd.SaleID where sc.cid='" + cidH.Value + "' and sc.Pno='" + pr.Pno + "' and sc.Pname='" + pr.Pnamr + "' and sc.PStyle='" + pr.Psytle + "' "
     7            + "and sc.DealerNo='" + pr.DealerNo + "' and sc.DealerName='" + pr.DealerName + "' "
     8            + "and sr.SentTime between '" + pr.SentTime + " 00:00:00' and '" + pr.SentTime + " 23:59:59'";
     9         return DbHelperSQL.GetDataTable(sqlStr);
    10     }
    View Code

    这样是不是更容易理解传入参数所表示的内容呢?

    这种方法书中叫 introduce Parameter Object

  • 相关阅读:
    org.apache.hadoop.hbase.MasterNotRunningException解决策略
    工作小记
    JSP_运维_JSP项目部署到server(适合0经验新手)
    ubuntu 12.04下编译安装nginx-1.9.3
    理解“属性”
    解密SVM系列(二):SVM的理论基础
    AlphaGo论文的译文,用深度神经网络和树搜索征服围棋:Mastering the game of Go with deep neural networks and tree search
    SOAPUI 測试Http 协义
    JavaScript深入系列15篇
    javascript运行机制之执行顺序详解
  • 原文地址:https://www.cnblogs.com/ITyueguangyang/p/4193744.html
Copyright © 2020-2023  润新知