Niet echt duidelijk over wat je hier vraagt. Uw pseudocode toont de methode Login() die wordt aangeroepen door de constructor van uw klasse. Als dit echt de werking van uw code is, moet u voorkomen dat nieuwe instanties van deze klasse worden gemaakt om te voorkomen dat u opnieuw aanmeldt.
Ik denk echter dat je echt vraagt naar het Arrow anti-patroon:
http://codinghorror.com/blog/2006/01/flattening-arrow -code.html
Bewerken
I was trying to avoid copy & paste, but since the original post seems not to have been clear enough, here's a selection from Coding Horror as linked above:
Where appropriate, I flatten that arrow code by doing the following:
Replace conditions with guard clauses. This code..
if (SomeNecessaryCondition) {
//function body code
}
.. works better as a guard clause:
if (!SomeNecessaryCondition)
{
throw new RequiredConditionMissingException;
}
//function body code
(merk op dat er ook andere technieken worden vermeld, maar ik denk dat deze eerste voorlopig volstaat)
Op deze manier leidt elke extra controle niet tot een andere genest als - als een controle mislukt, de methode aanroep mislukt. Dit kan ook worden gedaan zonder een uitzondering te werpen door button1_Click een functie te laten gebruiken die een bool teruggeeft (true voor succes, false voor fout) en onmiddellijk false retourneert bij een mislukte voorwaarde:
private void button1_Click(object sender, RoutedEventArgs e)
{
if (AllSystemsGo())
{
DoOpenDashboard();
}
}
private bool AllSystemsGo()
{
if (!Login("johndoe","password"))
return false;
if (checkForSomethingEvil("johndoe"))
return false;
if (!checkForSomethingImportant())
return false;
return true;
}