代码坏味道特别篇————Long parameter List 过长的参数列表
刚开始学习编程时,老师说:讲方法所需要的东西都以参数的形式传入,那是我们好像还没学OO这个东东,要不就弄成全局变量,我擦,全局变量可牛逼了,刚开始学习的时候我们都在用全局变量,可是后来工作了,经理说不要用全局变量,我当时就有些醉了,突然间觉得就不会写代码了,其实我们可以用对象来解决这个问题,这样我们就不会开到过长的参数列表了
private DataTable getSentInfo(string Pno, string Pname, string Psytle, string SentTime,string DealerNo,string DealerName)
{
string sqlStr = "select convert(decimal(18,2),round(sum(sc.Price*srd.SentNum ),2))as countPrice,sum(srd.SentNum) as num "
+ "from LB_Sent_Rec sr inner join LB_Sent_RecDetail srd "
+ "on sr.SentID=srd.SentID inner join LB_Sale_Rec sc "
+ "on sc.SaleID=srd.SaleID where sc.cid='" + cidH.Value + "' and sc.Pno='" + Pno + "' and sc.Pname='" + Pname + "' and sc.PStyle='" + Psytle + "' "
+ "and sc.DealerNo='" + DealerNo + "' and sc.DealerName='" + DealerName + "' "
+ "and sr.SentTime between '" + SentTime + " 00:00:00' and '" + SentTime + " 23:59:59'";
return DbHelperSQL.GetDataTable(sqlStr);
}
使用对象后的代码
public class Product
{
public Product()
{
//
//TODO: 在此处添加构造函数逻辑
//
} public string Pno { get; set; }
public string Pnamr { get; set; }
public string Psytle { get; set; }
public string SentTime { get; set; }
public string DealerNo{get;set;}
public string DealerName { get; set; }
}
private DataTable getSentInfo(Product pr)
{
string sqlStr = "select convert(decimal(18,2),round(sum(sc.Price*srd.SentNum ),2))as countPrice,sum(srd.SentNum) as num "
+ "from LB_Sent_Rec sr inner join LB_Sent_RecDetail srd "
+ "on sr.SentID=srd.SentID inner join LB_Sale_Rec sc "
+ "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 + "' "
+ "and sc.DealerNo='" + pr.DealerNo + "' and sc.DealerName='" + pr.DealerName + "' "
+ "and sr.SentTime between '" + pr.SentTime + " 00:00:00' and '" + pr.SentTime + " 23:59:59'";
return DbHelperSQL.GetDataTable(sqlStr);
}
这样是不是更容易理解传入参数所表示的内容呢?
这种方法书中叫 introduce Parameter Object
代码坏味道特别篇————Long parameter List 过长的参数列表的更多相关文章
- 吐槽一下项目中的代码坏味道:滥用java常量
我们的项目中是否充斥着类似以下的代码呢?定义一个专门存放常量的java类(接口),非常多其它类依赖该常量类. public interface IConstant { int ZERO = 0; St ...
- Sonar项目主要指标以及代码坏味道详解
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6766994.html 众所周知Sona ...
- 单元测试系列之四:Sonar平台中项目主要指标以及代码坏味道详解
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6766994.html 众所周知Sona ...
- 代码重构 & 代码中的坏味道
1.重构 1.1 为什么要重构 1.1.1 改进程序设计 程序员为了快速完成任务,在没有完全理解整体架构之前就开始写代码, 导致程序逐渐失去自己的结构.重构则帮助重新组织代码,重新清晰的体现 程序结构 ...
- 代码的坏味道(14)——重复代码(Duplicate Code)
坏味道--重复代码(Duplicate Code) 重复代码堪称为代码坏味道之首.消除重复代码总是有利无害的. 特征 两个代码片段看上去几乎一样. 问题原因 重复代码通常发生在多个程序员同时在同一程序 ...
- SonarQube规则之坏味道类型
1.Abbreviation As Word In Name (默认 关闭)坏味道 主要检查验证标识符名称中的缩写(连续大写字母)长度,还允许执行骆驼案例命名allowedAbbreviationLe ...
- 代码的坏味道(4)——过长参数列(Long Parameter List)
坏味道--过长参数列(Long Parameter List) 特征 一个函数有超过3.4个入参. 问题原因 过长参数列可能是将多个算法并到一个函数中时发生的.函数中的入参可以用来控制最终选用哪个算法 ...
- 【转】Bad Smell(代码的坏味道)
1.Duplicated Code(重复的代码) 臭味行列中首当其冲的就是Duplicated Code.如果你在一个以上的地点看到相同的程序结构,那么当可肯定:设法将它们合而为一,程序会变得更好. ...
- 代码的坏味道(17)——夸夸其谈未来性(Speculative Generality)
坏味道--夸夸其谈未来性(Speculative Generality) 特征 存在未被使用的类.函数.字段或参数. 问题原因 有时,代码仅仅为了支持未来的特性而产生,然而却一直未实现.结果,代码变得 ...
随机推荐
- 读propert文件
PropertiesUtil.java package utils; import java.io.BufferedInputStream; import java.io.FileInputStrea ...
- JavaScript学习之窗口
窗口 一.Window 对象 Window 对象表示浏览器中打开的窗口.如果文档包含框架(frame 或 iframe 标签),浏览器会为 HTML 文档创建一个 window 对象,并为每个框架创建 ...
- iOS UPYUN(又拍云)使用总结
UPYUN,原来没用过,上个周用了一次,觉得蛮方便的,对于个人开发者,且没有服务器的,上传图片和文件,是个不二选择. 首先,先明白原理: 1.又拍云有一个上传空间,在这个空间里,有空间名称.密钥,其他 ...
- JS-005-常见下拉列表 Select 和 datalist
下拉列表在我们日常的网页浏览的过程中,随处可见,是 web 编程过程中大家非常熟悉的一个页面元素,随着 HTML 语言的日益强大,其在广大攻城狮的手中可谓是千变万化,有了很多不同的实现方式.本文主要以 ...
- c#上传文件(一)使用 .net 控件上传文件
1.html代码: <body> <form id="form1" runat="server"> <div> <as ...
- 树莓派连接wifi
使用树莓派,通过无线网卡连接wifi,再通过远程桌面或者ssh的连接树莓派比较方便,本文记录树莓派wifi如何设置. 参考链接: http://www.jianshu.com/p/b42e8d3df4 ...
- Interview with BOA
1. BFS 2. QuickSort 3. PCA, 1000 articles, so many factors, how to reduce factors. 4. newton's metho ...
- SQLPlus Error handle
SQLPlus directive "WHENEVER SQLERROR EXIT 1" will return a specified code when any SQL err ...
- iOS:创建Siri 功能
前奏: iOS 10 出来之后,我们开发者也可以使用类似Siri的功能.它是使用Siri里面的一个语音识别框架Speech framework来处理siri的.现在, 让我们来看看 一些 主要的代码吧 ...
- [BS-15] Values of type 'NSInteger' should not be used as format arguments
Values of type 'NSInteger' should not be used as format arguments 苹果app支持arm64以后会有一个问题:NSInteger变成64 ...