Moin zusammen,
stellt euch Folgendes vor:
Irgendein Programm, das irgendwelche Textdateien in einer Endlosschleife verarbeitet, lässt sich über irgendeine Konfigurationsdatei skalieren, innerhalb derer es die Möglichkeit gibt irgendwelche Plugins ein- bzw. abzuschalten, also sowas wie
Nehmen wir an an einer Stelle im Code (an einer einzigen Stelle) kommt eine solche Erweiterung zum Einsatz. Extended-logging könnte beispielsweise ein Timestamp vor jede verarbeitete Zeile in einer Ausgabedatei klatschen.
Nun könnte man das auf die Schnelle so implementieren:
Das Problem hierbei ist, dass der Code sich direkt oder indirekt (was natürlich übersichtlicher wäre) im Rumpf einer endlosen Schleife befände. Hier immer und immer wieder einen initialen Wert zu checken ist suboptimal, vor allem, wenn es mehrere dieser Extensions gibt.
Man könnte auch unterschiedliche Klassen schreiben, die ein Plugin verwenden oder eben nicht. Möglich, aber unsinnig, da die meisten Dinge nur minimale Änderungen bewirken, außerdem, was ist mit verschiedenen Wahlmöglichkeiten bei vielen Plugins, jede Kombination bedenken? Schwachsinn.
Wie sähe es aus jedes Plugin als Exception zu behandeln? Ne ziemliche Zweckentfremdung...
Zum einen bin ich nicht sicher, wie try-catch intern arbeitet, wer weiß, vielleicht ist es langsamer als if-else (Kann mich jemand aufklären?), zum anderen hab ich damit immernoch den Fall, dass wenn das Plugin aktiviert ist, andauernd geworfen und gefangen wird, was ja auch keine Lösung sein kann.
Gibt es für sowas best practices?
EDIT:
Die Frage nach den Interna von try-catch, bezieht sich nur af try, nicht auf catch. Wie catch abläuft weiß ich ungefähr.
stellt euch Folgendes vor:
Irgendein Programm, das irgendwelche Textdateien in einer Endlosschleife verarbeitet, lässt sich über irgendeine Konfigurationsdatei skalieren, innerhalb derer es die Möglichkeit gibt irgendwelche Plugins ein- bzw. abzuschalten, also sowas wie
Code:
extended-logging = enabled
Nehmen wir an an einer Stelle im Code (an einer einzigen Stelle) kommt eine solche Erweiterung zum Einsatz. Extended-logging könnte beispielsweise ein Timestamp vor jede verarbeitete Zeile in einer Ausgabedatei klatschen.
Nun könnte man das auf die Schnelle so implementieren:
Java:
// ...
if (extended-logging)
{
//..mach irgendwas
}
Das Problem hierbei ist, dass der Code sich direkt oder indirekt (was natürlich übersichtlicher wäre) im Rumpf einer endlosen Schleife befände. Hier immer und immer wieder einen initialen Wert zu checken ist suboptimal, vor allem, wenn es mehrere dieser Extensions gibt.
Man könnte auch unterschiedliche Klassen schreiben, die ein Plugin verwenden oder eben nicht. Möglich, aber unsinnig, da die meisten Dinge nur minimale Änderungen bewirken, außerdem, was ist mit verschiedenen Wahlmöglichkeiten bei vielen Plugins, jede Kombination bedenken? Schwachsinn.
Wie sähe es aus jedes Plugin als Exception zu behandeln? Ne ziemliche Zweckentfremdung...
Java:
Try
{
// Der Standardvorgang
}
catch (ExtendedLoggingException exLogEx)
{
// Mach was schnittiges
}
Zum einen bin ich nicht sicher, wie try-catch intern arbeitet, wer weiß, vielleicht ist es langsamer als if-else (Kann mich jemand aufklären?), zum anderen hab ich damit immernoch den Fall, dass wenn das Plugin aktiviert ist, andauernd geworfen und gefangen wird, was ja auch keine Lösung sein kann.
Gibt es für sowas best practices?
EDIT:
Die Frage nach den Interna von try-catch, bezieht sich nur af try, nicht auf catch. Wie catch abläuft weiß ich ungefähr.
Zuletzt bearbeitet: