刚开始学习编程时,老师说:讲方法所需要的东西都以参数的形式传入,那是我们好像还没学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 }
使用对象后的代码
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 }
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 }
这样是不是更容易理解传入参数所表示的内容呢?
这种方法书中叫 introduce Parameter Object