这是非常好的 C# 代码,并且在提供正确的 URL 时可以正常工作。但是通过降低代码的可读性,一切都只是在一行中完成。
这是代码:
return new StreamReader(WebRequest.Create(urlName).GetResponse().GetResponseStream()).ReadToEnd();
我只是想知道开发人员对这种写代码的捷径有什么看法
这是非常好的 C# 代码,并且在提供正确的 URL 时可以正常工作。但是通过降低代码的可读性,一切都只是在一行中完成。
这是代码:
return new StreamReader(WebRequest.Create(urlName).GetResponse().GetResponseStream()).ReadToEnd();
我只是想知道开发人员对这种写代码的捷径有什么看法
将其推入一个有名的方法中,并可能将其拆分,以便单个语句延伸到几行。我也可能会使用 WebClient:
return new WebClient().DownloadString(urlName);
不,这不是非常完美的 C# 代码。您应该处置 StreamReader,因此至少有一个using
声明:
using (StreamReader reader = new StreamReader(WebRequest.Create(urlName).GetResponse().GetResponseStream()) {
return reader.ReadToEnd();
}
通过将其分成更多行,该代码可能会获得一点可读性,但不是很多。
通常我更喜欢可读代码而不是紧凑代码。每行有一个语句使代码更易于阅读和理解。例如:
if (i <= 4) i = 4 - i;
将 if 语句放在一行中,将其中的代码放在单独的行上,这变得更具可读性,if 语句始终带有括号:
if (i <= 4) {
i = 4 - i;
}
当然,即使是紧凑形式,这段代码也具有相当的可读性,但代码越复杂,将每个语句放在单独的行中获得的收益就越多。
...哎呀。
有时我会将一些东西合并成一行,通常是在我将东西倾倒到流中时,但从来没有这么多。
如果定义只使用一次,大多数编译器(至少是 c++ 编译器)通常会内联变量定义,因此如果您一次性使用,请丢弃变量。您的 C# 编译器可能只是将其名称替换为其定义。
除了可读性问题之外,您还应该处置您正在使用的任何 IDisposble 对象。
一条语句!= 一行,您可以通过改进代码格式来提高可读性。当然,您不应该假设其他人使用高分辨率显示器。