gpt4 book ai didi

c# - 这段代码有多糟糕?

转载 作者:太空狗 更新时间:2023-10-29 17:31:04 24 4
gpt4 key购买 nike

好吧,我是一个业余程序员,只是写了这个。它完成了工作,但我想知道它有多糟糕以及可以做出什么样的改进。

[请注意,这是 Graffiti CMS 的 Chalk 扩展。]

public string PostsAsSlides(PostCollection posts, int PostsPerSlide)
{
StringBuilder sb = new StringBuilder();
decimal slides = Math.Round((decimal)posts.Count / (decimal)PostsPerSlide, 3);
int NumberOfSlides = Convert.ToInt32(Math.Ceiling(slides));

for (int i = 0; i < NumberOfSlides; i++ )
{
int PostCount = 0;
sb.Append("<div class=\"slide\">\n");
foreach (Post post in posts.Skip<Post>(i * PostsPerSlide))
{
PostCount += 1;
string CssClass = "slide-block";

if (PostCount == 1)
CssClass += " first";
else if (PostCount == PostsPerSlide)
CssClass += " last";

sb.Append(string.Format("<div class=\"{0}\">\n", CssClass));
sb.Append(string.Format("<a href=\"{0}\" rel=\"prettyPhoto[gallery]\" title=\"{1}\"><img src=\"{2}\" alt=\"{3}\" /></a>\n", post.Custom("Large Image"), post.MetaDescription, post.ImageUrl, post.Title));
sb.Append(string.Format("<a class=\"button-launch-website\" href=\"{0}\" target=\"_blank\">Launch Website</a>\n", post.Custom("Website Url")));
sb.Append("</div><!--.slide-block-->\n");

if (PostCount == PostsPerSlide)
break;
}
sb.Append("</div><!--.slide-->\n");
}

return sb.ToString();
}

最佳答案

使用HtmlTextWriter 而不是 StringBuilder 来编写 HTML:

StringBuilder sb = new StringBuilder();
using(HtmlTextWriter writer = new HtmlTextWriter(new StringWriter(sb)))
{
writer.WriteBeginTag("div");
writer.WriteAttribute("class", "slide");
//...
}
return sb.ToString();

我们不想使用非结构化写入器来写入结构化数据。

将内部循环的主体分成一个单独的例程:

foreach(...)
{
WritePost(post, writer);
}

//snip

private void WritePost(Post post, HtmlTextWriter writer)
{
//write single post
}

这使得它可以测试并且更容易修改。

使用数据结构来管理 CSS 类等内容。

与其在额外的类名后面附加一个空格并希望一切都排在末尾,不如保留一个List<string>。根据需要添加和删除的类名,然后调用:

List<string> cssClasses = new List<string>();

//snip

string.Join(" ", cssClasses.ToArray());

关于c# - 这段代码有多糟糕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1570285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com