首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请教这段代码还能再提取出来方法吗

2013-07-08 
请问这段代码还能再提取出来方法吗? private static void GetHCPInfo(){try{string json HttpUtil.GetJs

请问这段代码还能再提取出来方法吗?


 private static void GetHCPInfo()
        {
            try
            {
                string json = HttpUtil.GetJson("");   //请求链接得道json数据

                if (!string.IsNullOrEmpty(json))
                {
                    JsonClientReceive jsonData = JsonUtil.Deserialize<JsonClientReceive>(json.Replace("\", ""));
                    if (jsonData.success)
                    {
                        DataTable dt = new DataTable();
                        List<ClientReceive> list = (List<ClientReceive>)jsonData.data;
                        if (list.Count > 0)
                        {
                            dt = iPower.Common.Common.ListToDataTable<ClientReceive>(list);

                        }
                        Log.Debug(string.Format("获取{0}条数据", list.Count));
                        DBMethod(dt, @"DC.Proc_Interface_Hcp", "@BPIDTable");
                    }
                    else


                    {
                        Log.Debug(jsonData.error);
                    }
                }
            }
            catch (Exception e)
            {

                Log.Error(e);
            }
        }


上面的代码是多个方法中的其中一个,其他几个方法里面的操作很多就是跟这个一样的,我想着能不能把这里面的操作再提取出来另立一个方法呢?要怎么做呢?
[解决办法]
不知道你的业务逻辑,如果你这段代码中连接是可变的,那么就把连接当作这个函数的一个参数,如果需要返回数据集供ui使用,那么就定义返回类型为datatable并返回dt
[解决办法]
提取json字符串到Datatable可以封装一个公共的方法

[解决办法]
这个是根据需要来的。
如果有很多方法中有同样的代码,为了提高重用性,你可以提取出来。
如果为了逻辑更清楚,你也可以把一部分代码提取出来。
如果为了使方法体不至于那么臃肿,你也可以提取一部分出来。

你给出的代码,如果你想提取。可以提取很多。不过我认为二楼的建议不错。
[解决办法]
你直接把相同的部分提取出来,然后把变化的部分作为参数,然后调用的时候只要通过传入参数的方式来区分了。
[解决办法]
 DataTable dt = new DataTable();
                        List<ClientReceive> list = (List<ClientReceive>)jsonData.data;
                        if (list.Count > 0)
                        {


                            dt = iPower.Common.Common.ListToDataTable<ClientReceive>(list);
 
                        }
                        Log.Debug(string.Format("获取{0}条数据", list.Count));
                        DBMethod(dt, @"DC.Proc_Interface_Hcp", "@BPIDTable");

热点排行