From e89252bb71ce103b1fcc2cea041a89d0b6b88e7d Mon Sep 17 00:00:00 2001 From: Minecon724 Date: Sat, 8 Feb 2025 16:00:44 +0100 Subject: [PATCH] refactor: use StringBuilder in RSS generation - Replaced string concatenation with StringBuilder for efficiency. - Moved DateTimeFormatter to a static final field to improve reusability and readability. - Improved structure and readability of RSS generation logic. Signed-off-by: Minecon724 --- src/main/java/eu/m724/blog/data/Feed.java | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/java/eu/m724/blog/data/Feed.java b/src/main/java/eu/m724/blog/data/Feed.java index 97dd9d5..2210d88 100644 --- a/src/main/java/eu/m724/blog/data/Feed.java +++ b/src/main/java/eu/m724/blog/data/Feed.java @@ -4,6 +4,8 @@ import java.time.format.DateTimeFormatter; import java.util.List; public class Feed { + private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss zzz"); + /** * Generates an RSS feed XML string for a given website and its list of blog posts. * @@ -12,16 +14,22 @@ public class Feed { * @return a {@code String} containing the formatted RSS feed in XML */ public static String generateRss(Site site, List posts) { - var content = ""; - content += "%s%s".formatted(site.name(), site.baseUrl()); + var content = new StringBuilder(""); + content.append(""); + content.append("%s".formatted(site.name())); + content.append("%s".formatted(site.baseUrl())); - var formatter = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss zzz"); for (var post : posts) { - content += "%s%s/post/%s.html%s%s".formatted(post.title(), site.baseUrl(), post.slug(), post.summary(), post.createdAt().format(formatter)); + content.append(""); + content.append("%s".formatted(post.title())); + content.append("%s/post/%s.html".formatted(site.baseUrl(), post.slug())); + content.append("%s".formatted(post.summary())); + content.append("%s".formatted(post.createdAt().format(formatter))); + content.append(""); } - content += ""; + content.append(""); - return content; + return content.toString(); } }