怎样才能写出尽可能让编译器找出潜在错误的代码?
2007-07-05 10:43
417 查看
这个疑问是我在进行以往一段代码的重构时碰到的。通过这次重构,代码对非法数据的兼容性和安全性提高了,但在编写的时候似乎更容易出错,而且这些错误是编译器无法帮助发现的。大家对比下面的代码段1和代码段2,代码段1是重构前的,代码段2是重构后的:
///代码段1,重构前
public static void Add(int uVenderID, int dupUVenderID)
{
string cmd = "insert into UploadCheckResult values({0},{1})";
cmd = string.Format(cmd, uVenderID, dupUVenderID);
new GEA52SqlExe().ExecuteNonQuery(cmd);
}
///代码段2,重构后
public static void Add(int uVenderID, int dupUVenderID)
{
string cmd = "insert into UploadCheckResult values(@uVenderID, @dupUVenderID)";
SqlParameter[] sqlParams = {
new SqlParameter("@uVenderID", uVenderID),
new SqlParameter("@dupUVenderID", dupUVenderID)
};
new GEA52SqlExe().ExecuteNonQuery(cmd, sqlParams);
}
可以看到,代码段1中基本上不会犯编译器无法检测出的错误,而代码段2的标红部分都是非常可能出拼写错误的地方。参考我上一篇随笔中对重构的描述,不知各位大牛能不能提出一些好的重构建议,让我的代码能尽量少的出现这种“编译盲区”呢?
///代码段1,重构前
public static void Add(int uVenderID, int dupUVenderID)
{
string cmd = "insert into UploadCheckResult values({0},{1})";
cmd = string.Format(cmd, uVenderID, dupUVenderID);
new GEA52SqlExe().ExecuteNonQuery(cmd);
}
///代码段2,重构后
public static void Add(int uVenderID, int dupUVenderID)
{
string cmd = "insert into UploadCheckResult values(@uVenderID, @dupUVenderID)";
SqlParameter[] sqlParams = {
new SqlParameter("@uVenderID", uVenderID),
new SqlParameter("@dupUVenderID", dupUVenderID)
};
new GEA52SqlExe().ExecuteNonQuery(cmd, sqlParams);
}
可以看到,代码段1中基本上不会犯编译器无法检测出的错误,而代码段2的标红部分都是非常可能出拼写错误的地方。参考我上一篇随笔中对重构的描述,不知各位大牛能不能提出一些好的重构建议,让我的代码能尽量少的出现这种“编译盲区”呢?
相关文章推荐
- 怎样才能写出高质量的代码呢?
- 请在下面的代码片段中找出可能有错误或有安全隐患的地方,并写出错误的原因。
- 怎样才能写出好的读书笔记
- android中修改framework层代码后怎样操作才能看到修改后的效果?
- 有一堆扑克牌,其中某张牌的张数超过了扑克牌总数的一半,请找到这张牌。写出算法思路、代码实现和算法的时间复杂度,要求算法尽可能高效。假设给定一个扑克牌的数组poker和它的大小n,请返回所求的扑克牌。
- 完成端口GetQueuedCompletionStatus()返回错误,怎样获得真正的错误代码
- android中修改framework层代码后怎样操作才能看到修改后的效果?
- 程序员怎样才能写出一篇好的技术文章
- 到底怎样才能把下面的Matlab代码变成VBA形式啊
- 什么是好代码,为什么要写好代码,怎样写出好代码
- [VB.NET]怎样才能用VB.NET的代码来关闭一个在运行的程序?????
- 毕业生怎样才能写出好简历
- 编译错误 编译器失败,错误代码为 1
- android中修改framework层代码后怎样操作才能看到修改后的效果?
- ios开发怎样才能做到代码和界面彻底分离,方便换肤?
- IIS网站打不开错误解决方案集锦(一):编译器错误消息: 编译器失败,错误代码为 -1073741502。
- 怎样写出令人抓狂的代码——全攻略(献给那些写代码纯图省事的亲们)
- 怎样用 Android Annotations 写出高性能代码
- 怎样写出较好的代码