C# auslagern?

9 Antworten

Wenn du nicht in ganzen, verständlichen Sätzen beschreiben kannst, was du vorhast und wo dein genaues Problem liegt, kann man dir kaum helfen.

Aufgrund deines bisher geposteten Inhalts könnte ich aufgrund des CSS-Code lediglich mutmaßen, dass du mit ASP.NET und C# Rechner für Zins, Noten und BMI auf einer Webseite umsetzen möchtest. Die verwendete MessageBox hingegen widerlegt die Annahme für ASP jedoch wieder.

Mit Visual Basic hat dies jedenfalls erst einmal gar nichts zu tun. Visual Basic ist eine andere Programmiersprache, mehr nicht.

Quellcode wird in der Regel in verschiedenen Code-Blöcken aufgeteilt / ausgelagert. Funktionsblöcke beinhalten Kontrollblöcke (if, switch-case, usw.), Funktionen selbst werden wiederum in Klassen gruppiert. Klassen lagert man in einzelne Dateien aus und mehrere Dateien / Klassen werden durch Namespaces gruppiert.

Nun gruppiert man den Code kontextbezogen. Angenommen, du möchtest ein Auto programmieren, dann werden seine jeweiligen Komponenten und Funktionen aufgeteilt. Das Autoradio bspw. ist eine eigene Komponente für sich  - vielleicht eine Klasse, die mit ihren Methoden definiert, welche Features das Radio beherrscht.

Bei einem Rechnerprogramm würde ich sämtliche Rechenoperationen in eine eigene Klasse Rechner verschieben. Bsp.:

public class Rechner() {
  public int getSum(int a, int b){
    return a + b;
  }

public int getProduct(int a, int b){ return a * b; } }

Von diese Klasse kann später von außen eine Instanz erzeugt werden, die die implementierten Methoden zur Verfügung stellt:

Rechner rechner = new Rechner();
int sum = rechner.getSum(inputA, inputB);

So wird Code, der an dieser Stelle hätte auch stehen können, in eine neue Datei ausgelagert.

Wenn ich nun einmal über deinen Code hinweg scrolle, fällt mir auf, dass du bereits bezüglich deiner Formatierung einiges ändern könntest.

  • Verwende aussagekräftige Bezeichner für deine Variablen und Methoden, lasse die ungarische Notation (z.B. str als Präfix) weg. In einer Sprache, die explizites Typecasting fordert, ist es nicht notwendig, die Bezeichner mit Typinformationen auszustatten.
  • Verwende ruhig die Alias, die C# zur Verfügung stellt (bspw. short statt Int16).
  • Bei einer Konkatenation eines primitiven Datentyps mit einem String ist Convert.ToString nicht vonnöten.

Switch Case:

string strAusgabe = "";
double dblEingabe1 = 0;
double dblEingabe2 = 0;

if (Double.TryParse(strEingabe1, out dblEingabe1)==false)
{
strAusgabe = "Fehler bei Eingabe 1";
return strAusgabe;
}

if (Double.TryParse(strEingabe2, out dblEingabe2)==false)
{
strAusgabe += "Fehler bei Eingabe 2";
return strAusgabe;
}

switch (strOp)
{
case "+":
strAusgabe = Convert.ToString(dblEingabe1 + dblEingabe2);
break;
case "*":
strAusgabe = Convert.ToString(dblEingabe1 * dblEingabe2);
break;
case "-":
strAusgabe = Convert.ToString(dblEingabe1 - dblEingabe2);
break;
case "/":
strAusgabe = Convert.ToString(dblEingabe1 / dblEingabe2);
break;
default:
strAusgabe = "Operatorfehler";
break;
}

return strAusgabe;

BMI:

double dblEingabeGewicht = 0;
double dblEingabeGroesse = 0;
double dblAusgabeBMI = 0;

if (Double.TryParse(EingabeGroesse.Text, out dblEingabeGroesse) == false)
{ EingabeGroesse.Focus();
EingabeGroesse.Text = "";
AusgabeBMI.Text = "Bitte Grösse in Meter eingeben!";
return;
}

if (Double.TryParse(EingabeGewicht.Text, out dblEingabeGewicht) == false)
{
EingabeGewicht.Focus();
EingabeGewicht.Text = "";
AusgabeBMI.Text = "Bitte Grösse in Meter eingeben!";
return;
}

dblAusgabeBMI = dblEingabeGewicht / (dblEingabeGroesse * dblEingabeGroesse);

AusgabeBMI.Text = "Der berechnete BMI aus deiner Grösse " + Convert.ToString(dblEingabeGroesse) + "M im Verhältniss zu deinem Gewicht " + Convert.ToString(dblEingabeGewicht) + "kg ist " + Convert.ToString(dblAusgabeBMI);

EingabeGroesse.Text = "";
EingabeGewicht.Text = "";

Was möchtest Du wissen?