我们的子公司的IT部门有一家咨询公司,为他们编写了ASP.NET应用程序。现在,在混淆当前用户的身份时遇到了间歇性问题,并且众所周知,该用户错误地向Joe显示了Bob的一些数据。

顾问们被带回进行故障排除,我们被邀请听取他们的解释。突出了两件事。

首先,顾问负责人提供了以下伪代码:

void MyFunction()
{
    Session["UserID"] = SomeProprietarySessionManagementLookup();
    Response.Redirect("SomeOtherPage.aspx");
}

他继续说, session 变量的分配是异步的,这似乎是不正确的。授予对lookup函数的调用可以异步执行某些操作,但这似乎是不明智的。

考虑到所谓的异步性,他的理论是在引发重定向不可避免的ThreadAbort异常之前未分配 session 变量。然后,这种故障使SomeOtherPage无法显示正确的用户数据。

第二,他举了一个他推荐的编码最佳实践的例子。而不是写:
int MyFunction(int x, int x)
{
    try
    {
        return x / y;
    }
    catch(Exception ex)
    {
        // log it
        throw;
    }
}

他推荐的技术是:
  int MyFunction(int x, int y, out bool isSuccessful)
  {
    isSuccessful = false;

    if (y == 0)
        return 0;

    isSuccessful = true;

    return x / y;
  }

从性能的角度来看,这肯定会起作用,并且在某些情况下可能会更好。

但是,从这些以及其他讨论的观点来看,在我们看来,这个团队并不精通技术。

意见?

最佳答案

我会同意的。这些家伙似乎很无能。

(顺便说一句,我要检查一下是否在“SomeProprietarySessionManagementLookup”中,他们使用的是静态数据。看到了它-行为与您几个月前继承的项目中所描述的完全一样。我们终于看到了... ...希望我们能与编写它的人面对面...)

关于c# - 该ASP.NET顾问知道他在做什么吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/164468/

10-10 19:08