我们的子公司的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/