Watch the full video on YouTube.
Guard Clause is a nice trick to reduce nested if statements in your codes.
Let’s say we have this rudimentary UserLogIn
. Our eyes will look up and down constantly just to read this whole code.
private static void UserLogIn(bool hasUsername, bool hasPassword, bool isAdmin)
{
if (hasUsername)
{
Console.WriteLine("Username");
if (hasPassword)
{
Console.WriteLine("Password");
if (isAdmin)
{
GoToAdminPage();
}
else
{
GoToWelcomePage();
}
}
else
{
Console.WriteLine("No Password Found.");
}
}
else
{
Console.WriteLine("No Username Found.");
}
}
Now, to simplify this, we can:
Add a !
here beside this hasUsername
, and move this whole block outside, and put this line beneath our new if statement. While deleting the last else
. And add a return
.
if (!hasUsername)
{
Console.WriteLine("No Username Found.");
return;
}
Console.WriteLine("Username");
// Whole block goes here.
In this way, we can exit our method far more quickly while checking if our hasUsername
is false or not. This way, our code is far cleaner and easier to read.
Now, we can also do the same with the other nested if statements.
if (!hasPassword)
{
Console.WriteLine("No Password Found.");
return;
}
Console.WriteLine("Password");
if (!isAdmin)
{
GoToWelcomePage();
return;
}
GoToAdminPage();
And when debug, we can see that it really works.
Alternatively, instead of adding a return
here, we can throw
our own Exception
.
if (!hasUsername)
{
throw new Exception("No Username Found");
}
Console.WriteLine("Username");
if (!hasPassword)
{
throw new Exception("No Password Found");
}
Console.WriteLine("Password");
But for Unity users, this will cause a headache to your game if used for gameplays, and other intensive mechanics, so this is not recommended.
And there you have it, we made this whole if-else statement from unreadable mess into a clean, and readable code.
Here's the final code you can view on GitHub Gist.
Thanks for reading! 📖
Making free programming blogs like this takes a long time of planning, writing, and editing. You can help me through support by: Buying me a Ko-fi ☕.
Check out my YouTube channel for more coding tutorials. Happy coding everyone! 🧡
Top comments (2)
Good job it definitely looks better. If you haven’t checked out pattern matching it could help reduce your code a bit more. learn.microsoft.com/en-us/dotnet/c...
Thanks for the nice comment. Quite new to Pattern Matching so will check that C# feature out.