C
C#2y ago
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);
}
5 Replies
Anton
Anton2y ago
looks good
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
phattanuki
phattanukiOP2y ago
hm, how come? I'm just curios, shouldn't you have these methods separated? they are all responsible for one thing, hence I made these statis methods the other commands call on these methods as well
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
phattanuki
phattanukiOP2y ago
ah, this was just a cut-out example of a command in a CLI application, also I'm more familiar with C# than other languages, hence why I'm using it the rest of the application is OOP based nonetheless, thank you
Want results from more Discord servers?
Add your server