不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
分享几个重载函数设计思路
编辑:dnawo 日期:2014-04-01
复制内容到剪贴板
程序代码

public class HttpHelper
{
public static string Get(string url, Encoding encoding)
{
string result = string.Empty;
//todo
return result;
}
}
{
public static string Get(string url, Encoding encoding)
{
string result = string.Empty;
//todo
return result;
}
}
以上面的类为例,若不考虑实用性,对url和encoding两个参数进行组合,Get方法可以有3个重载:
复制内容到剪贴板
程序代码

public static string Get(string url);
public static string Get(Encoding encoding);
public static string Get(string url, Encoding encoding);
public static string Get(Encoding encoding);
public static string Get(string url, Encoding encoding);
显然,Get方法url参数必不可少,第2个重载方法缺少了url则实用性不高,所以:重载函数设计要兼顾到实用性。
再来看url参数,它的值是不固定的,经常变化,每次调用Get方法时都得传入;encoding参数则不一样,它只有有限的几个值,其中UTF-8又最为常用,因而它可以赋于默认值并省略,所以:值变化大的参数在每个重载方法中应该有,值变化不大的参数可以省略(使用默认值简化输写)。
改进后的HttpHelper类:
复制内容到剪贴板
程序代码

public class HttpHelper
{
/// <summary>
/// 重载1
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static string Get(string url)
{
return Get(url, Encoding.UTF8);
}
/// <summary>
/// 重载2
/// </summary>
/// <param name="url"></param>
/// <param name="encoding"></param>
/// <returns></returns>
public static string Get(string url, Encoding encoding)
{
string result = string.Empty;
//todo
return result;
}
}
{
/// <summary>
/// 重载1
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static string Get(string url)
{
return Get(url, Encoding.UTF8);
}
/// <summary>
/// 重载2
/// </summary>
/// <param name="url"></param>
/// <param name="encoding"></param>
/// <returns></returns>
public static string Get(string url, Encoding encoding)
{
string result = string.Empty;
//todo
return result;
}
}
重载1中Encoding默认使用Encoding.UTF8,用户不能对它进行修改,这样对于经常抓取非utf-8页面的用户来说,TA将不得不每次都使用重载2传入Encoding,所以:省略的参数的默认值用户应该是可配置的。
再次改进后的的HttpHelper类:
复制内容到剪贴板
程序代码

public class HttpHelper
{
/// <summary>
/// 默认Encoding
/// </summary>
public static Encoding DEFAULTENCODING = Encoding.UTF8;
/// <summary>
/// 重载1
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static string Get(string url)
{
return Get(url, DEFAULTENCODING);
}
/// <summary>
/// 重载2
/// </summary>
/// <param name="url"></param>
/// <param name="encoding"></param>
/// <returns></returns>
public static string Get(string url, Encoding encoding)
{
string result = string.Empty;
//todo
return result;
}
}
{
/// <summary>
/// 默认Encoding
/// </summary>
public static Encoding DEFAULTENCODING = Encoding.UTF8;
/// <summary>
/// 重载1
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static string Get(string url)
{
return Get(url, DEFAULTENCODING);
}
/// <summary>
/// 重载2
/// </summary>
/// <param name="url"></param>
/// <param name="encoding"></param>
/// <returns></returns>
public static string Get(string url, Encoding encoding)
{
string result = string.Empty;
//todo
return result;
}
}
或许你和我一样不太喜欢在代码中特意去设置默认值,另一种方法是将默认值保存在配置文件中:
复制内容到剪贴板
程序代码

public class HttpHelper
{
/// <summary>
/// 默认Encoding
/// </summary>
private static readonly Encoding DEFAULTENCODING = Encoding.GetEncoding(ConfigurationManager.AppSettings["Encoding"] ?? "UTF-8");
/// <summary>
/// 重载1
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static string Get(string url)
{
return Get(url, DEFAULTENCODING);
}
/// <summary>
/// 重载2
/// </summary>
/// <param name="url"></param>
/// <param name="encoding"></param>
/// <returns></returns>
public static string Get(string url, Encoding encoding)
{
string result = string.Empty;
//todo
return result;
}
}
{
/// <summary>
/// 默认Encoding
/// </summary>
private static readonly Encoding DEFAULTENCODING = Encoding.GetEncoding(ConfigurationManager.AppSettings["Encoding"] ?? "UTF-8");
/// <summary>
/// 重载1
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static string Get(string url)
{
return Get(url, DEFAULTENCODING);
}
/// <summary>
/// 重载2
/// </summary>
/// <param name="url"></param>
/// <param name="encoding"></param>
/// <returns></returns>
public static string Get(string url, Encoding encoding)
{
string result = string.Empty;
//todo
return result;
}
}
评论: 0 | 引用: 0 | 查看次数: 2904
发表评论
请登录后再发表评论!