关闭

测试驱动开发实践——重构篇

发表于:2009-6-22 11:25

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:51Testing博客    来源:51Testing博客

  前一篇文章测试驱动开发实践-入门篇》我们我们讲了一些基本的测试驱动开发流程:

  1、写单元测试使他亮红灯

  2、写代码使测试变成绿灯

  3、重构代码

  接下来我们需要开始重构了,大家有可能会问,为什么需要重构,什么时候开始重构。

  对与为什么需要重构,其实就是为了使代码结构清晰,去除一些重复的代码,比如我们执行sql语句操作,我们起初这样写:

Code
 1private connStr="server=.;database=TestDB;uid=sa;pwd=123"
 2public int Add(string loginName)
 3{
 4    int count = 0;
 5    using (SqlConnection conn = new SqlConnection(connStr))
 6    {
 7        conn.Open();
 8        SqlCommand cmd = new SqlCommand("insert(loginName) value('" + loginName + "')", conn);
 9        count = cmd.ExecuteNonQuery();
10        cmd.Dispose();
11        conn.Close();
12    }
13    return count;
14}
15
16public int Delete(string loginName)
17{
18    int count = 0;
19    using (SqlConnection conn = new SqlConnection(connStr))
20    {
21        conn.Open();
22        SqlCommand cmd = new SqlCommand("delete from LoginUsers where loginName='" + loginName + "'", conn);
23        count = cmd.ExecuteNonQuery();
24        cmd.Dispose();
25        conn.Close();
26    }
27    return count;
28}

  我们发现这里除了sql语句不一样之外,其他都是一样的,那我们就可以这样重构:

 1private int ExecuteSql(string sql)
 2{
 3    int count = 0;
 4    using (SqlConnection conn = new SqlConnection(connStr))
 5    {
 6        conn.Open();
 7        SqlCommand cmd = new SqlCommand(sql, conn);
 8        count = cmd.ExecuteNonQuery();
 9        cmd.Dispose();
10        conn.Close();
11    }
12    return count;
13}
14public int Add(string loginName)
15{
16    return ExecuteSql("insert(loginName) value('" + loginName + "')");
17}
18public int Delete(string loginName)
19{
20    return ExecuteSql("delete from LoginUsers where loginName='" + loginName + "'");
21}

  这样重构完之后,代码是不是清晰了很多呢?
31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号