C# 有更好的写法吗?

标签 c# asp.net readability

int uploadsID;
int pageNumber;
int x;
int y;
int w;
int h;

bool isValidUploadID = int.TryParse(context.Request.QueryString["uploadID"], out uploadsID);
bool isValidPage = int.TryParse(context.Request.QueryString["page"], out pageNumber);
bool isValidX = int.TryParse(context.Request.QueryString["x"], out x);
bool isValidY = int.TryParse(context.Request.QueryString["y"], out y);
bool isValidW = int.TryParse(context.Request.QueryString["w"], out w);
bool isValidH = int.TryParse(context.Request.QueryString["h"], out h);

if (isValidUploadID && isValidPage && isValidX && isValidY & isValidW & isValidH)
{

这是一个 ajax 处理程序,检查所有传递的参数是否正常。这被认为是不好的,是否有更好的方式来编写它,或者它不是那么重要?

最佳答案

假设您不打算在别处使用单独的 bool 变量,您可以将其写为:

int uploadsID, pageNumber, x, y, w, h;
if (int.TryParse(context.Request.QueryString["uploadID"], out uploadsID) &&
    int.TryParse(context.Request.QueryString["page"], out pageNumber) &&
    int.TryParse(context.Request.QueryString["x"], out x) &&
    int.TryParse(context.Request.QueryString["y"], out y) &&
    int.TryParse(context.Request.QueryString["w"], out w) &&
    int.TryParse(context.Request.QueryString["h"], out h))
{
}

您可能希望将 int.TryParse(context.Request.QueryString[name], out variable 提取到一个单独的方法中,留下如下内容:

int uploadsID, pageNumber, x, y, w, h;
if (TryParseContextInt32("uploadID", out uploadsID) &&
    TryParseContextInt32("page", out pageNumber) &&
    TryParseContextInt32("x", out x) &&
    TryParseContextInt32("y", out y) &&
    TryParseContextInt32("w", out w) &&
    TryParseContextInt32("h", out h))
{
}

或者,您可以使用 TryParse 方法将所有这些上下文数据封装到一个新类型中,这样您就可以得到如下内容:

PageDetails details;
if (PageDetails.TryParse(context.Request.QueryString))
{
    // Now access details.Page, details.UploadID etc
}

这显然需要更多工作,但我认为这会使代码更清晰。

关于C# 有更好的写法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4943304/

相关文章:

java - 如何在属性文件的数值中包含 _?

java - 多个返回语句,可读性

c# - 如何提取使用 streamreader 发送给我的单行?

c# - 数据驱动的单元测试 - CSV 编码有问题吗?

ASP.NET 电子邮件发送缓慢

c# - 如何让静态类不断更新自己的变量?

java - 我应该更喜欢代码的可读性而不是安全性吗?

c# - 如何交换字符串变量中的两个字符?

c# - CSV 字符串处理

asp.net - 我们可以在一个网页中使用多种表单吗?