Conteúdo do Curso
C++ Conditional Statements
C++ Conditional Statements
Guard Clause
As applications become increasingly complex, the potential for bugs and errors also grows. To combat this, developers have turned to various techniques and practices to ensure code quality. One such technique that has gained prominence in recent years is the Clause Guard Technique.
Consider an application that verifies whether a user meets three conditions: being a student, having a premium account, and being connected. If and only if all these conditions are satisfied, the application will produce the output: Requirements satisfied
. Otherwise, log in the console the specific step where the initialization process fails.
You can achieve the desired outcome using nested if
statements, but this approach can make the code hard to understand and difficult to modify when you need to add new conditions. Look at the code snippet.
without_guard_clause
#include <iostream> int main() { bool isStudent = true; // Change it to false and see the output bool isPremium = true; bool isConnected = true; if (isStudent) { if (isPremium) { if (isConnected) { std::cout << "Requirements satisfied"; } else std::cout << "You are not connected\n"; } else std::cout << "You don't have premium\n"; } else std::cout << "You are not a student\n"; }
To apply the guard clause technique effectively, it's important to remember that we can terminate function execution at any moment by using the return
keyword. In this approach, we reverse our conditions, meaning that if a user is not a student, we immediately display a message and terminate the main
function. This is done to avoid nested if
tree and unnecessary execution of code when it serves no purpose.
with_guard_clause
#include <iostream> int main() { bool isStudent = true; // Change them to false and see the output bool isPremium = true; bool isConnected = true; if (!isStudent) { std::cout << "You are not a student\n"; return 0; } if (!isPremium) { std::cout << "You don't have premium\n"; return 0; } if (!isConnected) { std::cout << "You are not connected\n"; return 0; } std::cout << "Requirements satisfied"; }
The Clause Guard Technique is a powerful tool in the arsenal of software developers striving for code reliability, flexibility and safety. By implementing it developers can reduce the amount of errors, improve code maintainability, and enhance overall software quality.
Obrigado pelo seu feedback!