(a) Die Tatsache, dass diese Methoden void zurückgeben bedeutet, dass ihr Ergebnis irrelevant ist, ist uns egal. Aber Sie müssen das Ergebnis testen und müssen daher das Ergebnis wissen. Das ist also eine riesige rote Flagge, dass der Code nicht fest ist und Refactoring benötigt.
(b) Hey, könnte dies Legacy-Code sein, der unmöglich zu ändern ist, also wenn Ihre Methoden wirklich Leerstellen sind, dann könnte das folgende Refactoring helfen, wenn Sie dann bestätigen, dass myNewMethod2 und doSomething2/3 einmal aufgerufen werden/eine weitere Strategie für Hohlräume, die ich bin kein großer Fan von, lässt aber Ihren ursprünglichen Code weitgehend intakt nicht bei allen depedndant von den Bedingungen (zB über MOQ Unit Testing Framework)
public myNewMethod()
{
bool cnd1 = (condition1);
bool cnd2 = (condition2);
if(cnd1)
{
myNewMethod2(cnd2);
}
}
public myNewMethod2(bool cnd2)
{
doSomething1();
myNewMthod3(cnd2);
}
public myNewMethod3(bool cnd2)
{
if (cnd2)
{
doSomething2();
}
else
{
doSomething3();
}
}
(c) genannt wird, ist dies:
public void myMethod() {
try
{
if (condition1) {
doSomething1();
if (condition2) {
doSomething2();
} else {
doSomething3();
}
}
catch(Exception ex)
{
//
}
}
Ihr Testgerät kann dann behaupten, dass keine Ausnahme ausgelöst wird. Nicht ideal, aber wenn Bedürfnisse müssen ...