© 2026 Hedgehog Software, LLC

TwitterGitHubDiscord
More
CommunitiesDocsAboutTermsPrivacy
Search
Star
Setup for Free
C#C
C#•4y ago•
10 replies
phattanuki

✅ Design pattern for a method feels incorrect

I have made a small CLI application that does a few things related to my job. The CLI downloads the latest software packages from a NuGet feed and organizes them into the applications target directory in a neat way.

The recent command that I've implemented was a clean-up one, where it would delete the different test versions of our tools, files an folders alike.
After spending some time a design bubbled-up in the main private method of the command.

Did I make a mistake here? Is this a design pattern that I should follow or should I refactor the code to something else? It feels like that this is "not clean", as one method is basically a pipeline of different methods, with exit conditions.

I welcome any advice on the topic.

        private static async Task RunCleanUp(EriManager configuration, string selectedTool) {
            List<Tool> loadedTools = LoadValidTools(configuration, selectedTool); //private helper method to load the valid tools from our local configuration, selectedTool can be "all" to load all valid tools
            if (loadedTools.Count == 0) return;

            LogManager.EnviromentMessage("Setting up environment for [bold]collecting folder structure[/]\n");

            List<(string Tool, DirectoryInfo Directories)>? directories = DirectoryManager.GenerateFolderListForRemoval(configuration, loadedTools); //private static class to generate folder that are matching to a tool type
            if (directories is null || directories.Count == 0) return;

            Tree ansiTree = GenerateTreeForDirectories(loadedTools, directories);
            //In the Table each column is one Tool, where each row is a folder to be deleted.

            if (ansiTree is null) return;
       
            AnsiConsole.WriteLine();
            AnsiConsole.Write(ansiTree);

            if (LogManager.ConfirmationMessage("Delete the requested folder(s)?")) await RemovalProcess(directories);
        }
        private static async Task RunCleanUp(EriManager configuration, string selectedTool) {
            List<Tool> loadedTools = LoadValidTools(configuration, selectedTool); //private helper method to load the valid tools from our local configuration, selectedTool can be "all" to load all valid tools
            if (loadedTools.Count == 0) return;

            LogManager.EnviromentMessage("Setting up environment for [bold]collecting folder structure[/]\n");

            List<(string Tool, DirectoryInfo Directories)>? directories = DirectoryManager.GenerateFolderListForRemoval(configuration, loadedTools); //private static class to generate folder that are matching to a tool type
            if (directories is null || directories.Count == 0) return;

            Tree ansiTree = GenerateTreeForDirectories(loadedTools, directories);
            //In the Table each column is one Tool, where each row is a folder to be deleted.

            if (ansiTree is null) return;
       
            AnsiConsole.WriteLine();
            AnsiConsole.Write(ansiTree);

            if (LogManager.ConfirmationMessage("Delete the requested folder(s)?")) await RemovalProcess(directories);
        }
C# banner
C#Join
We are a programming server aimed at coders discussing everything related to C# (CSharp) and .NET.
61,871Members
Resources
Was this page helpful?

Similar Threads

Recent Announcements

Similar Threads

❔ Factory Design method pattern
C#CC# / help
3y ago
❔ Design Pattern
C#CC# / help
3y ago
Design pattern
C#CC# / help
4y ago
✅ Design Pattern Advice
C#CC# / help
3y ago