我有以下代码:
if (Session["CurrentUrl"] != null & Session["CurrentHost"] != null)
我在很多地方使用它。我想知道是否有人能想出一种优化C#代码的方法,只是为了让事情更加清晰。
答案 0 :(得分:8)
这似乎是extension method的主要候选人:
public static class SessionExtensions
{
public static bool HasHostAndUrl(this HttpSessionState session)
{
return session["CurrentUrl"] != null && session["CurrentHost"] != null;
}
}
然后:
if (Session.HasHostAndUrl()) { /* ... */ }
答案 1 :(得分:5)
if (HostAndUrlExist()) {
...
}
public boolean HostAndUrlExist() {
return Session["CurrentUrl"] != null && Session["CurrentHost"] != null
}
答案 2 :(得分:2)
制作返回真或假的方法
答案 3 :(得分:1)
如果您经常使用会话变量组,请考虑将它们存储为对象而不是一组基本类型。
答案 4 :(得分:1)
您可以创建一个带有一个或多个字符串的方法,如下所示:
public boolean SessionObjectsPresent(params string[] names) {
foreach (var name in names) {
if (Session[name] == null) return false
}
return true;
}
if (SessionObjectsPresent("CurrentHost", "CurrentUrl")) {
// ...
}
当您需要为其他事情测试会话时,这种方法的好处变得明显:
if (SessionObjectsPresent("CurrentUser", "LastEditTime")) {
// ...
}
答案 5 :(得分:0)
几种改进方法,例如抽象具有有意义名称的方法,或者提取接口ISession
以使其更具单元可测试性。