代码的重构(Refactor-Extract)

1、vs中的代码重构快捷方式:Refactor-Extract;

选中两个需要重构的部分完整代码,右击,选中Refactoe-Extract-Extract Method;

该选中的代码会自动形成一个Execute()方法,自己修改方法名就OK啦。

2、下面说一下我的具体代码修改:这个是两个方法中执行了相同的INSERT语句,所以将它整合成一个方法;这样后续有修改或者改动时,会方便很多,也便于代码阅读。

 1 //APP端(插入T_UserBookingTraining)
 2 public int SubscribeIntentionMajor(int courseId, int shareUserId, string name, string phoneNum, string intentionMajor)
 3         {
 4             var type = 1;
 5             string tidSql = @"
 6 IF EXISTS(
 7         SELECT   tcl.TrainingInstitutionId
 8         FROM    dbo.T_Course tc
 9         LEFT JOIN dbo.T_Class tcl ON tc.ClassId = tcl.Id
10         WHERE  tc.Id = @cid)
11         SELECT  tcl.TrainingInstitutionId
12         FROM    dbo.T_Course tc
13         LEFT JOIN dbo.T_Class tcl ON tc.ClassId = tcl.Id
14         WHERE  tc.Id = @cid
15 ELSE
16     SELECT 0";
17             var tid = DbTopOnline.ExecuteScalar<int>(tidSql, new { cid = courseId });
18 
19             return InsertUserBookingTraining(shareUserId, name, phoneNum, intentionMajor, tid, type);
20         }
1 //官网端(插入T_UserBookingTraining)
2 public int SubscribeIntentionMajorFromWebSite(string phoneNum, int tid)
3         {
4             var shareUserId = 0;
5             var name = phoneNum;
6             var intentionMajor = "来自官网的意向";
7             var type = 2;
8 return InsertUserBookingTraining(shareUserId, name, phoneNum, intentionMajor, tid, type); 9 }
 1 //重构出来的代码(主要执行INSERT操作)
 2 private int InsertUserBookingTraining(int shareUserId, string name, string phoneNum, string intentionMajor, int tid, int type)
 3         {
 4             string userIdSql = @"
 5 SELECT
 6     tu.Id 
 7 FROM
 8     dbo.T_User tu 
 9 WHERE
10     tu.TrainingInstitutionId = @tid 
11     AND Name = 'admin' 
12     AND IsDel=0
13     AND IsUsed=1";
14             var userId = DbTopManager.ExecuteScalar<int>(userIdSql, new { tid });
15 
16             string sql = @";
17 IF EXISTS(SELECT * FROM T_UserBookingTraining WHERE Phone = @phoneNum AND TrainingInstitutionId = @tid )  --判断手机号
18     BEGIN
19             UPDATE   dbo.T_UserBookingTraining
20             SET      Intention = @intentionMajor, UserName = @name
21             WHERE    Phone = @phoneNum            
22     END
23 ELSE
24     BEGIN
25         INSERT INTO dbo.T_UserBookingTraining
26                     ( TrainingInstitutionId ,
27                     TemplatId ,
28                     SceneId ,
29                     Type ,
30                     UserId ,
31                     ShareUserId ,
32                     Phone ,
33                     UserName ,
34                     Intention ,
35                     ProgressStatus ,
36                     IsDel ,
37                     IsUsed ,
38                     CreateTime
39                     )
40             VALUES  ( @tid, -- TrainingInstitutionId - int
41                     0 , -- TemplatId - int
42                     0 , -- SceneId - int
43                     @type , -- Type - tinyint
44                     @userId , -- UserId - int
45                     @uid, -- ShareUserId - int
46                     @phoneNum, -- Phone - nchar(11)
47                     @name, -- UserName - nvarchar(20)
48                     @intentionMajor, -- Intention - nvarchar(60)
49                     0 , -- ProgressStatus - tinyint
50                     0 , -- IsDel - bit
51                     1 , -- IsUsed - bit
52                     GETDATE()  -- CreateTime - datetime
53                     ) 
54     END";
55             return DbTopOnline.Execute(sql, new
56             {
57                 userId,
58                 uid = shareUserId,
59                 name,
60                 phoneNum,
61                 intentionMajor,
62                 tid,
63                 type
64             });
65         }

猜你喜欢

转载自www.cnblogs.com/Alioo/p/10132281.html